Skip to content
Browse files

Setting up rake/albacore build

  • Loading branch information...
1 parent 73b3cd4 commit c4c19d087939969bf823fc14b9e264a62bbc7f06 @codereflection committed Feb 6, 2011
Showing with 19,767 additions and 0 deletions.
  1. +19 −0 build.cmd
  2. +2 −0 build.sh
  3. +39 −0 rakefile.rb
  4. +10 −0 src/ProjectVersion.cs
  5. BIN tools/NCover/CoverLib.dll
  6. +339 −0 tools/NCover/Coverage.xsl
  7. BIN tools/NCover/MSVCP71.dll
  8. BIN tools/NCover/MSVCP80.dll
  9. BIN tools/NCover/MSVCR71.dll
  10. BIN tools/NCover/MSVCR80.dll
  11. BIN tools/NCover/NCover.Console.exe
  12. +6 −0 tools/NCover/NCover.Console.exe.config
  13. BIN tools/NCover/NCover.Framework.dll
  14. +212 −0 tools/NCover/NCoverFAQ.html
  15. BIN tools/NCover/ncover.exe
  16. +287 −0 tools/NCoverExplorer/ActiproEULA.html
  17. BIN tools/NCoverExplorer/ActiproSoftware.Shared.Net11.dll
  18. BIN tools/NCoverExplorer/ActiproSoftware.SyntaxEditor.Net11.dll
  19. BIN tools/NCoverExplorer/ActiproSoftware.WinUICore.Net11.dll
  20. BIN tools/NCoverExplorer/CommandBars.dll
  21. +123 −0 tools/NCoverExplorer/ConsoleConfig.xsd
  22. +94 −0 tools/NCoverExplorer/ConsoleExample.config
  23. +468 −0 tools/NCoverExplorer/CoverageReport.xsl
  24. +334 −0 tools/NCoverExplorer/LicencePersonal.rtf
  25. BIN tools/NCoverExplorer/NCoverExplorer.Console.exe
  26. BIN tools/NCoverExplorer/NCoverExplorer.Core.dll
  27. BIN tools/NCoverExplorer/NCoverExplorer.NCoverRunner.dll
  28. BIN tools/NCoverExplorer/NCoverExplorer.WinForms.dll
  29. BIN tools/NCoverExplorer/NCoverExplorer.exe
  30. +8 −0 tools/NCoverExplorer/NCoverExplorer.exe.config
  31. +278 −0 tools/NCoverExplorer/NCoverExplorerFAQ.html
  32. +874 −0 tools/NCoverExplorer/NCoverExplorerReleaseNotes.html
  33. BIN tools/Rake/bin/msvcrt-ruby18.dll
  34. +19 −0 tools/Rake/bin/rake
  35. BIN tools/Rake/bin/ruby.exe
  36. +1,781 −0 tools/Rake/lib/ruby/1.8/date.rb
  37. +1,190 −0 tools/Rake/lib/ruby/1.8/date/format.rb
  38. +337 −0 tools/Rake/lib/ruby/1.8/delegate.rb
  39. +862 −0 tools/Rake/lib/ruby/1.8/erb.rb
  40. +1,593 −0 tools/Rake/lib/ruby/1.8/fileutils.rb
  41. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/Win32API.so
  42. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/bigdecimal.so
  43. +144 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/config.h
  44. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/curses.so
  45. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/dbm.so
  46. +273 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/defines.h
  47. +32 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/digest.h
  48. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/digest.so
  49. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/digest/bubblebabble.so
  50. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/digest/md5.so
  51. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/digest/rmd160.so
  52. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/digest/sha1.so
  53. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/digest/sha2.so
  54. +313 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/dl.h
  55. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/dl.so
  56. +16 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/dlconfig.h
  57. +40 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/dln.h
  58. +60 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/env.h
  59. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/etc.so
  60. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/fcntl.so
  61. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/gdbm.so
  62. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/iconv.so
  63. +533 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/intern.h
  64. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/io/wait.so
  65. +149 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/missing.h
  66. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/nkf.so
  67. +488 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/node.h
  68. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/openssl.so
  69. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/racc/cparse.so
  70. +184 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/rbconfig.rb
  71. +43 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/re.h
  72. +221 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/regex.h
  73. +796 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/ruby.h
  74. +91 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/rubyio.h
  75. +105 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/rubysig.h
  76. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/sdbm.so
  77. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/socket.so
  78. +72 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/st.h
  79. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/stringio.so
  80. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/strscan.so
  81. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/syck.so
  82. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/thread.so
  83. +67 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/util.h
  84. +29 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/version.h
  85. +626 −0 tools/Rake/lib/ruby/1.8/i386-mingw32/win32/win32.h
  86. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/win32ole.so
  87. BIN tools/Rake/lib/ruby/1.8/i386-mingw32/zlib.so
  88. +703 −0 tools/Rake/lib/ruby/1.8/logger.rb
  89. +356 −0 tools/Rake/lib/ruby/1.8/monitor.rb
  90. +1,796 −0 tools/Rake/lib/ruby/1.8/optparse.rb
  91. +149 −0 tools/Rake/lib/ruby/1.8/ostruct.rb
  92. +564 −0 tools/Rake/lib/ruby/1.8/rational.rb
  93. +359 −0 tools/Rake/lib/ruby/1.8/singleton.rb
  94. +209 −0 tools/Rake/lib/ruby/1.8/tempfile.rb
  95. +137 −0 tools/Rake/lib/ruby/1.8/tmpdir.rb
  96. +831 −0 tools/Rake/lib/ruby/1.8/win32/registry.rb
  97. +366 −0 tools/Rake/lib/ruby/1.8/win32/resolv.rb
  98. +440 −0 tools/Rake/lib/ruby/1.8/yaml.rb
  99. +247 −0 tools/Rake/lib/ruby/1.8/yaml/baseemitter.rb
  100. +216 −0 tools/Rake/lib/ruby/1.8/yaml/basenode.rb
  101. +45 −0 tools/Rake/lib/ruby/1.8/yaml/constants.rb
  102. +111 −0 tools/Rake/lib/ruby/1.8/yaml/dbm.rb
  103. +33 −0 tools/Rake/lib/ruby/1.8/yaml/encoding.rb
  104. +34 −0 tools/Rake/lib/ruby/1.8/yaml/error.rb
  105. +14 −0 tools/Rake/lib/ruby/1.8/yaml/loader.rb
Sorry, we could not display the entire diff because too many files (2,100) changed.
View
19 build.cmd
@@ -0,0 +1,19 @@
+@echo off
+
+:Build
+cls
+"tools\Rake\bin\ruby.exe" "tools\Rake\bin\rake" %*
+
+rem Bail if we're running a TeamCity build.
+if defined TEAMCITY_PROJECT_NAME goto Quit
+
+rem Loop the build script.
+set CHOICE=nothing
+echo (Q)uit, (Enter) runs the build again
+set /P CHOICE=
+if /i "%CHOICE%"=="Q" goto :Quit
+
+GOTO Build
+
+:Quit
+exit /b %errorlevel%
View
2 build.sh
@@ -0,0 +1,2 @@
+clear
+"tools\Rake\bin\ruby.exe" "tools\Rake\bin\rake"
View
39 rakefile.rb
@@ -0,0 +1,39 @@
+#rakefile.rb
+
+require 'rake'
+require 'albacore'
+
+task :default => [:full]
+
+
+task :full => [:clean,:assemblyInfo,:build,:specifications]
+
+task :clean do
+ FileUtils.rm_rf 'build'
+ FileUtils.rm_rf 'publish'
+end
+
+
+msbuild :build do |msb|
+ msb.properties :configuration => :AutomatedRelease
+ msb.solution = "src/Giles.sln"
+end
+
+
+mspec :specifications do |mspec|
+ mspec.command = "lib/mspec/mspec.exe"
+ mspec.assemblies = "build/Giles.Specs.dll"
+ mspec.html_output = "report/Specs"
+end
+
+
+desc "Assembly Version Info Generator"
+assemblyinfo :assemblyInfo do |asm|
+ asm.output_file ="src/ProjectVersion.cs"
+ asm.title = "Giles, Rupert Giles, at your service!"
+ asm.company_name = "codereflection"
+ asm.product_name = "Giles - auto test runner"
+ asm.version = "0.0.1.0"
+ asm.file_version = "0.0.1.0"
+ asm.copyright = "Copyright (c)2011 Jeff 'codereflection' Schumacher"
+end
View
10 src/ProjectVersion.cs
@@ -0,0 +1,10 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("Giles, Rupert Giles, at your service!")]
+[assembly: AssemblyCompany("codereflection")]
+[assembly: AssemblyProduct("Giles - auto test runner")]
+[assembly: AssemblyCopyright("Copyright (c)2011 Jeff 'codreflection' Schumacher")]
+[assembly: AssemblyVersion("0.0.1.0")]
+[assembly: AssemblyFileVersion("0.0.1.0")]
+
View
BIN tools/NCover/CoverLib.dll
Binary file not shown.
View
339 tools/NCover/Coverage.xsl
@@ -0,0 +1,339 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
+ <!-- saved from url=(0022)http://www.ncover.org/ -->
+ <!-- created by Yves Lorphelin, largely inspired by the nunitsumary.xsl (see nantcontrib.sourceforge.net)-->
+ <xsl:template match="coverage">
+ <html>
+ <head>
+ <title>NCover Code Coverage Report</title>
+ <style>
+ BODY {
+ font: small verdana, arial, helvetica;
+ color:#000000;
+ }
+
+ P {
+ line-height:1.5em;
+ margin-top:0.5em; margin-bottom:1.0em;
+ }
+ H1 {
+ MARGIN: 0px 0px 5px;
+ FONT: bold larger arial, verdana, helvetica;
+
+ }
+ H2 {
+ MARGIN-TOP: 1em; MARGIN-BOTTOM: 0.5em;
+ FONT: larger verdana,arial,helvetica
+ }
+ H3 {
+ MARGIN-BOTTOM: 0.5em; FONT: bold 13px verdana,arial,helvetica
+ }
+ H4 {
+ MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica
+ }
+ H5 {
+ MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica
+ }
+ H6 {
+ MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica
+ }
+ .notVisited { background:red; }
+ .excluded { background: skyblue; }
+ .visited { background: #90ee90; }
+ .title { font-size: 12px; font-weight: bold; }
+ .assembly { font-size: normal; font-weight: bold; font-size: 11px}
+ .class {font-size:normal; cursor: hand; color: #444444; font-size: 11px}
+ .module { color: navy; font-size: 12px; }
+ .method {cursor: hand; color: ; font-size: 10px; font-weight: bold; }
+ .subtitle { color: black; font-size: 10px; font-weight: bold; }
+ .hdrcell {font-size:9px; background-color: #DDEEFF; }
+ .datacell {font-size:9px; background-color: #FFFFEE; text-align: right; }
+ .hldatacell {font-size:9px; background-color: #FFCCCC; text-align: right; }
+ .exdatacell {font-size:9px; background-color: #DDEEFF; text-align: right; }
+ .detailPercent { font-size: 9px; font-weight: bold; padding-top: 1px; padding-bottom: 1px; padding-left: 3px; padding-right: 3px;}
+ </style>
+ <script language="JavaScript"><![CDATA[
+ function toggle (field)
+ { field.style.display = (field.style.display == "block") ? "none" : "block"; }
+
+ function SwitchAll(how)
+ { var len = document.all.length-1;
+ for(i=0;i!=len;i++) {
+ var block = document.all[i];
+ if (block != null && block.id != '')
+ { block.style.display=how;}
+ }
+ }
+
+
+ function ExpandAll()
+ {SwitchAll('block');}
+
+ function CollapseAll()
+ {SwitchAll('none');}
+ ]]></script>
+ </head>
+ <body>
+ <a name="#top"></a>
+ <xsl:call-template name="header" />
+ <xsl:call-template name="ModuleSummary" />
+ <xsl:call-template name="module" />
+ <xsl:call-template name="footer" />
+ <script language="JavaScript">CollapseAll();</script>
+ </body>
+ </html>
+ </xsl:template>
+ <xsl:template name="module">
+ <xsl:for-each select="//module">
+ <xsl:sort select="@assembly" />
+ <xsl:variable name="module" select="./@assembly" />
+ <div class="assembly">
+ <a name="#{generate-id($module)}">Module
+ <xsl:value-of select="$module" />
+ </a>
+ </div>
+ <xsl:for-each select="./method[not(./@class = preceding-sibling::method/@class)]">
+ <xsl:sort select="@class" />
+ <xsl:sort select="@name" />
+ <xsl:call-template name="ClassSummary">
+ <xsl:with-param name="module" select="$module" />
+ <xsl:with-param name="class" select="./@class" />
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:for-each>
+ <xsl:variable name="totalMod" select="count(./method/seqpnt[@excluded='false'])" />
+ <xsl:variable name="notvisitedMod" select="count( ./method/seqpnt[ @visitcount='0'][@excluded='false'] ) div $totalMod * 100 " />
+ <xsl:variable name="visitedMod" select="count(./method/seqpnt[not(@visitcount='0')] ) div $totalMod * 100" />
+ </xsl:template>
+ <xsl:template name="Methods">
+ <xsl:param name="module" />
+ <xsl:param name="class" />
+ <xsl:for-each select="//method[(@class = $class) and (parent::module/@assembly=$module)]">
+ <xsl:sort select="@name" />
+ <xsl:variable name="total" select="count(./seqpnt[@excluded='false'])" />
+ <xsl:variable name="notvisited" select="count(./seqpnt[@visitcount='0'][@excluded='false'] ) " />
+ <xsl:variable name="visited" select="count(./seqpnt[not(@visitcount='0')])" />
+ <xsl:variable name="methid" select="generate-id(.)" />
+ <table cellpadding="3" cellspacing="0" width="90%">
+ <tr>
+ <td width="45%" class='method'>
+ <xsl:attribute name="onclick">javascript:toggle(
+ <xsl:value-of select="$methid" />)
+ </xsl:attribute>
+ <xsl:value-of select="@name" />
+ </td>
+ <td width="55%">
+ <xsl:call-template name="detailPercent">
+ <xsl:with-param name="visited" select="$visited" />
+ <xsl:with-param name="notVisited" select="$notvisited" />
+ <xsl:with-param name="total" select="$total" />
+ </xsl:call-template>
+ </td>
+ </tr>
+ </table>
+ <xsl:call-template name="seqpnt">
+ <xsl:with-param name="module" select="$module" />
+ <xsl:with-param name="class" select="$class" />
+ <xsl:with-param name="id" select="$methid" />
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:template>
+ <xsl:template name="seqpnt">
+ <xsl:param name="module" />
+ <xsl:param name="class" />
+ <xsl:param name="id" />
+ <table cellpadding="3" cellspacing="0" border='1' width="90%" bordercolor="black" style="display: block;">
+ <xsl:attribute name="id">
+ <xsl:value-of select="$id" />
+ </xsl:attribute>
+ <tr>
+ <td class="hdrcell">Visits</td>
+ <td class="hdrcell">Line</td>
+ <td class="hdrcell">End</td>
+ <td class="hdrcell">Column</td>
+ <td class="hdrcell">End</td>
+ <td class="hdrcell">Document</td>
+ </tr>
+ <xsl:for-each select="./seqpnt">
+ <xsl:sort select="@line" />
+ <tr>
+ <td class="datacell">
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="@excluded = 'true'">exdatacell</xsl:when>
+ <xsl:when test="@visitcount = 0">hldatacell</xsl:when>
+ <xsl:otherwise>datacell</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="@excluded = 'true'">---</xsl:when>
+ <xsl:otherwise><xsl:value-of select="@visitcount" /></xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td class="datacell">
+ <xsl:value-of select="@line" />
+ </td>
+ <td class="datacell">
+ <xsl:value-of select="@endline" />
+ </td>
+ <td class="datacell">
+ <xsl:value-of select="@column" />
+ </td>
+ <td class="datacell">
+ <xsl:value-of select="@endcolumn" />
+ </td>
+ <td class="datacell">
+ <xsl:value-of select="@document" />
+ </td>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </xsl:template>
+ <!-- Class Summary -->
+ <xsl:template name="ClassSummary">
+ <xsl:param name="module" />
+ <xsl:param name="class" />
+ <xsl:variable name="total" select="count(//seqpnt[(parent::method/parent::module/@assembly=$module) and (parent::method/@class=$class) and (@excluded='false') ])" />
+ <xsl:variable name="notvisited" select="count(//seqpnt[(parent::method/parent::module/@assembly=$module)and (parent::method/@class=$class) and (@visitcount='0') and (@excluded='false')] )" />
+ <xsl:variable name="visited" select="count(//seqpnt[(parent::method/parent::module/@assembly=$module) and (parent::method/@class=$class) and (not(@visitcount='0'))] )" />
+ <xsl:variable name="newid" select="concat (generate-id(), 'class')" />
+ <table width='90%'>
+ <tr>
+ <td width="40%" class="class">
+ <xsl:attribute name="onclick">javascript:toggle(
+ <xsl:value-of select="$newid" />)
+ </xsl:attribute>
+ <xsl:value-of select="$class" />
+ </td>
+ <td width="60%">
+ <xsl:call-template name="detailPercent">
+ <xsl:with-param name="visited" select="$visited" />
+ <xsl:with-param name="notVisited" select="$notvisited" />
+ <xsl:with-param name="total" select="$total" />
+ </xsl:call-template>
+ </td>
+ </tr>
+ <tr>
+ <table style="display: block;" width="100%">
+ <tr>
+ <td>
+ <xsl:attribute name="id">
+ <xsl:value-of select="$newid" />
+ </xsl:attribute>
+ <xsl:call-template name="Methods">
+ <xsl:with-param name="module" select="$module" />
+ <xsl:with-param name="class" select="$class" />
+ </xsl:call-template>
+ </td>
+ </tr>
+ </table>
+ </tr>
+ </table>
+ <hr size="1" width='90%' align='left' style=" border-bottom: 1px dotted #999;" />
+ </xsl:template>
+ <xsl:template name="ClassSummaryDetail">
+ <xsl:param name="module" />
+ <xsl:variable name="total" select="count(./method/seqpnt[ @excluded='false' ])" />
+ <xsl:variable name="notVisited" select="count( ./method/seqpnt[ @visitcount='0'][ @excluded='false' ] )" />
+ <xsl:variable name="visited" select="count(./method/seqpnt[not(@visitcount='0')] )" />
+ <td width="35%">
+ <div class="assembly">
+ <a href="#{generate-id($module)}">
+ <xsl:value-of select="$module" />
+ </a>
+ </div>
+ </td>
+ <td width="65%">
+ <xsl:call-template name="detailPercent">
+ <xsl:with-param name="visited" select="$visited" />
+ <xsl:with-param name="notVisited" select="$notVisited" />
+ <xsl:with-param name="total" select="$total" />
+ </xsl:call-template>
+ </td>
+ </xsl:template>
+ <!-- Modules Summary -->
+ <xsl:template name="ModuleSummary">
+ <H2>Modules summary</H2>
+ <xsl:for-each select="//module">
+ <xsl:sort select="@assembly" />
+ <table width='90%'>
+ <tr>
+ <xsl:call-template name="ModuleSummaryDetail">
+ <xsl:with-param name="module" select="./@assembly" />
+ </xsl:call-template>
+ </tr>
+ </table>
+ </xsl:for-each>
+ <hr size="1" />
+ </xsl:template>
+ <xsl:template name="ModuleSummaryDetail">
+ <xsl:param name="module" />
+ <xsl:variable name="total" select="count(./method/seqpnt[@excluded='false'])" />
+ <xsl:variable name="notVisited" select="count( ./method/seqpnt[ @visitcount='0' ][ @excluded='false' ] )" />
+ <xsl:variable name="visited" select="count(./method/seqpnt[not(@visitcount='0')] )" />
+ <td width="30%">
+ <div class="assembly">
+ <a href="#{generate-id($module)}">
+ <xsl:value-of select="$module" />
+ </a>
+ </div>
+ </td>
+ <td width="70%">
+ <xsl:call-template name="detailPercent">
+ <xsl:with-param name="visited" select="$visited" />
+ <xsl:with-param name="notVisited" select="$notVisited" />
+ <xsl:with-param name="total" select="$total" />
+ </xsl:call-template>
+ </td>
+ </xsl:template>
+ <!-- General Header -->
+ <xsl:template name="header">
+ <h1>
+ <b>NCover</b> Code Coverage Report
+ </h1>
+ <table>
+ <tr>
+ <td class="class">
+ <a onClick="ExpandAll();">Expand</a>
+ </td>
+ <td> | </td>
+ <td class="class">
+ <a onClick="CollapseAll();">Collapse</a>
+ </td>
+ </tr>
+ </table>
+ <hr size="1" />
+ </xsl:template>
+ <xsl:template name="footer">
+ <hr size="1" />
+ <a class="detailPercent" href="#{top}">Top</a>
+ </xsl:template>
+ <!-- draw % table-->
+ <xsl:template name="detailPercent">
+ <xsl:param name="visited" />
+ <xsl:param name="notVisited" />
+ <xsl:param name="total" />
+ <table width="100%" class="detailPercent">
+ <tr>
+ <xsl:if test="($notVisited=0) and ($visited=0)">
+ <td class="excluded" width="100%">Excluded</td>
+ </xsl:if>
+ <xsl:if test="not($notVisited=0)">
+ <td class="notVisited">
+ <xsl:attribute name="width">
+ <xsl:value-of select="concat($notVisited div $total * 100,'%')" />
+ </xsl:attribute>
+ <xsl:value-of select="concat (format-number($notVisited div $total * 100,'#.##'),'%')" />
+ </td>
+ </xsl:if>
+ <xsl:if test="not ($visited=0)">
+ <td class="visited">
+ <xsl:attribute name="width">
+ <xsl:value-of select="concat($visited div $total * 100,'%')" />
+ </xsl:attribute>
+ <xsl:value-of select="concat (format-number($visited div $total * 100,'#.##'), '%')" />
+ </td>
+ </xsl:if>
+ </tr>
+ </table>
+ </xsl:template>
+</xsl:stylesheet>
View
BIN tools/NCover/MSVCP71.dll
Binary file not shown.
View
BIN tools/NCover/MSVCP80.dll
Binary file not shown.
View
BIN tools/NCover/MSVCR71.dll
Binary file not shown.
View
BIN tools/NCover/MSVCR80.dll
Binary file not shown.
View
BIN tools/NCover/NCover.Console.exe
Binary file not shown.
View
6 tools/NCover/NCover.Console.exe.config
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+ <startup>
+ <supportedRuntime version="v2.0.50727"/>
+ </startup>
+</configuration>
View
BIN tools/NCover/NCover.Framework.dll
Binary file not shown.
View
212 tools/NCover/NCoverFAQ.html
@@ -0,0 +1,212 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <head>
+ <!-- $Id: NCoverFAQ.html 91 2006-01-17 23:51:02Z NCover $ -->
+ <title></title>
+ <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
+ <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
+ <style> body { font-size: 10pt; font-family: Verdana; }
+ p.title { font-size: 20pt; font-weight: bold; }
+ .subtitle { color: maroon; }
+ p.question { font-weight: bold; }
+ pre { font-size: 10pt; font-family: Courier; }
+ pre.usage { background-color: #F0F0F0; }
+ .quote { background-color: #F0F0F0; margin-left: 36pt;}
+ .method { color: maroon; font-size: 10pt; font-weight: bold; }
+ .hdrcell { background-color: #DDEEFF; font-size: 10pt; }
+ .datacell { background-color: #FFFFEE; text-align: right; font-size: 10pt; }
+ .hldatacell { background-color: #FFCCCC; text-align: right; font-size: 10pt; }
+ .box { border: 1px solid; padding: 10px; }
+ </style>
+ </head>
+ <body>
+ <P class="title">NCover FAQ</P>
+ <P>If you have questions that this document does not address, contact <A href="mailto:peter@waldschmidt.com">
+ Peter Waldschmidt</A>.</P>
+ <P class="question">1. What is code coverage analysis?</P>
+ <P class="answer">A code coverage analyzer monitors your code at runtime and
+ records information about which lines of code were executed. NCover shows each
+ sequence point in your application along with the number of times that point
+ was executed. Sequence points are generated by the compiler and stored in the
+ debug information (.pdb) files. A sequence point basically corresponds to a
+ single program statement (often a line of code) in your high-level language.</P>
+ <P class="question">2. Why would I want to do code coverage analysis?</P>
+ <P class="answer">Unit test suites are often used as a quality tool during the
+ development process to keep the codebase stable as it changes and expands.
+ Tools such as <A href="http://nunit.org/">NUnit</A> are often used to run and
+ report on the test suites. However, when implementing unit testing in your
+ build process, you have no way of knowing how much of your code the unit tests
+ are actually testing. This is where code coverage comes in. You can run NUnit
+ within NCover and use the code coverage report to determine which code was not
+ tested by that particular test suite.</P>
+ <P class="question">3. What versions of the CLR does NCover support?</P>
+ <P class="answer">At this time, NCover has only been tested on the .NET framework
+ version 1.1.4322.</P>
+ <P class="question">4. What is the command line syntax for NCover?</P>
+ <P class="answer">Here is the usage info from the NCover command line:</P>
+ <pre class="usage">Usage: NCover /c &lt;command line&gt; [/a &lt;assembly list&gt;]
+
+/c Command line to launch profiled application.
+/a List of assemblies to profile. i.e. "MyAssembly1;MyAssembly2"
+/v Enable verbose logging (show instrumented code)
+ </pre>
+ <UL>
+ <LI>
+ The /c command-line argument is required and specifies the command-line of the
+ .NET application you want to analyze.
+ <li>
+ The /a command-line argument specifies the assemblies that you want to analyze.
+ NCover can only analyze assemblies that have .pdb files included with them. If
+ you do not specify the /a argument, NCover will attempt to analyze every loaded
+ assembly that has debug information available.
+ <li>
+ The /v command-line argument makes the profiler emit all the original IL and
+ modified IL instructions to the coverage log. This is useful for debugging
+ purposes. Beware that this can make your coverage log file very large!
+ </li>
+ </UL>
+ <P class="question">5. Does NCover required a special compilation step for my code?</P>
+ <P class="answer">No. Some code coverage tools change your source code and force
+ you to recompile it into a special build.&nbsp; NCover is designed to&nbsp;work
+ on shipping code.&nbsp; NCover uses the .NET Framework profiling API to monitor
+ your code. It does require build symbols, but can be run on release code
+ without any modifications.</P>
+ <P class="question">6. How does NCover work?</P>
+ <P class="answer">NCover uses the .NET Framework profiler API to monitor an
+ application's execution. When a method is loaded by the CLR, NCover retrieves
+ the IL and replaces it with instrumented IL code.&nbsp; NCover does not change
+ your original IL code, it simply inserts new code to update&nbsp;a visit
+ counter at each sequence point.&nbsp; After&nbsp;the .NET&nbsp;process
+ shuts&nbsp;down, the profiler outputs statistics to a file in the current
+ directory.
+ </P>
+ <P class="question">7. How do I analyze an ASP.NET application with NCover?</P>
+ <P class="answer"><STRONG>xmspc</STRONG> got this to work on ASP.NET. See his post
+ on the message board for more information. Here are the basics for getting it
+ to work on Windows XP.
+ </P>
+ <div class="quote">
+ <P class="answer">
+ 1) Ensure the NCoverLib COM component is registered (setup does this, but you
+ can manually register it with regsvr32 if you wish).
+ </P>
+ <P class="answer">
+ 2) Set the machine-wide COR profiling environment variables (or find some other
+ way to get them set in the aspnet_wp.exe's environment):
+ <BR>
+ &nbsp;&nbsp;COR_ENABLE_PROFILING=1
+ <BR>
+ &nbsp;&nbsp;COR_PROFILER=CvrLib.CoverageProfiler
+ </P>
+ <P class="answer">3) Create %windir%\System32\Coverage.log and
+ %windir%\System32\Coverage.xml and grant .\ASPNET read+write+modify permission
+ to these 2 files only.
+ </P>
+ <P class="answer">4) Force a restart of IIS so aspnet_wp.exe picks up the new
+ environment variables.&nbsp;Coverage info will be written to the System32
+ directory.
+ </P>
+ <P class="answer">All ASP.Net processes (on Windows XP for sure, don't know about
+ Windows 2003) use %windir%\System32 as their working dir, therefore if multiple
+ processes are running they will stomp over the Coverage files.
+ </P>
+ <P class="answer">...would be nice if NCover used AppDomain basedir and/or value
+ from app config file to set output file dir...
+ </P>
+ </div>
+ <P class="question">8. What is the output of NCover?</P>
+ <P class="answer">NCover writes three files to the directory after analysis
+ completes.
+ <ul>
+ <li>
+ Coverage.log - This file is a log of the events and messages from the profiler
+ during the analysis process. Most of the time, error messages are recorded in
+ this log. If you enable verbose logging, the coverage log will contain
+ disassembly of the original and instrumented IL code.
+ <li>
+ Coverage.xml - This file is the analysis output of NCover. You can see an
+ example of the output below.
+ <LI>
+ Coverage.xsl - This file is a simple XML transformation that makes the XML
+ output easily readable.
+ </LI>
+ </ul>
+ <span class="subtitle">Example XML output</span>
+ <div class="box"><pre>&lt;method class="NCoverTest.ClassLoaded" name="HasDeadCode"&gt;
+ &lt;seqpnt document="C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs"
+ column="13" line="48" endcolumn="58" endline="48" visitcount="1" /&gt;
+ &lt;seqpnt document="C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs"
+ column="13" line="49" endcolumn="22" endline="49" visitcount="1" /&gt;
+ &lt;seqpnt document="C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs"
+ column="17" line="50" endcolumn="24" endline="50" visitcount="1" /&gt;
+ &lt;seqpnt document="C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs"
+ column="13" line="51" endcolumn="48" endline="51" visitcount="0" /&gt;
+ &lt;seqpnt document="C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs"
+ column="9" line="52" endcolumn="10" endline="52" visitcount="0" /&gt;
+&lt;/method&gt;</pre>
+ </div>
+ <p></p>
+ <span class="subtitle">Example transformed output</span>
+ <div class="box">
+ <DIV class="method">NCoverTest.ClassLoaded.HasDeadCode</DIV>
+ <TABLE id="Table1" borderColor="black" cellSpacing="0" cellPadding="3" border="1">
+ <TBODY>
+ <TR>
+ <TD class="hdrcell">Visit Count</TD>
+ <TD class="hdrcell">Line</TD>
+ <TD class="hdrcell">Column</TD>
+ <TD class="hdrcell">End Line</TD>
+ <TD class="hdrcell">End Column</TD>
+ <TD class="hdrcell">Document</TD>
+ </TR>
+ <TR>
+ <TD class="datacell">1</TD>
+ <TD class="datacell">48</TD>
+ <TD class="datacell">13</TD>
+ <TD class="datacell">48</TD>
+ <TD class="datacell">58</TD>
+ <TD class="datacell">C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs</TD>
+ </TR>
+ <TR>
+ <TD class="datacell">1</TD>
+ <TD class="datacell">49</TD>
+ <TD class="datacell">13</TD>
+ <TD class="datacell">49</TD>
+ <TD class="datacell">22</TD>
+ <TD class="datacell">C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs</TD>
+ </TR>
+ <TR>
+ <TD class="datacell">1</TD>
+ <TD class="datacell">50</TD>
+ <TD class="datacell">17</TD>
+ <TD class="datacell">50</TD>
+ <TD class="datacell">24</TD>
+ <TD class="datacell">C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs</TD>
+ </TR>
+ <TR>
+ <TD class="hldatacell">0</TD>
+ <TD class="datacell">51</TD>
+ <TD class="datacell">13</TD>
+ <TD class="datacell">51</TD>
+ <TD class="datacell">48</TD>
+ <TD class="datacell">C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs</TD>
+ </TR>
+ <TR>
+ <TD class="hldatacell">0</TD>
+ <TD class="datacell">52</TD>
+ <TD class="datacell">9</TD>
+ <TD class="datacell">52</TD>
+ <TD class="datacell">10</TD>
+ <TD class="datacell">C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs</TD>
+ </TR>
+ </TBODY>
+ </TABLE>
+ </div>
+ <P></P>
+ <P class="question">9. How do you test NCover?</P>
+ <P class="answer">Unfortunately, all the original testing was done with production
+ code that cannot be published. I have started on a test suite called
+ NCoverTest. It is pretty anemic right now, but feel free to chip in and
+ contribute some tests.</P>
+ </body>
+</html>
View
BIN tools/NCover/ncover.exe
Binary file not shown.
View
287 tools/NCoverExplorer/ActiproEULA.html
@@ -0,0 +1,287 @@
+<html>
+<head>
+ <title>End-User License Agreement (EULA)</title>
+ <style>
+ BODY { font-family: Verdana, sans-serif; }
+ LI { margin-top: 10pt; }
+ </style>
+</head>
+<body>
+
+
+<h2>END-USER LICENSE AGREEMENT FOR ACTIPRO SOFTWARE LLC SOFTWARE</h2>
+
+<hr><b>
+IMPORTANT - READ CAREFULLY: This Actipro Software LLC ("Actipro") End-User License Agreement ("EULA")
+is a legal agreement between you (“Licensee”), a developer of software applications, and Actipro for the Actipro software product
+accompanying this EULA, which includes computer software and may include associated source code, media, printed materials,
+and "on-line" or electronic documentation ("SOFTWARE PRODUCT"). By installing, copying, or otherwise using the SOFTWARE PRODUCT,
+you agree to be bound by the terms of this EULA. If you do not agree to the terms of this EULA, do not install, use, distribute
+in any manner, or replicate in any manner, any part, file or portion of the SOFTWARE PRODUCT.
+</b><hr>
+
+<p>
+The SOFTWARE PRODUCT is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE PRODUCT is licensed, not sold.
+</p>
+
+<p>
+The Licensee is considered to be an authorized licensee (“Authorized”) if the Licensee has legitimately obtained a registered license for the SOFTWARE PRODUCT from Actipro or an authorized Actipro reseller.
+</p>
+
+<p>
+<b>RIGOROUS ENFORCEMENT OF INTELLECTUAL PROPERTY RIGHTS.</b>
+If the licensed right of use for this SOFTWARE PRODUCT is purchased by the Licensee with any intent to reverse engineer,
+decompile, create derivative works, and the exploitation or unauthorized transfer of, any Actipro intellectual property and
+trade secrets, to include any exposed methods or source code where provided, no licensed right of use shall exist, and any products
+created as a result shall be judged illegal by definition of all applicable law. Any sale or resale of intellectual property or
+created derivatives so obtained will be prosecuted to the fullest extent of all local, federal and international law.
+</p>
+
+<p>
+<b>GRANT OF LICENSE.</b> This EULA, if legally executed as defined herein, licenses and so grants the Licensee the following rights:
+</p>
+
+<p>
+<b>Evaluation.</b> If the downloaded SOFTWARE PRODUCT is designated as an Evaluation Release (“Evaluation Release”),
+the Licensee is granted a license for a period of only fifteen (15) days after installation of the Evaluation Release
+of the SOFTWARE PRODUCT ("Evaluation Period"). After the Evaluation Period, the Licensee must either:
+<ol>
+<li>Delete the SOFTWARE PRODUCT and all related files from ALL computers onto which it was installed or copied, or</li>
+<li>Contact Actipro or one of its authorized resellers to purchase the SOFTWARE PRODUCT.</li>
+</ol>
+</p>
+
+<p>
+The Licensee may use the Evaluation Release of the SOFTWARE PRODUCT for evaluation purposes only.
+The Licensee may not distribute ANY of the files, in any form or manner, provided with the Evaluation Release of the
+SOFTWARE PRODUCT to ANY PARTIES.
+</p>
+
+<p>
+<b>Development.</b> Actipro grants the Licensee the non-exclusive license to install and use multiple copies of the
+SOFTWARE PRODUCT or any prior version for the sole purpose of developing any number of end user applications that
+operate in conjunction with the SOFTWARE PRODUCT. If the Licensee is not Authorized, the Licensee may not use the
+SOFTWARE PRODUCT beyond the Evaluation Period.
+</p>
+
+<p>
+If the Licensee has purchased a single developer license (“Single Developer License”), the Licensee is Authorized
+to use the SOFTWARE PRODUCT indefinitely beyond the Evaluation Period. A Single Developer License for the SOFTWARE PRODUCT
+may not be shared or used concurrently by more than one individual developer. In a project that uses the SOFTWARE PRODUCT,
+each individual developer on the project requires a separate Single Developer License, regardless of whether they directly
+use the component or not. Single Developer Licenses may also be obtained in team discount packs.
+</p>
+
+<p>
+If the Licensee has purchased a site license (“Site License”), each of the developers at a single physical location is
+considered Authorized according to the terms and conditions of the Single Developer License. Each additional physical
+location requires an additional Site License to be considered Authorized.
+</p>
+
+<p>
+If the Licensee has purchased an enterprise license (“Enterprise License”), all developers in the Licensee's organization,
+regardless of location, are considered Authorized according to the terms and conditions of the Single Developer License.
+</p>
+
+<p>
+If the Licensee has purchased a blueprint license (“Blueprint License”), each of the Authorized developers for the SOFTWARE PRODUCT is
+considered Authorized to access source code for the SOFTWARE PRODUCT ("Source Code").
+The Blueprint License must be purchased at the same time as a Site License or Enterprise License.
+Source Code may exclude Actipro proprietary licensing code.
+The sale of Blueprint Licenses is considered final and neither the SOFTWARE PRODUCT nor Source Code may be returned under any circumstances.
+</p>
+
+<p>
+<b>Duplication and Distribution.</b> The SOFTWARE PRODUCT may include certain files ("Redistributables") intended for distribution
+by the Licensee to the users of programs the Licensee creates. Redistributables include, for example, those files identified in
+printed or electronic documentation as redistributable files, or those files pre-selected for deployment by an install utility
+provided with the SOFTWARE PRODUCT (if any). In any event, the Redistributables for the SOFTWARE PRODUCT are only those files
+specifically designated as such by Actipro.
+</p>
+
+<p>
+Subject to all of the terms and conditions in this EULA, if the Licensee is Authorized, Actipro grants the Licensee the non-exclusive,
+royalty-free license to duplicate the Redistributables and to distribute them solely in conjunction with software products
+developed by the Licensee that use them. The Licensee may not supply any means by which end users could incorporate the
+SOFTWARE PRODUCT or portions thereof into their own products.
+</p>
+
+<p>
+<b>Source Code.</b> If the Licensee has purchased a Blueprint License and is Authorized, the Licensee is provided Source Code
+for the SOFTWARE PRODUCT. The following stipulations and restrictions apply to Source Code:
+<ol>
+<li>Source Code shall be considered as part the SOFTWARE PRODUCT and all requirements stated above still apply,
+ meaning that developers at a separate site from the one which purchased the Blueprint License are NOT able to work on
+ any project created that uses the Source Code, unless that site has also purchased a Blueprint License.
+ The only exception is when an Enterprise License has been purchased along with the Blueprint License,
+ in which case the Source Code may be used by developers at any site.</li>
+<li>Actipro grants the Licensee the non-exclusive license to view and modify the Source Code for the sole purposes of education and troubleshooting.
+ If the Licensee troubleshoots the Source Code, the Licensee may compile the corrected source code and use and distribute the
+ resulting object code solely as a replacement for the corresponding Redistributables the Source Code compiles into.</li>
+<li>The Licensee may NOT distribute or sell the Source Code, or portions or modifications or derivative works thereof, to any third party
+ not Authorized by the Licensee’s Blueprint License(s), without explicit permission by Actipro.</li>
+<li>The Licensee may not compete against Actipro by repackaging, recompiling, or renaming the SOFTWARE PRODUCT for which the
+ Licensee purchased Source Code. Any derivative works based on the Source Code are illegal to be created or sold if they compete
+ in any way with the SOFTWARE PRODUCT or other Actipro products.</li>
+<li>Any object code that is created by using the Source Code or derivative code based on the Source Code must be obfuscated.</li>
+<li>Any object code that is created by using the Source Code or derivative code based on the Source Code may NOT bear "ActiproSoftware"
+ or the name of the SOFTWARE PRODUCT in the object code assembly name.</li>
+<li>All Source Code must be kept in its proper "ActiproSoftware" namespace.</li>
+<li>Actipro shall retain all rights, title and interest in and to all corrections, modifications and derivative works of the Source Code
+ created by the Licensee, including all copyrights subsisting therein, to the extent such corrections, modifications or
+ derivative works contain copyrightable code or expression derived from the Source Code.</li>
+<li>The Licensee acknowledges that the Source Code contains valuable and proprietary trade secrets of Actipro, and agrees to expend
+ every effort to insure its confidentiality.</li>
+<li>Source Code may be obtained by coordinating with Actipro during the support period for the Blueprint License, typically one year
+ in duration, starting on the date of purchase of the Blueprint License.</li>
+</ol>
+</p>
+
+<p>
+<b>Storage/Network Use.</b> The Licensee may also store or install a copy of the SOFTWARE PRODUCT on a storage device,
+such as a network server, used only to install or run the SOFTWARE PRODUCT on the the Licensee’s other computers over an internal network;
+however, the Licensee must acquire and dedicate a Single Developer License for each separate individual developer who wishes to use
+the SOFTWARE PRODUCT.
+</p>
+
+<p>
+<b>DESCRIPTION OF OTHER RIGHTS AND LIMITATIONS.</b>
+</p>
+
+<p>
+<b>Not for Resale Software.</b> If the SOFTWARE PRODUCT is labeled and provided as "Not for Resale" or "NFR", then, notwithstanding
+other sections of this EULA, the Licensee may not resell, distribute, or otherwise transfer for value or benefit in any manner,
+the SOFTWARE PRODUCT or any derivative work using the SOFTWARE PRODUCT. The Licensee may not transfer, rent, lease, lend, copy,
+modify, translate, sublicense, time-share or electronically transmit the SOFTWARE PRODUCT, media or documentation.
+This also applies to any and all intermediate files, source code, and compiled executables.
+</p>
+
+<p>
+<b>Limitations on Reverse Engineering, Decompilation, and Disassembly.</b> The Licensee may not reverse engineer, decompile,
+create derivative works, modify, translate, or disassemble the SOFTWARE PRODUCT, and only to the extent that such activity is
+expressly permitted by applicable law notwithstanding this limitation. The Licensee agrees to take all reasonable, legal and
+appropriate measures to prohibit the illegal dissemination of the SOFTWARE PRODUCT or any of its constituent parts and redistributables
+to the fullest extent of all applicable local, US Codes and International Laws and Treaties regarding anti-circumvention, including
+but not limited to, the Geneva and Berne World Intellectual Property Organization (WIPO) Diplomatic Conferences.
+</p>
+
+<p>
+<b>Rental.</b> The Licensee may not rent, lease, or lend the SOFTWARE PRODUCT.
+</p>
+
+<p>
+<b>Separation of Components, Their Constituent Parts and Redistributables.</b> The SOFTWARE PRODUCT is licensed as a single product.
+The SOFTWARE PRODUCT and its constituent parts and any provided redistributables may not be reverse engineered, decompiled, disassembled,
+nor placed for distribution, sale, or resale as individual creations by the Licensee or any individual not expressly given
+such permission by Actipro. The provision of Source Code, if included with the SOFTWARE PRODUCT, does not constitute transfer of any
+legal rights to such code, and resale or distribution of all or any portion of all Source Code and intellectual property will be prosecuted
+to the fullest extent of all applicable local, federal and international laws. All Actipro libraries, Source Code, Redistributables and
+other files remain Actipro's exclusive property. The Licensee may not distribute any files, except those that Actipro has expressly
+designated as Redistributable.
+</p>
+
+<p>
+<b>Installation and Use.</b> The license granted in this EULA for the Licensee to create his/her own compiled programs and distribute
+the Licensee’s programs and the Redistributables (if any), is subject to all of the following conditions:
+<ol>
+<li>All copies of the programs the Licensee creates must bear a valid copyright notice, either their own or the Actipro copyright
+ notice that appears on the SOFTWARE PRODUCT.</li>
+<li>The Licensee may not remove or alter any Actipro copyright, trademark or other proprietary rights notice contained in any portion
+ of Actipro libraries, source code, Redistributables or other files that bear such a notice.</li>
+<li>Actipro provides no warranty at all to any person, and the Licensee will remain solely responsible to anyone receiving the
+ Licensee’s programs for support, service, upgrades, or technical or other assistance, and such recipients will have no right
+ to contact Actipro for such services or assistance.</li>
+<li>The Licensee will indemnify and hold Actipro, its related companies and its suppliers, harmless from and against any claims or
+ liabilities arising out of the use, reproduction or distribution of the Licensee’s programs.</li>
+<li>The Licensee’s programs containing the SOFTWARE PRODUCT must be written using a licensed, registered copy of the SOFTWARE PRODUCT.</li>
+<li>The Licensee’s programs must add primary and substantial functionality, and may not be merely a set or subset of any of the libraries,
+ Source Code, Redistributables or other files of the SOFTWARE PRODUCT.</li>
+<li>The Licensee may not use Actipro's or any of its suppliers' names, logos, or trademarks to market the Licensee’s programs,
+ unless expressly given such permission by Actipro.</li>
+</ol>
+</p>
+
+<p>
+<b>Support Services.</b> Actipro may provide the Licensee with support services related to the SOFTWARE PRODUCT ("Support Services").
+Use of Support Services is governed by Actipro policies and programs described in the user manual, in on-line documentation and/or other
+Actipro provided materials. Any supplemental software code provided to the Licensee as part of the Support Services shall be considered
+part of the SOFTWARE PRODUCT and subject to the terms and conditions of this EULA. With respect to technical information the Licensee
+provides to Actipro as part of the Support Services, Actipro may use such information for its business purposes, including for product
+support and development.
+</p>
+
+<p>
+<b>Software Transfer.</b> The Licensee may NOT permanently or temporarily transfer ANY of the Licensee’s rights under this EULA to any
+individual or entity. Regardless of any modifications which the Licensee makes and regardless of how the Licensee might compile, link,
+and/or package the Licensee’s programs, under no circumstances may the libraries, redistributables, and/or other files of the
+SOFTWARE PRODUCT (including any portions thereof) be used for developing programs by anyone other than the Licensee. Only the Licensee
+as the licensed end user has the right to use the libraries, redistributables, or other files of the SOFTWARE PRODUCT (or any portions thereof)
+for developing programs created with the SOFTWARE PRODUCT. In particular, the Licensee may not share copies of the Source Code or
+Redistributables with other co-developers.
+</p>
+
+<p>
+<b>Termination.</b> Without prejudice to any other rights or remedies, Actipro will terminate this EULA upon the Licensee’s failure to
+comply with all the terms and conditions of this EULA. In such event, the Licensee must destroy all copies of the SOFTWARE PRODUCT and
+all of its component parts including any related documentation, and must remove ANY and ALL use of such technology immediately from any
+applications using technology contained in the SOFTWARE PRODUCT developed by the Licensee, whether in native, altered or compiled state.
+</p>
+
+<p>
+<b>UPGRADES.</b> If the SOFTWARE PRODUCT is labeled as an upgrade, the Licensee must be properly licensed to use the SOFTWARE PRODUCT
+identified by Actipro as being eligible for the upgrade in order to use the SOFTWARE PRODUCT. A SOFTWARE PRODUCT labeled as an upgrade
+replaces and/or supplements the SOFTWARE PRODUCT that formed the basis for the Licensee’s eligibility for the upgrade, and together
+constitute a single SOFTWARE PRODUCT. The Licensee may use the resulting upgraded SOFTWARE PRODUCT only in accordance with all the
+terms of this EULA.
+</p>
+
+<p>
+<b>COPYRIGHT.</b> All title and copyrights in and to the SOFTWARE PRODUCT (including but not limited to any images, demos, source code,
+intermediate files, packages, photographs, animations, video, audio, music, text, and "applets" incorporated into the SOFTWARE PRODUCT),
+the accompanying printed materials, and any copies of the SOFTWARE PRODUCT are owned by Actipro or its subsidiaries.
+The SOFTWARE PRODUCT is protected by copyright laws and international treaty provisions. Therefore, the Licensee must treat the
+SOFTWARE PRODUCT like any other copyrighted material except that the Licensee may install the SOFTWARE PRODUCT for use by the Licensee.
+The Licensee may not copy any printed materials accompanying the SOFTWARE PRODUCT.
+</p>
+
+<p>
+<b>GENERAL PROVISIONS.</b> This EULA may only be modified in writing signed by the Licensee and an authorized officer of Actipro.
+If any provision of this EULA is found void or unenforceable, the remainder will remain valid and enforceable according to its terms.
+</p>
+
+<p>
+<b>MISCELLANEOUS.</b> If the Licensee acquired this product in the United States, this EULA is governed by the laws of the State of Ohio.
+</p>
+
+<p>
+If this SOFTWARE PRODUCT was acquired outside the United States, then the Licensee, agrees and ascends to the adherence to all
+applicable international treaties regarding copyright and intellectual property rights which shall also apply.
+In addition, the Licensee agrees that any local law(s) to the benefit and protection of Actipro ownership of, and interest in,
+its intellectual property and right of recovery for damages thereto will also apply.
+</p>
+
+<p>
+Should you have any questions concerning this EULA, or if you desire to contact Actipro for any reason, please contact us via our
+support web pages at <a href="http://www.actiprosoftware.com">http://www.actiprosoftware.com</a>.
+</p>
+
+<p><b>
+NO WARRANTIES. ACTIPRO EXPRESSLY DISCLAIMS ANY WARRANTY FOR THE SOFTWARE PRODUCT. THE PRODUCT AND ANY RELATED DOCUMENTATION IS PROVIDED
+"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. THE ENTIRE RISK ARISING OUT OF USE OR PERFORMANCE OF THE PRODUCT REMAINS WITH THE LICENSEE.
+</b></p>
+
+<p><b>
+LIMITATION OF LIABILITY. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL ACTIPRO OR ITS SUPPLIERS BE LIABLE
+FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR
+INABILITY TO USE THE SOFTWARE PRODUCT OR THE PROVISION OF OR FAILURE TO PROVIDE SUPPORT SERVICES, EVEN IF ACTIPRO HAS BEEN ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGES.
+</b></p>
+
+<p>
+Copyright (c) 2002-2007 Actipro Software LLC. All rights reserved.
+</p>
+
+</body>
+</html>
View
BIN tools/NCoverExplorer/ActiproSoftware.Shared.Net11.dll
Binary file not shown.
View
BIN tools/NCoverExplorer/ActiproSoftware.SyntaxEditor.Net11.dll
Binary file not shown.
View
BIN tools/NCoverExplorer/ActiproSoftware.WinUICore.Net11.dll
Binary file not shown.
View
BIN tools/NCoverExplorer/CommandBars.dll
Binary file not shown.
View
123 tools/NCoverExplorer/ConsoleConfig.xsd
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!-- NCoverExplorer (c) 2007 Grant Drake. -->
+<!-- Schema for configuration file to be passed to NCoverExplorer-Console.exe using /config: switch -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:element name="ConsoleSetting">
+ <xs:complexType>
+ <xs:sequence>
+ <!-- Title name to appear on the report (equivalent to /project:xx). Default is blank. -->
+ <xs:element name="ProjectName" type="xs:string" minOccurs="0" maxOccurs="1" />
+ <!-- Threshold for acceptance criteria for coverage reports detailing acceptable coverage levels. Default is 95% -->
+ <xs:element name="SatisfactoryCoverageThreshold" type="xs:decimal" minOccurs="0" maxOccurs="1" />
+ <!-- Threshold for acceptance criteria for coverage reports detailing acceptable coverage as #seqPts rather than %. Default is 0. -->
+ <xs:element name="SatisfactoryUnvisitedSequencePoints" type="xs:decimal" minOccurs="0" maxOccurs="1" />
+ <!-- Threshold for acceptance criteria for coverage reports detailing acceptable function coverage levels. Default is 80% -->
+ <xs:element name="SatisfactoryFunctionThreshold" type="xs:decimal" minOccurs="0" maxOccurs="1" />
+ <!-- Filtering to be applied to the results. Use integer (starting from 0=None) or named value. Default is "None". -->
+ <xs:element name="TreeFilterStyle" minOccurs="0" maxOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="None" />
+ <xs:enumeration value="HideUnvisited" />
+ <xs:enumeration value="HideFullyCovered" />
+ <xs:enumeration value="HideThresholdCovered" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <!-- Sorting to be applied to the results. Use integer (starting from 0=Name) or named value. Default is "Name". -->
+ <xs:element name="TreeSortStyle" minOccurs="0" maxOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Name" />
+ <xs:enumeration value="ClassLine" />
+ <xs:enumeration value="CoveragePercentageAscending" />
+ <xs:enumeration value="CoveragePercentageDescending" />
+ <xs:enumeration value="UnvisitedSequencePointsAscending" />
+ <xs:enumeration value="UnvisitedSequencePointsDescending" />
+ <xs:enumeration value="VisitCountAscending" />
+ <xs:enumeration value="VisitCountDescending" />
+ <xs:enumeration value="FunctionCoverageAscending" />
+ <xs:enumeration value="FunctionCoverageDescending" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <!-- Coverage exclusions to exclude specified assemblies, namespaces, classes and/or methods. -->
+ <xs:element name="CoverageExclusions" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="CoverageExclusion" maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- Module specific coverage thresholds if wanting more granular coverage tolerances. -->
+ <xs:element name="ModuleThresholds" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="ModuleThreshold" maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- Names of the coverage files to merge/report on. Wildcards can be used. -->
+ <xs:element name="CoverageFileNames" minOccurs="1" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="CoverageFileName" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- Report to be generated by running NCoverExplorer.Console. Default is "None". -->
+ <xs:element name="ReportType" minOccurs="0" maxOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="None" />
+ <xs:enumeration value="ModuleSummary" />
+ <xs:enumeration value="ModuleNamespaceSummary" />
+ <xs:enumeration value="ModuleClassSummary" />
+ <xs:enumeration value="ModuleClassFunctionSummary" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <!-- File name for the output HTML report if wanting to generate one. -->
+ <xs:element name="HtmlReportFileName" type="xs:string" minOccurs="0" maxOccurs="1" />
+ <!-- File name for the output XML report if wanting to generate one. -->
+ <xs:element name="XmlReportFileName" type="xs:string" minOccurs="0" maxOccurs="1" />
+ <!-- File name for the output merged coverage.xml file if any resulting from merging the inputs. -->
+ <xs:element name="MergeFileName" type="xs:string" minOccurs="0" maxOccurs="1" />
+ <!-- Whether to show the excluded elements in the footer of the output report if being generated. Default is false. -->
+ <xs:element name="ShowExcludedFooter" type="xs:boolean" minOccurs="0" maxOccurs="1" />
+ <!-- Whether to return a failure exit code if any module is below the minimum coverage threshold. Default is false. -->
+ <xs:element name="FailIfBelowMinimum" type="xs:boolean" minOccurs="0" maxOccurs="1" />
+ <!-- Whether to return a failure exit code if total coverage is below the minimum coverage threshold. Default is false. -->
+ <xs:element name="FailIfBelowCombinedMinimum" type="xs:boolean" minOccurs="0" maxOccurs="1" />
+ <!-- For use with the FailIfXXX options - the minimum coverage threshold if not specifying at the module level. -->
+ <xs:element name="MinimumCoverage" type="xs:decimal" minOccurs="0" maxOccurs="1" />
+ <!-- Whether to suppress virtually all console output when running. Default is false. -->
+ <xs:element name="NoLog" type="xs:boolean" minOccurs="0" maxOccurs="1" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CoverageExclusion">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ExclusionType" minOccurs="1" maxOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Assembly" />
+ <xs:enumeration value="Namespace" />
+ <xs:enumeration value="Class" />
+ <xs:enumeration value="Method" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="Pattern" type="xs:string" minOccurs="1" maxOccurs="1" />
+ <xs:element name="IsRegex" type="xs:boolean" minOccurs="0" maxOccurs="1" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ModuleThreshold">
+ <xs:complexType>
+ <xs:attribute name="ModuleName" use="required" type="xs:string" />
+ <xs:attribute name="SatisfactoryCoverage" use="required" type="xs:decimal" />
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
View
94 tools/NCoverExplorer/ConsoleExample.config
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Example configuration file to be passed to NCoverExplorer-Console.exe using /config: switch -->
+<!-- If not supplied, then the same defaults will be used as the NCoverExplorer GUI. -->
+<ConsoleSetting xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <!-- Name attribute is title to appear on the report (equivalent to /project:xx). Default is blank. -->
+ <ProjectName>Example.Project</ProjectName>
+
+ <!-- Names of the coverage files to merge/report on. Wildcards can be used. -->
+ <CoverageFileNames>
+ <CoverageFileName>*.Coverage.xml</CoverageFileName>
+ </CoverageFileNames>
+
+ <!-- Report to be generated by running NCoverExplorer.Console. Default is "None". Other possible values are:
+ "ModuleSummary", "ModuleNamespaceSummary",
+ "ModuleClassSummary", "ModuleClassFunctionSummary"
+ -->
+ <ReportType>ModuleClassSummary</ReportType>
+ <!-- Filename for the output html report if wanting to generate one. -->
+ <HtmlReportFileName>C:\MyCoverageReport.html</HtmlReportFileName>
+ <!-- Filename for the output xml report (for use by cc.net) if wanting to generate one. -->
+ <XmlReportFileName>C:\MyCoverageReport.xml</XmlReportFileName>
+
+ <!-- File name for the output merged coverage.xml file if any resulting from merging the inputs. -->
+ <!--<MergeFileName>C:\MyCoverageMerged.xml</MergeFileName>-->
+
+ <!-- Whether to show the excluded elements in the footer of the output report if being generated. Default is false. -->
+ <!--<ShowExcludedFooter>True</ShowExcludedFooter>-->
+
+ <!-- Whether to suppress virtually all console output when running. Default is false. -->
+ <!--<NoLog>True</NoLog>-->
+
+ <!-- Threshold for acceptance criteria for coverage reports detailing acceptable coverage levels. Default is 95% -->
+ <!--<SatisfactoryCoverageThreshold>95</SatisfactoryCoverageThreshold>-->
+
+ <!-- Threshold for acceptance criteria for coverage reports detailing acceptable coverage as #seqPts rather than %. Default is 0. -->
+ <!--<SatisfactoryUnvisitedSequencePoints>2</SatisfactoryUnvisitedSequencePoints> -->
+
+ <!-- Threshold for acceptance criteria for coverage reports detailing acceptable function coverage levels. Default is 80% -->
+ <!--<SatisfactoryFunctionThreshold>80</SatisfactoryFunctionThreshold> -->
+
+ <!-- Threshold for acceptance criteria for coverage reports detailing acceptable function coverage levels. Default is 80% -->
+ <!--<SatisfactoryFunctionThreshold>80</SatisfactoryFunctionThreshold> -->
+
+ <!-- Filtering to be applied to the results. Use integer or named value. Default is "None". Possible values:
+ "None" (0),
+ "HideUnvisited" (1),
+ "HideFullyCovered" (2),
+ "HideThresholdCovered" (3)
+ -->
+ <TreeFilterStyle>None</TreeFilterStyle>
+
+ <!-- Sorting to be applied to the results. Use integer or named value. Default is "Name". Possible values:
+ "Name" (0),
+ "ClassLine" (1),
+ "CoveragePercentageAscending" (2), "CoveragePercentageDescending" (3),
+ "UnvisitedSequencePointsAscending" (4), "UnvisitedSequencePointsDescending" (5),
+ "VisitCountAscending" (6), "VisitCountDescending" (7)
+ "FunctionCoverageAscending" (8), "FunctionCoverageDescending" (9),
+ -->
+ <TreeSortStyle>Name</TreeSortStyle>
+
+ <!-- Coverage exclusions to exclude specified assemblies, namespaces and/or classes. -->
+ <CoverageExclusions>
+ <CoverageExclusion>
+ <ExclusionType>Assembly</ExclusionType>
+ <!-- Valid values are [Assembly], [Namespace] and [Class]. -->
+ <Pattern>*.Tests</Pattern>
+ <IsRegex>false</IsRegex>
+ <!-- Only required with a value of "true" if you do have a regular expression based pattern -->
+ </CoverageExclusion>
+ <CoverageExclusion>
+ <ExclusionType>Namespace</ExclusionType>
+ <Pattern>*.My*</Pattern>
+ </CoverageExclusion>
+ </CoverageExclusions>
+
+ <!-- Module specific coverage thresholds if any, -->
+ <!--<ModuleThresholds>
+ <ModuleThreshold ModuleName="NCoverExplorer.Core.dll" SatisfactoryCoverage="30" />
+ </ModuleThresholds>-->
+
+ <!-- Whether to return a failure exit code if any module is below the minimum coverage threshold. Default is false. -->
+ <!--<FailIfBelowMinimum>True</FailIfBelowMinimum> -->
+
+ <!-- Whether to return a failure exit code if total coverage is below the minimum coverage threshold. Default is false. -->
+ <!--<FailIfBelowCombinedMinimum>True</FailIfBelowCombinedMinimum> -->
+
+ <!-- For use with the FailIfXXX options - the minimum coverage threshold if not specifying at the module level. -->
+ <!--<MinimumCoverage>True</MinimumCoverage> -->
+
+ <!-- Whether to suppress virtually all console output when running. Default is false. -->
+ <!--<NoLog>True</NoLog> -->
+
+</ConsoleSetting>
View
468 tools/NCoverExplorer/CoverageReport.xsl
@@ -0,0 +1,468 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
+ <!-- Created for NCoverExplorer by Grant Drake (see http://www.kiwidude.com/blog/) -->
+ <xsl:output method="html" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"/>
+
+ <xsl:template match="/">
+ <html>
+ <head>
+ <xsl:comment>Generated by NCoverExplorer (see http://www.kiwidude.com/blog/)</xsl:comment>
+ <title>NCoverExplorer - Merged Report</title>
+ <style>
+ body { font: small verdana, arial, helvetica; color:#000000; }
+ .coverageReportTable { font-size: 9px; }
+ .reportHeader { padding: 5px 8px 5px 8px; font-size: 12px; border: 1px solid; margin: 0px; }
+ .titleText { font-weight: bold; font-size: 12px; white-space: nowrap; padding: 0px; margin: 1px; }
+ .subtitleText { font-size: 9px; font-weight: normal; padding: 0px; margin: 1px; white-space: nowrap; }
+ .projectStatistics { font-size: 10px; border-left: #649cc0 1px solid; white-space: nowrap; width: 40%; }
+ .heading { font-weight: bold; }
+ .mainTableHeaderLeft { border: #dcdcdc 1px solid; font-weight: bold; padding-left: 5px; }
+ .mainTableHeader { border-bottom: 1px solid; border-top: 1px solid; border-right: 1px solid; text-align: center; }
+ .mainTableGraphHeader { border-bottom: 1px solid; border-top: 1px solid; border-right: 1px solid; text-align: left; font-weight: bold; }
+ .mainTableCellItem { background: #ffffff; border-left: #dcdcdc 1px solid; border-right: #dcdcdc 1px solid; padding-left: 10px; padding-right: 10px; font-weight: bold; font-size: 10px; }
+ .mainTableCellData { background: #ffffff; border-right: #dcdcdc 1px solid; text-align: center; white-space: nowrap; }
+ .mainTableCellPercent { background: #ffffff; font-weight: bold; white-space: nowrap; text-align: right; padding-left: 10px; }
+ .mainTableCellGraph { background: #ffffff; border-right: #dcdcdc 1px solid; padding-right: 5px; }
+ .mainTableCellBottom { border-bottom: #dcdcdc 1px solid; }
+ .childTableHeader { border-top: 1px solid; border-bottom: 1px solid; border-left: 1px solid; border-right: 1px solid; font-weight: bold; padding-left: 10px; }
+ .childTableCellIndentedItem { background: #ffffff; border-left: #dcdcdc 1px solid; border-right: #dcdcdc 1px solid; padding-right: 10px; font-size: 10px; }
+ .exclusionTableCellItem { background: #ffffff; border-left: #dcdcdc 1px solid; border-right: #dcdcdc 1px solid; padding-left: 10px; padding-right: 10px; }
+ .projectTable { background: #a9d9f7; border-color: #649cc0; }
+ .primaryTable { background: #d7eefd; border-color: #a4dafc; }
+ .secondaryTable { background: #f9e9b7; border-color: #f6d376; }
+ .secondaryChildTable { background: #fff6df; border-color: #f5e1b1; }
+ .exclusionTable { background: #fadada; border-color: #f37f7f; }
+ .graphBarNotVisited { font-size: 2px; border:#9c9c9c 1px solid; background:#df0000; }
+ .graphBarSatisfactory { font-size: 2px; border:#9c9c9c 1px solid; background:#f4f24e; }
+ .graphBarVisited { background: #00df00; font-size: 2px; border-left:#9c9c9c 1px solid; border-top:#9c9c9c 1px solid; border-bottom:#9c9c9c 1px solid; }
+ .graphBarVisitedFully { background: #00df00; font-size: 2px; border:#9c9c9c 1px solid; }
+ </style>
+ </head>
+ <body>
+ <table class="coverageReportTable" cellpadding="2" cellspacing="0">
+ <tbody>
+ <xsl:apply-templates select="//coverageReport" />
+ </tbody>
+ </table>
+ </body>
+ </html>
+ </xsl:template>
+
+ <!-- Main Project Section -->
+ <xsl:template match="//coverageReport">
+ <xsl:variable name="reportType" select="./@reportTitle" />
+ <xsl:variable name="threshold">
+ <xsl:choose>
+ <xsl:when test="$reportType = 'Module Class Function Summary'"><xsl:value-of select="./project/@acceptableFunction" /></xsl:when>
+ <xsl:otherwise><xsl:value-of select="./project/@acceptable" /></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="unvisitedTitle">
+ <xsl:choose>
+ <xsl:when test="$reportType = 'Module Class Function Summary'">Unvisited Functions</xsl:when>
+ <xsl:otherwise>Unvisited SeqPts</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="coverageTitle">
+ <xsl:choose>
+ <xsl:when test="$reportType = 'Module Class Function Summary'">Function Coverage</xsl:when>
+ <xsl:otherwise>Coverage</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="header" />
+
+ <xsl:call-template name="projectSummary">
+ <xsl:with-param name="threshold" select="$threshold" />
+ <xsl:with-param name="unvisitedTitle" select="$unvisitedTitle" />
+ <xsl:with-param name="coverageTitle" select="$coverageTitle" />
+ <xsl:with-param name="reportType" select="$reportType" />
+ </xsl:call-template>
+
+ <xsl:call-template name="moduleSummary">
+ <xsl:with-param name="threshold" select="$threshold" />
+ <xsl:with-param name="unvisitedTitle" select="$unvisitedTitle" />
+ <xsl:with-param name="coverageTitle" select="$coverageTitle" />
+ </xsl:call-template>
+
+ <xsl:if test="$reportType = 'Module Namespace Summary'">
+ <xsl:call-template name="moduleNamespaceSummary">
+ <xsl:with-param name="threshold" select="$threshold" />
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="($reportType = 'Module Class Summary') or ($reportType = 'Module Class Function Summary')">
+ <xsl:call-template name="classModuleSummary">
+ <xsl:with-param name="threshold" select="$threshold" />
+ <xsl:with-param name="unvisitedTitle" select="$unvisitedTitle" />
+ <xsl:with-param name="coverageTitle" select="$coverageTitle" />
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="count(./exclusions/exclusion) != 0">
+ <xsl:call-template name="exclusionsSummary" />
+ </xsl:if>
+
+ <xsl:call-template name="footer" />
+ </xsl:template>
+
+
+ <!-- Report Header -->
+ <xsl:template name="header">
+ <tr>
+ <td class="projectTable reportHeader" colspan="5">
+ <table width="100%">
+ <tbody>
+ <tr>
+ <td valign="top">
+ <h1 class="titleText">NCoverExplorer Coverage Report - <xsl:value-of select="./project/@name" />&#160;&#160;</h1>
+ <table cellpadding="1" class="subtitleText">
+ <tbody>
+ <tr>
+ <td class="heading">Report generated on:</td>
+ <td><xsl:value-of select="./@date" />&#160;at&#160;<xsl:value-of select="./@time" /></td>
+ </tr>
+ <tr>
+ <td class="heading">NCoverExplorer version:</td>
+ <td><xsl:value-of select="./@version" /></td>
+ </tr>
+ <tr>
+ <td class="heading">Filtering / Sorting:</td>
+ <td><xsl:value-of select="./project/@filteredBy" />&#160;/&#160;<xsl:value-of select="./project/@sortedBy" /></td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ <td class="projectStatistics" align="right" valign="top">
+ <table cellpadding="1">
+ <tbody>
+ <tr>
+ <td rowspan="4" valign="top" nowrap="true" class="heading">Project Statistics:</td>
+ <td align="right" class="heading">Files:</td>
+ <td align="right"><xsl:value-of select="./project/@files" /></td>
+ <td rowspan="4">&#160;</td>
+ <td align="right" class="heading">NCLOC:</td>
+ <td align="right"><xsl:value-of select="./project/@nonCommentLines" /></td>
+ </tr>
+ <tr>
+ <td align="right" class="heading">Classes:</td>
+ <td align="right"><xsl:value-of select="./project/@classes" /></td>
+ <td align="right" class="heading">&#160;</td>
+ <td align="right">&#160;</td>
+ </tr>
+ <tr>
+ <td align="right" class="heading">Functions:</td>
+ <td align="right"><xsl:value-of select="./project/@members" /></td>
+ <td align="right" class="heading">Unvisited:</td>
+ <td align="right"><xsl:value-of select="./project/@unvisitedFunctions" /></td>
+ </tr>
+ <tr>
+ <td align="right" class="heading">Seq Pts:</td>
+ <td align="right"><xsl:value-of select="./project/@sequencePoints" /></td>
+ <td align="right" class="heading">Unvisited:</td>
+ <td align="right"><xsl:value-of select="./project/@unvisitedPoints" /></td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ </xsl:template>
+
+ <!-- Project Summary -->
+ <xsl:template name="projectSummary">
+ <xsl:param name="threshold" />
+ <xsl:param name="unvisitedTitle" />
+ <xsl:param name="coverageTitle" />
+ <xsl:param name="reportType" />
+ <tr>
+ <td colspan="5">&#160;</td>
+ </tr>
+ <tr>
+ <td class="projectTable mainTableHeaderLeft">Project</td>
+ <td class="projectTable mainTableHeader">Acceptable</td>
+ <td class="projectTable mainTableHeader"><xsl:value-of select="$unvisitedTitle" /></td>
+ <td class="projectTable mainTableGraphHeader" colspan="2"><xsl:value-of select="$coverageTitle" /></td>
+ </tr>
+ <xsl:call-template name="coverageDetail">
+ <xsl:with-param name="name">
+ <xsl:choose>
+ <xsl:when test="string-length(./project/@name) > 0"><xsl:value-of select="./project/@name" /></xsl:when>
+ <xsl:otherwise>&#160;</xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="unvisitedPoints">
+ <xsl:choose>
+ <xsl:when test="$reportType = 'Module Class Function Summary'"><xsl:value-of select="./project/@unvisitedFunctions" /></xsl:when>
+ <xsl:otherwise><xsl:value-of select="./project/@unvisitedPoints" /></xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="sequencePoints">
+ <xsl:choose>
+ <xsl:when test="$reportType = 'Module Class Function Summary'"><xsl:value-of select="./project/@members" /></xsl:when>
+ <xsl:otherwise><xsl:value-of select="./project/@sequencePoints" /></xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="coverage">
+ <xsl:choose>
+ <xsl:when test="$reportType = 'Module Class Function Summary'"><xsl:value-of select="./project/@functionCoverage" /></xsl:when>
+ <xsl:otherwise><xsl:value-of select="./project/@coverage" /></xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="threshold" select="$threshold" />
+ <xsl:with-param name="showThreshold">True</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Modules Summary -->
+ <xsl:template name="moduleSummary">
+ <xsl:param name="threshold" />
+ <xsl:param name="unvisitedTitle" />
+ <xsl:param name="coverageTitle" />
+ <tr>
+ <td colspan="5">&#160;</td>
+ </tr>
+ <tr>
+ <td class="primaryTable mainTableHeaderLeft">Modules</td>
+ <td class="primaryTable mainTableHeader">Acceptable</td>
+ <td class="primaryTable mainTableHeader"><xsl:value-of select="$unvisitedTitle" /></td>
+ <td class="primaryTable mainTableGraphHeader" colspan="2"><xsl:value-of select="$coverageTitle" /></td>
+ </tr>
+ <xsl:for-each select="./modules/module">
+ <xsl:call-template name="coverageDetail">
+ <xsl:with-param name="name" select="./@name" />
+ <xsl:with-param name="unvisitedPoints" select="./@unvisitedPoints" />
+ <xsl:with-param name="sequencePoints" select="./@sequencePoints" />
+ <xsl:with-param name="coverage" select="./@coverage" />
+ <xsl:with-param name="threshold" select="./@acceptable" />
+ <xsl:with-param name="showThreshold">True</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!-- Namespaces per Module Summary -->
+ <xsl:template name="moduleNamespaceSummary">
+ <xsl:param name="threshold" />
+ <xsl:for-each select="./modules/module">
+ <tr>
+ <td colspan="5">&#160;</td>
+ </tr>
+ <tr>
+ <td class="secondaryTable mainTableHeaderLeft">Module</td>
+ <td class="secondaryTable mainTableHeader">Acceptable</td>
+ <td class="secondaryTable mainTableHeader">Unvisited SeqPts</td>
+ <td class="secondaryTable mainTableGraphHeader" colspan="2">Coverage</td>
+ </tr>
+ <xsl:call-template name="coverageDetailSecondary">
+ <xsl:with-param name="name" select="./@name" />
+ <xsl:with-param name="unvisitedPoints" select="./@unvisitedPoints" />
+ <xsl:with-param name="sequencePoints" select="./@sequencePoints" />
+ <xsl:with-param name="coverage" select="./@coverage" />
+ <xsl:with-param name="threshold" select="./@acceptable" />
+ </xsl:call-template>
+ <tr>
+ <td class="secondaryChildTable childTableHeader" colspan="5">Namespaces</td>
+ </tr>
+ <xsl:for-each select="./namespace">
+ <xsl:call-template name="coverageIndentedDetail">
+ <xsl:with-param name="name" select="./@name" />
+ <xsl:with-param name="unvisitedPoints" select="./@unvisitedPoints" />
+ <xsl:with-param name="sequencePoints" select="./@sequencePoints" />
+ <xsl:with-param name="coverage" select="./@coverage" />
+ <xsl:with-param name="threshold" select="./../@acceptable" />
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!-- Classes per Namespace per Module Summary -->
+ <xsl:template name="classModuleSummary">
+ <xsl:param name="threshold" />
+ <xsl:param name="unvisitedTitle" />
+ <xsl:param name="coverageTitle" />
+ <xsl:for-each select="./modules/module">
+ <tr>
+ <td colspan="5">&#160;</td>
+ </tr>
+ <tr>
+ <td class="secondaryTable mainTableHeaderLeft">Module</td>
+ <td class="secondaryTable mainTableHeader">Acceptable</td>
+ <td class="secondaryTable mainTableHeader"><xsl:value-of select="$unvisitedTitle" /></td>
+ <td class="secondaryTable mainTableGraphHeader" colspan="2"><xsl:value-of select="$coverageTitle" /></td>
+ </tr>
+ <xsl:call-template name="coverageDetailSecondary">
+ <xsl:with-param name="name" select="./@name" />
+ <xsl:with-param name="unvisitedPoints" select="./@unvisitedPoints" />
+ <xsl:with-param name="sequencePoints" select="./@sequencePoints" />
+ <xsl:with-param name="coverage" select="./@coverage" />
+ <xsl:with-param name="threshold" select="./@acceptable" />
+ </xsl:call-template>
+ <tr>
+ <td class="secondaryChildTable childTableHeader" colspan="5">Namespace / Classes</td>
+ </tr>
+ <xsl:for-each select="./namespace">
+ <xsl:call-template name="coverageIndentedDetail">
+ <xsl:with-param name="name" select="./@name" />
+ <xsl:with-param name="unvisitedPoints" select="./@unvisitedPoints" />
+ <xsl:with-param name="sequencePoints" select="./@sequencePoints" />
+ <xsl:with-param name="coverage" select="./@coverage" />
+ <xsl:with-param name="threshold" select="../@acceptable" />
+ <xsl:with-param name="styleTweak">padding-left:20px;font-weight:bold</xsl:with-param>
+ </xsl:call-template>
+ <xsl:for-each select="./class">
+ <xsl:call-template name="coverageIndentedDetail">
+ <xsl:with-param name="name" select="./@name" />
+ <xsl:with-param name="unvisitedPoints" select="./@unvisitedPoints" />
+ <xsl:with-param name="sequencePoints" select="./@sequencePoints" />
+ <xsl:with-param name="coverage" select="./@coverage" />
+ <xsl:with-param name="threshold" select="../../@acceptable" />
+ <xsl:with-param name="styleTweak">padding-left:30px</xsl:with-param>
+ <xsl:with-param name="scale">160</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!-- Coverage detail row in main grid displaying a name, statistics and graph bar -->
+ <xsl:template name="coverageDetail">
+ <xsl:param name="name" />
+ <xsl:param name="unvisitedPoints" />
+ <xsl:param name="sequencePoints" />
+ <xsl:param name="coverage" />
+ <xsl:param name="threshold" />
+ <xsl:param name="showThreshold" />
+ <tr>
+ <xsl:choose>
+ <xsl:when test="$showThreshold='True'">
+ <td class="mainTableCellBottom mainTableCellItem"><xsl:value-of select="$name" /></td>
+ <td class="mainTableCellBottom mainTableCellData"><xsl:value-of select="concat(format-number($threshold,'#0.0'), ' %')" /></td>
+ </xsl:when>
+ <xsl:otherwise>
+ <td class="mainTableCellBottom mainTableCellItem" colspan="2"><xsl:value-of select="$name" /></td>
+ </xsl:otherwise>
+ </xsl:choose>
+ <td class="mainTableCellBottom mainTableCellData"><xsl:value-of select="$unvisitedPoints" /></td>
+ <td class="mainTableCellBottom mainTableCellPercent"><xsl:value-of select="concat(format-number($coverage,'#0.0'), ' %')" /></td>
+ <td class="mainTableCellBottom mainTableCellGraph">
+ <xsl:call-template name="detailPercent">
+ <xsl:with-param name="notVisited" select="$unvisitedPoints" />
+ <xsl:with-param name="total" select="$sequencePoints" />
+ <xsl:with-param name="threshold" select="$threshold" />
+ <xsl:with-param name="scale" select="200" />
+ </xsl:call-template>
+ </td>
+ </tr>
+ </xsl:template>
+
+ <!-- Coverage detail row in secondary grid header displaying a name, statistics and graph bar -->
+ <xsl:template name="coverageDetailSecondary">
+ <xsl:param name="name" />
+ <xsl:param name="unvisitedPoints" />
+ <xsl:param name="sequencePoints" />
+ <xsl:param name="coverage" />
+ <xsl:param name="threshold" />
+ <tr>
+ <td class="mainTableCellItem"><xsl:value-of select="$name" /></td>
+ <td class="mainTableCellData"><xsl:value-of select="concat(format-number($threshold,'#0.0'), ' %')" /></td>
+ <td class="mainTableCellData"><xsl:value-of select="$unvisitedPoints" /></td>
+ <td class="mainTableCellPercent"><xsl:value-of select="concat(format-number($coverage,'#0.0'), ' %')" /></td>
+ <td class="mainTableCellGraph">
+ <xsl:call-template name="detailPercent">
+ <xsl:with-param name="notVisited" select="$unvisitedPoints" />
+ <xsl:with-param name="total" select="$sequencePoints" />
+ <xsl:with-param name="threshold" select="$threshold" />
+ <xsl:with-param name="scale" select="200" />
+ </xsl:call-template>
+ </td>
+ </tr>
+ </xsl:template>
+
+ <!-- Coverage detail row with indented item name and shrunk graph bar -->
+ <xsl:template name="coverageIndentedDetail">
+ <xsl:param name="name" />
+ <xsl:param name="unvisitedPoints" />
+ <xsl:param name="sequencePoints" />
+ <xsl:param name="coverage" />
+ <xsl:param name="threshold" />
+ <xsl:param name="styleTweak">padding-left:20px</xsl:param>
+ <xsl:param name="scale">180</xsl:param>
+ <tr>
+ <td class="mainTableCellBottom childTableCellIndentedItem" colspan="2"><xsl:attribute name="style"><xsl:value-of select="$styleTweak"/></xsl:attribute><xsl:value-of select="$name" /></td>
+ <td class="mainTableCellBottom mainTableCellData"><xsl:value-of select="$unvisitedPoints" /></td>
+ <td class="mainTableCellBottom mainTableCellPercent"><xsl:value-of select="concat(format-number($coverage,'#0.0'), ' %')" /></td>
+ <td class="mainTableCellBottom mainTableCellGraph">
+ <xsl:call-template name="detailPercent">
+ <xsl:with-param name="notVisited" select="$unvisitedPoints" />
+ <xsl:with-param name="total" select="$sequencePoints" />
+ <xsl:with-param name="threshold" select="$threshold" />
+ <xsl:with-param name="scale" select="$scale" />
+ </xsl:call-template>
+ </td>
+ </tr>
+ </xsl:template>
+
+ <!-- Exclusions Summary -->
+ <xsl:template name="exclusionsSummary">
+ <tr>
+ <td colspan="5">&#160;</td>
+ </tr>
+ <tr>
+ <td class="exclusionTable mainTableHeaderLeft" colspan="3">Excluded From Coverage Results</td>
+ <td class="exclusionTable mainTableGraphHeader" colspan="2">All Code Within</td>
+ </tr>
+ <xsl:for-each select="./exclusions/exclusion">
+ <tr>
+ <td class="mainTableCellBottom exclusionTableCellItem" colspan="3"><xsl:value-of select="@name" /></td>
+ <td class="mainTableCellBottom mainTableCellGraph" colspan="2"><xsl:value-of select="@category" /></td>
+ </tr>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!-- Footer -->
+ <xsl:template name="footer">
+ <tr>
+ <td colspan="5">&#160;</td>
+ </tr>
+ </xsl:template>
+
+ <!-- Draw % Green/Red/Yellow Bar -->
+ <xsl:template name="detailPercent">
+ <xsl:param name="notVisited" />
+ <xsl:param name="total" />
+ <xsl:param name="threshold" />
+ <xsl:param name="scale" />
+ <xsl:variable name="visited" select="$total - $notVisited" />
+ <xsl:variable name="coverage" select="$visited div $total * 100"/>
+ <table cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <xsl:if test="$notVisited = 0">
+ <td class="graphBarVisitedFully" height="14">
+ <xsl:attribute name="width">
+ <xsl:value-of select="$scale" />
+ </xsl:attribute>.</td>
+ </xsl:if>
+ <xsl:if test="($visited != 0) and ($notVisited != 0)">
+ <td class="graphBarVisited" height="14">
+ <xsl:attribute name="width">
+ <xsl:value-of select="format-number($coverage div 100 * $scale, '0') - 1" />
+ </xsl:attribute>.</td>
+ </xsl:if>
+ <xsl:if test="$notVisited != 0">
+ <td height="14">
+ <xsl:attribute name="class">
+ <xsl:if test="$coverage &gt;= $threshold">graphBarSatisfactory</xsl:if>
+ <xsl:if test="$coverage &lt; $threshold">graphBarNotVisited</xsl:if>
+ </xsl:attribute>
+ <xsl:attribute name="width">
+ <xsl:value-of select="format-number($notVisited div $total * $scale, '0')" />
+ </xsl:attribute>.</td>
+ </xsl:if>
+ </tr>
+ </tbody>
+ </table>
+ </xsl:template>
+</xsl:stylesheet>
View
334 tools/NCoverExplorer/LicencePersonal.rtf
@@ -0,0 +1,334 @@
+{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang2057\deflangfe2057{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
+{\f36\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f37\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Verdana;}{\f38\froman\fcharset238\fprq2 Times New Roman CE;}{\f39\froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\f41\froman\fcharset161\fprq2 Times New Roman Greek;}{\f42\froman\fcharset162\fprq2 Times New Roman Tur;}{\f43\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f44\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\f45\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f46\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f48\fswiss\fcharset238\fprq2 Arial CE;}{\f49\fswiss\fcharset204\fprq2 Arial Cyr;}{\f51\fswiss\fcharset161\fprq2 Arial Greek;}
+{\f52\fswiss\fcharset162\fprq2 Arial Tur;}{\f53\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f54\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\f55\fswiss\fcharset186\fprq2 Arial Baltic;}{\f56\fswiss\fcharset163\fprq2 Arial (Vietnamese);}
+{\f398\fswiss\fcharset238\fprq2 Tahoma CE;}{\f399\fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f401\fswiss\fcharset161\fprq2 Tahoma Greek;}{\f402\fswiss\fcharset162\fprq2 Tahoma Tur;}{\f403\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}
+{\f404\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f405\fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f406\fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f407\fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f408\fswiss\fcharset238\fprq2 Verdana CE;}
+{\f409\fswiss\fcharset204\fprq2 Verdana Cyr;}{\f411\fswiss\fcharset161\fprq2 Verdana Greek;}{\f412\fswiss\fcharset162\fprq2 Verdana Tur;}{\f415\fswiss\fcharset186\fprq2 Verdana Baltic;}{\f416\fswiss\fcharset163\fprq2 Verdana (Vietnamese);}}
+{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
+\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\qj \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
+\af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\s1\qc \li0\ri0\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs20\alang1025
+\ltrch\fcs0 \b\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 1;}{\s2\qj \li0\ri0\sa120\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs20\alang1025
+\ltrch\fcs0 \b\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon0 \snext0 heading 2;}{\s7\ql \fi-720\li720\ri0\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel6\adjustright\rin0\lin720\itap0 \rtlch\fcs1
+\ab\af1\afs24\alang1025 \ltrch\fcs0 \b\f1\fs24\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon0 \snext0 heading 7;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{
+\s15\qj \li0\ri0\sa220\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext15 \ssemihidden footnote text;}{\*\cs16
+\additive \rtlch\fcs1 \af0 \ltrch\fcs0 \super \sbasedon10 \ssemihidden footnote reference;}{
+\s17\qj \li2880\ri0\widctlpar\phpg\posxc\posyb\absh-1980\absw7920\dxfrtext180\dfrmtxtx180\dfrmtxty0\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0
+\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 envelope address;}{\s18\qj \li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs16\alang1025 \ltrch\fcs0
+\scaps\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext18 envelope return;}{\s19\qj \li0\ri0\widctlpar\tqc\tx4680\tqr\tx9360\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025
+\ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext19 header;}{\s20\qj \li0\ri0\widctlpar\tqc\tx4680\tqr\tx9360\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0
+\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext20 footer;}{\*\cs21 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 page number;}{\s22\qj \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
+\rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon23 \snext22 Num Continue;}{\s23\qj \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
+\af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext23 Body Text;}{\s24\qj \li0\ri0\sa120\widctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls3\outlinelevel0\adjustright\rin0\lin0\itap0
+\rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext22 Legal2_L1;}{\s25\qj \fi720\li0\ri0\sa120\widctlpar
+\jclisttab\tx1080\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl1\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon24 \snext22 Legal2_L2;}{
+\s26\qj \fi1440\li0\ri0\sa120\widctlpar\jclisttab\tx1800\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl2\outlinelevel2\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033
+\sbasedon25 \snext22 Legal2_L3;}{\s27\qj \fi2160\li0\ri0\sa120\widctlpar\jclisttab\tx2880\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl3\outlinelevel3\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0
+\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon26 \snext22 Legal2_L4;}{\s28\qj \fi2880\li0\ri0\sa120\widctlpar\jclisttab\tx3600\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl4\outlinelevel4\adjustright\rin0\lin0\itap0 \rtlch\fcs1
+\af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon27 \snext22 Legal2_L5;}{\s29\qj \fi3600\li0\ri0\sa120\widctlpar
+\jclisttab\tx4320\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl5\outlinelevel5\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon28 \snext22 Legal2_L6;}{
+\s30\qj \fi4320\li0\ri0\sa120\widctlpar\jclisttab\tx5040\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl6\outlinelevel6\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033
+\sbasedon29 \snext22 Legal2_L7;}{\s31\qj \fi720\li0\ri0\sa120\widctlpar\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl7\outlinelevel7\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0
+\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon30 \snext22 Legal2_L8;}{\s32\qj \fi1440\li0\ri0\sa120\widctlpar\jclisttab\tx2160\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl8\outlinelevel8\adjustright\rin0\lin0\itap0 \rtlch\fcs1
+\af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon31 \snext22 Legal2_L9;}{\*\cs33 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\caps\cf2 \sbasedon10 zzmpTCEntryL1;}{\*\cs34 \additive \rtlch\fcs1 \ab\af0
+\ltrch\fcs0 \b\cf2 \sbasedon10 zzmpTCEntryL2;}{\*\cs35 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\cf2 \sbasedon10 zzmpTCEntryL3;}{\*\cs36 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\cf2 \sbasedon10 zzmpTCEntryL4;}{\*\cs37 \additive \rtlch\fcs1 \af0
+\ltrch\fcs0 \cf2 \sbasedon10 zzmpTCEntryL5;}{\*\cs38 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \cf2 \sbasedon10 zzmpTCEntryL6;}{\*\cs39 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \cf2 \sbasedon10 zzmpTCEntryL7;}{\*\cs40 \additive \rtlch\fcs1 \af0 \ltrch\fcs0
+\cf2 \sbasedon10 zzmpTCEntryL8;}{\*\cs41 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \cf2 \sbasedon10 zzmpTCEntryL9;}{\s42\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
+\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon0 \snext42 Normal (Web);}{\*\cs43 \additive \rtlch\fcs1 \af37\afs17 \ltrch\fcs0 \f37\fs17 \sbasedon10 bodytext1;}{\*\cs44 \additive \rtlch\fcs1 \af0
+\ltrch\fcs0 \ul\cf2 \sbasedon10 Hyperlink;}{\s45\qj \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs20\alang1025 \ltrch\fcs0 \b\f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033
+\sbasedon0 \snext45 Body Text 2;}{\*\cs46 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf12 \sbasedon10 FollowedHyperlink;}{\*\cs47 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1\cf0 \sbasedon10 text1;}{\*\cs48 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b
+\sbasedon10 \styrsid684987 Strong;}{\s49\qj \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af36\afs16\alang1025 \ltrch\fcs0 \f36\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033
+\sbasedon0 \snext49 \slink50 \ssemihidden \styrsid4745031 Balloon Text;}{\*\cs50 \additive \rtlch\fcs1 \af36\afs16 \ltrch\fcs0 \f36\fs16\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 \slink49 \slocked \styrsid4745031 Balloon Text Char;}}
+{\*\latentstyles\lsdstimax156\lsdlockeddef0{\lsdlockedexcept Normal;heading 1;heading 2;heading 3;heading 4;heading 5;heading 6;heading 7;heading 8;heading 9;toc 1;toc 2;toc 3;toc 4;toc 5;toc 6;toc 7;toc 8;toc 9;caption;Title;Subtitle;Strong;Emphasis;}}
+{\*\listtable{\list\listtemplateid1586421402{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\'00;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li360
+\jclisttab\tx360\lin360 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03\'00.\'01;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li1260\jclisttab\tx1260\lin1260
+}{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-720\li2520\jclisttab\tx2520\lin2520 }{\listlevel
+\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-720\li3420\jclisttab\tx3420\lin3420 }{\listlevel
+\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'04);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \loch\af1\hich\af1\dbch\af0\fbias0 \fi-1080\li4680\jclisttab\tx4680\lin4680 }{\listlevel
+\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0b\'00.\'01.\'02.\'03.\'04.\'05;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1080\li5580
+\jclisttab\tx5580\lin5580 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\rtlch\fcs1 \af0 \ltrch\fcs0
+\fbias0 \fi-1440\li6840\jclisttab\tx6840\lin6840 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07;}{\levelnumbers
+\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1440\li7740\jclisttab\tx7740\lin7740 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1800\li9000\jclisttab\tx9000\lin9000 }{\listname Legal22;}\listid187183174}{\list\listtemplateid-1494708814
+{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af1\afs22 \ltrch\fcs0
+\b\i0\strike0\outl0\shad0\embo0\impr0\caps\v0\f1\fs22\ulnone\cf0\nosupersub\animtext0\striked0\fbias0 \s24\jclisttab\tx360 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'03\'00.\'01;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \ab0\ai0\af1\afs22 \ltrch\fcs0 \b0\i0\strike0\outl0\shad0\embo0\impr0\caps0\v0\f1\fs22\ulnone\cf0\nosupersub\animtext0\striked0\fbias0 \s25\fi720\jclisttab\tx1080 }{\listlevel\levelnfc4\levelnfcn4
+\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'02);}{\levelnumbers\'02;}\rtlch\fcs1 \ab0\ai0\af0\afs20 \ltrch\fcs0
+\b0\i0\strike0\outl0\shad0\embo0\impr0\caps0\v0\f0\fs20\ulnone\cf0\nosupersub\animtext0\striked0\fbias0 \s26\fi1440\jclisttab\tx1800 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'03(\'03);}{\levelnumbers\'02;}\rtlch\fcs1 \ab0\ai0\af0\afs20 \ltrch\fcs0 \b0\i0\strike0\outl0\shad0\embo0\impr0\caps0\v0\f0\fs20\ulnone\cf0\nosupersub\animtext0\striked0\fbias0 \s27\fi2160\jclisttab\tx2880 }{\listlevel\levelnfc0\levelnfcn0\leveljc0
+\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'04);}{\levelnumbers\'02;}\rtlch\fcs1 \ab0\ai0\af0\afs24 \ltrch\fcs0
+\b0\i0\strike0\outl0\shad0\embo0\impr0\scaps0\caps0\v0\f0\fs24\ulnone\cf0\nosupersub\animtext0\striked0\fbias0 \s28\fi2880\jclisttab\tx3600 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af0\afs24 \ltrch\fcs0 \b0\i0\strike0\outl0\shad0\embo0\impr0\scaps0\caps0\v0\f0\fs24\ulnone\cf0\nosupersub\animtext0\striked0\fbias0 \s29\fi3600\jclisttab\tx4320 }{\listlevel\levelnfc2\levelnfcn2
+\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af0\afs24 \ltrch\fcs0
+\b0\i0\strike0\outl0\shad0\embo0\impr0\scaps0\caps0\v0\f0\fs24\ulnone\cf0\nosupersub\animtext0\striked0\fbias0 \s30\fi4320\jclisttab\tx5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'03(\'07);}{\levelnumbers\'02;}\rtlch\fcs1 \ab0\ai0\af0\afs24 \ltrch\fcs0 \b0\i0\strike0\outl0\shad0\embo0\impr0\scaps0\caps0\v0\f0\fs24\ulnone\cf0\nosupersub\animtext0\striked0\fbias0 \s31\fi720\jclisttab\tx1440 }{\listlevel\levelnfc2\levelnfcn2
+\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'08);}{\levelnumbers\'02;}\rtlch\fcs1 \ab0\ai0\af0\afs24 \ltrch\fcs0
+\b0\i0\strike0\outl0\shad0\embo0\impr0\scaps0\caps0\v0\f0\fs24\ulnone\cf0\nosupersub\animtext0\striked0\fbias0 \s32\fi1440\jclisttab\tx2160 }{\listname Legal2;}\listid589778925}{\list\listtemplateid1095382408{\listlevel\levelnfc0\levelnfcn0\leveljc0
+\leveljcn0\levelfollow0\levelstartat3\levelspace0\levelindent0{\leveltext\'01\'00;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-405\li405\jclisttab\tx405\lin405 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0
+\levelstartat2\levelspace0\levelindent0{\leveltext\'03\'00.\'01;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-405\li688\jclisttab\tx688\lin688 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
+\levelindent0{\leveltext\'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-720\li1286\jclisttab\tx1286\lin1286 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
+{\leveltext\'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-720\li1569\jclisttab\tx1569\lin1569 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
+{\leveltext\'09\'00.\'01.\'02.\'03.\'04;}{\levelnumbers\'01\'03\'05\'07\'09;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-720\li1852\jclisttab\tx1852\lin1852 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0
+\levelindent0{\leveltext\'0b\'00.\'01.\'02.\'03.\'04.\'05;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1080\li2495\jclisttab\tx2495\lin2495 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0
+\levelstartat1\levelspace0\levelindent0{\leveltext\'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1080\li2778\jclisttab\tx2778\lin2778 }{\listlevel\levelnfc0\levelnfcn0\leveljc0
+\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1440\li3421\jclisttab\tx3421\lin3421 }
+{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0
+\fi-1440\li3704\jclisttab\tx3704\lin3704 }{\listname ;}\listid899175523}{\list\listtemplateid-53593918{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat4\levelspace0\levelindent0{\leveltext\'01\'00;}{\levelnumbers\'01;}
+\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03\'00.\'01;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \af0
+\ltrch\fcs0 \fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\rtlch\fcs1 \af0 \ltrch\fcs0
+\fbias0 \fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0
+\fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'09\'00.\'01.\'02.\'03.\'04;}{\levelnumbers\'01\'03\'05\'07\'09;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0
+\fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0b\'00.\'01.\'02.\'03.\'04.\'05;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\rtlch\fcs1 \af0
+\ltrch\fcs0 \fbias0 \fi-1080\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06;}{\levelnumbers
+\'01\'03\'05\'07\'09\'0b\'0d;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1080\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext
+\'0f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1440\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1
+\levelspace0\levelindent0{\leveltext\'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1440\li1440\jclisttab\tx1440\lin1440 }{\listname ;}\listid1303119334}
+{\list\listtemplateid-1282876056{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat6\levelspace0\levelindent0{\leveltext\'01\'00;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\fbias0 \fi-360\li360\jclisttab\tx360\lin360
+}{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03\'00.\'01;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc0
+\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0
+\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0
+\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'09\'00.\'01.\'02.\'03.\'04;}{\levelnumbers\'01\'03\'05\'07\'09;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0
+\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0b\'00.\'01.\'02.\'03.\'04.\'05;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1080\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc0
+\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1080\li1080\jclisttab\tx1080\lin1080
+}{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0
+\fi-1440\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08;}{\levelnumbers
+\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1440\li1440\jclisttab\tx1440\lin1440 }{\listname ;}\listid1717701764}}{\*\listoverridetable{\listoverride\listid589778925\listoverridecount0\ls1}{\listoverride\listid899175523
+\listoverridecount0\ls2}{\listoverride\listid589778925\listoverridecount0\ls3}{\listoverride\listid1303119334\listoverridecount0\ls4}{\listoverride\listid1717701764\listoverridecount0\ls5}}{\*\rsidtbl \rsid11936\rsid88914\rsid265398\rsid684987\rsid1250516
+\rsid1846192\rsid2128574\rsid2506696\rsid3227523\rsid3348545\rsid3741615\rsid3868789\rsid3882300\rsid4082071\rsid4201573\rsid4354079\rsid4739009\rsid4745031\rsid5123650\rsid5189883\rsid5206122\rsid5249949\rsid5272592\rsid5397688\rsid5708036\rsid5796271
+\rsid5834546\rsid5907843\rsid5924216\rsid6182972\rsid6253249\rsid6776828\rsid6902420\rsid7296646\rsid7562558\rsid7621291\rsid7692188\rsid7735196\rsid7879489\rsid8065525\rsid8198028\rsid8260678\rsid8284163\rsid8537681\rsid8550639\rsid8985796\rsid9054116
+\rsid9119910\rsid9445259\rsid9722996\rsid9767071\rsid9795825\rsid9837062\rsid9900246\rsid9908984\rsid9969717\rsid10094441\rsid10252196\rsid10296700\rsid10425897\rsid10430804\rsid10703085\rsid10712577\rsid10769984\rsid10892103\rsid11489578\rsid11875457
+\rsid11883158\rsid12134897\rsid12517589\rsid12536041\rsid12598188\rsid12654351\rsid13001579\rsid13334799\rsid13654851\rsid13966861\rsid13969160\rsid14229932\rsid14902293\rsid14902778\rsid15223633\rsid15497150\rsid16004039\rsid16137090\rsid16201318
+\rsid16217207\rsid16322833\rsid16322878\rsid16406037}{\*\generator Microsoft Word 11.0.8134;}{\info{\title iKNOWLEDGE, INC}{\author Palmer & Dodge LLP}{\operator Grant Drake}{\creatim\yr2007\mo1\dy28\hr18\min29}{\revtim\yr2007\mo7\dy22\hr20}
+{\printim\yr2006\mo5\dy31\hr11\min1}{\version5}{\edmins35}{\nofpages4}{\nofwords1407}{\nofchars8024}{\*\company Palmer & Dodge LLP}{\nofcharsws9413}{\vern24611}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/word
+ml}{\xmlns2 urn:schemas-microsoft-com:office:smarttags}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect
+\widowctrl\ftnbj\aenddoc\donotembedsysfont0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dgmargin
+\dghspace100\dgvspace180\dghorigin1440\dgvorigin1440\dghshow0\dgvshow0\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\nolnhtadjtbl\nojkernpunct\rsidroot3741615 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0{\*\docvar {Document}{DOCUMENT}}
+{\*\docvar {zzmpFixedCurrentTOCScheme}{Legal2}}{\*\docvar {zzmpFixedCurScheme}{Legal2}}{\*\ftnsep \ltrpar \pard\plain \ltrpar\qj \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025
+\ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16322878 \chftnsep
+\par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\qj \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0
+\ltrch\fcs0 \insrsid16322878 \chftnsep
+\par (continued...)
+\par }}{\*\ftncn \ltrpar \pard\plain \ltrpar\qr \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0
+\ltrch\fcs0 \insrsid16322878 (continued...)
+\par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\qj \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0
+\ltrch\fcs0 \insrsid16322878 \chftnsep
+\par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\qj \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0
+\ltrch\fcs0 \insrsid16322878 \chftnsepc
+\par }}\ltrpar \sectd \ltrsect\binfsxn261\binsxn261\psz1\sbknone\linex0\footery432\endnhere\sectlinegrid272\sectdefaultcl\sectrsid3868789\sftnbj {\footerr \ltrpar \pard\plain \ltrpar\s20\qc \li0\ri0\widctlpar
+\tqc\tx4680\tqr\tx9360\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3868789 -}{\field{\*\fldinst {
+\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \cs21\f1\fs22\insrsid3868789\charrsid16004039 PAGE }}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \cs21\f1\fs22\lang1024\langfe1024\noproof\insrsid1846192 1}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1
+\af0 \ltrch\fcs0 \insrsid3868789 -
+\par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}
+{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8
+\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar
+\s2\qc \li0\ri0\sa120\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid684987 \rtlch\fcs1 \ab\af0\afs20\alang1025 \ltrch\fcs0 \b\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\rtlch\fcs1
+\af1\afs22 \ltrch\fcs0 \f1\fs22\ul\insrsid15497150 KIWI}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\ul\insrsid1846192 NOVA }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\ul\insrsid9767071\charrsid9767071 LTD
+\par }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\ul\insrsid5272592 PERSONAL}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\ul\insrsid13001579 }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\ul\insrsid9767071 LICENCE}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0
+\f1\fs22\ul\insrsid9767071\charrsid9767071 AND SUPPORT AGREEMENT}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\ul\insrsid13966861\charrsid9767071
+\par }\pard\plain \ltrpar\qj \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9767071 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs22
+\ltrch\fcs0 \f1\fs22\lang2057\langfe1033\langnp2057\insrsid9767071\charrsid9767071
+\par }\pard\plain \ltrpar\s45\qj \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14229932 \rtlch\fcs1 \ab\af1\afs20\alang1025 \ltrch\fcs0 \b\f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1
+\af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 NOTICE TO USER: PLEASE READ THIS }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid4739009 AGREEMENT}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 CAREFULLY. }{
+\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid12598188 BY CLICKING \'93I ACCEPT\'94 AND/OR }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 BY DOWNLOADING AND/OR USING ALL OR ANY PORTION OF THE SOFTWARE }{\rtlch\fcs1 \af1\afs22
+\ltrch\fcs0 \fs22\insrsid12598188 YOU }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9969717\charrsid9767071 (\'93LICEN}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9969717 S}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9969717\charrsid9767071
+EE\'94)}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9969717 }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid12598188 ACCEPT}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 THE FOLLOWING TERMS FROM }{\rtlch\fcs1
+\af1\afs22 \ltrch\fcs0 \fs22\insrsid1846192 KIWINOVA }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 LTD OF }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid1846192 24 AEGEAN APARTMENTS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0
+\fs22\insrsid9767071\charrsid9767071 ,}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid1846192 19 WESTERN GATEWAY,}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 LONDON }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0
+\fs22\insrsid15497150 E16 1}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid1846192 AR}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 (\'93}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid1846192 KIWINOVA}{\rtlch\fcs1
+\af1\afs22 \ltrch\fcs0 \fs22\insrsid12598188 \'94). }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid11489578 YOU}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid12598188 AGREE TO BE BOUND}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0
+\fs22\insrsid9767071\charrsid9767071 BY ALL THE TERMS AND CONDITIONS OF THIS }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid4739009 AGREEMENT}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071
+. YOU AGREE THAT IT IS ENFORCEABLE AS IF IT WERE A WRITTEN NEGOTIATED }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid4739009 AGREEMENT}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9969717 SIGNED BY}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0
+\fs22\insrsid16406037 YOU}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 . IF }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9969717 YOU}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071
+ DO NOT AGREE TO THE TERMS OF THIS }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid4739009 AGREEMENT}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 DO NOT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid11489578 CLICK \'93
+I ACCEPT\'94 AND DO NOT DOWNLOAD OR }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 USE THE SOFTWARE. }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid14229932\charrsid9767071
+\par }\pard \ltrpar\s45\qj \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid12598188\charrsid9767071
+\par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \b\caps\f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid13966861\charrsid9767071 \hich\af1\dbch\af0\loch\f1 1.\tab}}\pard\plain \ltrpar
+\s24\qj \fi-567\li567\ri0\sa120\keepn\widctlpar\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\ls3\outlinelevel0\adjustright\rin0\lin567\itap0\pararsid6776828 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0
+\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \b\f1\fs22\insrsid13966861\charrsid9767071 DEFINITIONS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid14902293 \hich\af1\dbch\af0\loch\f1 1.1\tab}}\pard\plain \ltrpar\s25\qj \fi-567\li567\ri0\sa120\widctlpar
+\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin567\itap0\pararsid5189883 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs22
+\ltrch\fcs0 \f1\fs22\insrsid14902293 \'93Agreement\'94 means this Licence and Support Agreement.
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid13966861\charrsid9767071 \hich\af1\dbch\af0\loch\f1 1.2\tab}}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0
+\f1\fs22\insrsid13966861\charrsid9767071 \'93Documentation\'94 means the electronic user information }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid14902778\charrsid9767071 supplied }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0
+\f1\fs22\insrsid13966861\charrsid9767071 with the Software}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10252196 .
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid10252196\charrsid9767071 \hich\af1\dbch\af0\loch\f1 1.3\tab}}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0
+\f1\fs22\insrsid10252196\charrsid9767071 \'93Effective Date\'94 means the date }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid16406037 on which the Licensee accepts this Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid7562558 .
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid10252196\charrsid9767071 \hich\af1\dbch\af0\loch\f1 1.4\tab}}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0
+\f1\fs22\insrsid10252196\charrsid9767071 \'93Minimum Requirements\'94 means a min}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid12598188 imum technical specification of}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10252196\charrsid9767071
+ the PC or laptop on which the Software is used which is required to enable the Software to function}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid12598188 , as set out in the Documentation}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0
+\f1\fs22\insrsid10252196\charrsid9767071 .}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10252196
+\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid12598188\charrsid9767071 \hich\af1\dbch\af0\loch\f1 1.5\tab}}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0
+\f1\fs22\insrsid12598188\charrsid9767071 \'93Software\'94 means the }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid12598188 object code form }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid12598188\charrsid9767071 of }{\rtlch\fcs1 \af1\afs22
+\ltrch\fcs0 \f1\fs22\insrsid12598188 the }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843 personal}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid12598188 version of the software product entitled Testdriven.net}{\rtlch\fcs1 \af1\afs22
+\ltrch\fcs0 \f1\fs22\insrsid12598188\charrsid9767071 .}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid12598188
+\par }\pard\plain \ltrpar\s22\qj \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5907843 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0
+\ltrch\fcs0 \insrsid5907843\charrsid5907843
+\par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \b\caps\f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid13966861\charrsid9767071 \hich\af1\dbch\af0\loch\f1 2.\tab}}\pard\plain \ltrpar
+\s24\qj \li0\ri0\sa120\keepn\widctlpar\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\ls3\outlinelevel0\adjustright\rin0\lin0\itap0\pararsid6776828 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
+\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \b\f1\fs22\insrsid13966861\charrsid9767071 GRANT OF RIGHTS; RESTRICTIONS