From d4797da9509f4efd1decf558a59d8f76015579ce Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Sat, 3 Mar 2007 13:24:11 +0000
Subject: [PATCH] Unit tests for PDFForm. Some cleanup in PDFForm, and minor
 changes to make it easier to test.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@13206 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5Form/PDFForm.py            |  82 ++--
 product/ERP5Form/tests/data/test_1.pdf | Bin 0 -> 25921 bytes
 product/ERP5Form/tests/data/test_1.sla | 582 +++++++++++++++++++++++++
 product/ERP5Form/tests/testPDFForm.py  | 130 ++++++
 4 files changed, 755 insertions(+), 39 deletions(-)
 create mode 100644 product/ERP5Form/tests/data/test_1.pdf
 create mode 100644 product/ERP5Form/tests/data/test_1.sla
 create mode 100644 product/ERP5Form/tests/testPDFForm.py

diff --git a/product/ERP5Form/PDFForm.py b/product/ERP5Form/PDFForm.py
index 2091b26e73..dfa2c1f1a1 100644
--- a/product/ERP5Form/PDFForm.py
+++ b/product/ERP5Form/PDFForm.py
@@ -52,10 +52,10 @@ try:
 except ImportError:
   SUPPORTS_WEBDAV_LOCKS = 0
 
-# FIXME: Programs linked against mandriva libgcj v 3.4.0 ave a strange
-# issue that make them impossible to popen within zope.
-# That's why we do not use the 'real' pdftk but a replacement program,
-# pdftk-emulation available from nexedi's RPM repositories.
+# Programs linked against mandriva libgcj v 3.4.0 ave a strange issue that make
+# them impossible to popen within zope.  That's why we do not use the 'real'
+# pdftk but a replacement program, pdftk-emulation available from nexedi's RPM
+# repositories.
 PDFTK_EXECUTABLE = "pdftk-emulation"
 
 # With python >= 2.4 and zope >= 2.7.8, pdftk-emulation is no longer needed
@@ -71,9 +71,8 @@ if python_version >= 204 and zope_version >= 20708:
   PDFTK_EXECUTABLE = "pdftk"
 
 
-class PDFTk :
-  """
-  A class to wrapp calls to pdftk executable, found at
+class PDFTk:
+  """A class to wrapp calls to pdftk executable, found at
     http://www.accesspdf.com/pdftk/
   """
   def catPages(self, pdfFile, cat_option) :
@@ -193,6 +192,7 @@ class PDFTk :
     fdf += "trailer\x0d<<\x0d/Root 1 0 R \x0d\x0d>>\x0d%%EOF\x0d\x0a"
     return fdf
 
+
 # Constructors
 manage_addPDFForm = DTMLFile("dtml/PDFForm_add", globals())
 def addPDFForm(self, id, title="", pdf_file=None,  REQUEST=None):
@@ -203,7 +203,7 @@ def addPDFForm(self, id, title="", pdf_file=None,  REQUEST=None):
   # upload content
   if pdf_file:
     self._getOb(id).manage_upload(pdf_file)
-    self._getOb(id).content_type="application/pdf"
+    self._getOb(id).content_type = "application/pdf"
 
   if REQUEST :
     u = REQUEST['URL1']
@@ -211,9 +211,9 @@ def addPDFForm(self, id, title="", pdf_file=None,  REQUEST=None):
       u = "%s/%s" % (u, quote(id))
     REQUEST.RESPONSE.redirect(u+'/manage_main')
 
+
 class CalculatedValues :
-  """
-  This class holds a reference to calculated values, for use in TALES,
+  """This class holds a reference to calculated values, for use in TALES,
   because in PDF Form filling, there is lots of references to others cell
   values (sums ...). This class will be in TALES context under the key 'cell'
 
@@ -237,21 +237,37 @@ class CalculatedValues :
       # doesn't complain that NoneType doesn't support + when a1 not found
     return self.__values[attr]
   __getattr__ = __getitem__
-
 allow_class(CalculatedValues)
 
+
+class CircularReferencyError(ValueError):
+  """A circular reference is found trying to evaluate cell TALES."""
+
+
 class EmptyERP5PdfFormError(Exception):
   """Error thrown when you try to display an empty Pdf. """
 allow_class(EmptyERP5PdfFormError)
 
+
 class PDFForm(File):
-  """
-    This class allows to fill PDF Form with TALES expressions,
+  """This class allows to fill PDF Form with TALES expressions,
     using a TALES expression for each cell.
+
+  TODO:
+    * cache compiled TALES
+    * set _v_errors when setting invalid TALES (setCellTALES can raise, but
+      not doEditCells)
   """
+
   meta_type = "ERP5 PDF Form"
   icon = "www/PDFForm.png"
 
+  # Those 2 are ugly names, but we keep compatibility
+  # the page range we want to print (a TALES expr)
+  __page_range__ = ''
+  # the method to format values (a TALES expr)
+  __format_method__ = ''
+
   # Declarative Security
   security = ClassSecurityInfo()
 
@@ -277,21 +293,16 @@ class PDFForm(File):
       filter(lambda option:option['label'] != "View", File.manage_options)
   )
 
+  # XXX This non thread-safeness is probably a problem under high load
   pdftk = PDFTk()
 
-  def __init__ (self, id, title, pdf_file) :
+  def __init__ (self, id, title='', pdf_file=''):
     # holds all the cell informations, even those not related to this form
-    self.all_cells        = PersistentMapping()
+    self.all_cells = PersistentMapping()
     # holds the cells related to this pdf form
-    self.cells            = PersistentMapping()
-    # the page range we want to print
-    self.__page_range__ = ""
-    # the method to format values
-    self.__format_method__ = ""
+    self.cells = PersistentMapping()
 
-    if not pdf_file :
-      raise ValueError ("The pdf form file should not be empty")
-    # File constructor will call manage_upload, so we don't need to call it
+    # File constructor will set the file content
     File.__init__(self, id, title, pdf_file)
 
   security.declareProtected(Permissions.ManagePortal, 'manage_upload')
@@ -389,7 +400,7 @@ class PDFForm(File):
       return
     raise ValueError, "Unable to download from any url from the "\
                       "`download_url` property."
-    
+
   security.declareProtected(Permissions.ManagePortal,
                            'deletePdfContent')
   def deletePdfContent(self) :
@@ -425,7 +436,7 @@ class PDFForm(File):
     return pdf
 
   security.declareProtected(Permissions.ManagePortal, 'doEditCells')
-  def doEditCells(self, REQUEST):
+  def doEditCells(self, REQUEST, RESPONSE=None):
     """ This is the action to the 'Edit Cell TALES' tab. """
     if SUPPORTS_WEBDAV_LOCKS and self.wl_isLocked():
       raise ResourceLockedError, "File is locked via WebDAV"
@@ -434,12 +445,9 @@ class PDFForm(File):
       self.setCellTALES(k, REQUEST.get(str(k), v))
     self.__format_method__ = REQUEST.get("__format_method__")
     self.__page_range__ = REQUEST.get("__page_range__")
-
-    message = "Saved changes."
-    if getattr(self, '_v_warnings', None):
-      message = ("<strong>Warning:</strong> <i>%s</i>"
-                % '<br>'.join(self._v_warnings))
-    return self.manage_cells(manage_tabs_message=message)
+    
+    if RESPONSE:
+      return self.manage_cells(manage_tabs_message="Saved changes.")
 
   security.declareProtected(Permissions.View, 'generatePDF')
   def generatePDF(self, REQUEST=None, RESPONSE=None, *args, **kwargs) :
@@ -450,8 +458,7 @@ class PDFForm(File):
     context = { 'here' : self.aq_parent,
                 'context' : self.aq_parent,
                 'request' : REQUEST }
-    if hasattr(self, "__format_method__") \
-            and self.__format_method__ not in ('', None) :
+    if self.__format_method__:
       compiled_tales = getEngine().compile(self.__format_method__)
       format_method = getEngine().getContext(context).evaluate(compiled_tales)
       # try to support both method name and method object
@@ -465,7 +472,7 @@ class PDFForm(File):
             'format method (%r) is not callable' % format_method)
     data = str(self.data)
     pdf = self.pdftk.fillFormWithDict(data, values)
-    if self.__page_range__ not in ('', None) :
+    if self.__page_range__:
       compiled_tales = getEngine().compile(self.__page_range__)
       page_range = getEngine().getContext(context).evaluate(compiled_tales)
       if page_range :
@@ -517,8 +524,8 @@ class PDFForm(File):
           uncalculated_values.remove(cell_name)
           values[cell_name] = value
       if len(uncalculated_values) == uncalculated_values_len :
-        raise ValueError, "Circular reference: unable to evaluate cells " \
-              + `uncalculated_values`
+        raise CircularReferencyError("Unable to evaluate cells: %r"
+                                       % (uncalculated_values, ))
 
   security.declareProtected(Permissions.View, 'getCellNames')
   def getCellNames(self, REQUEST=None) :
@@ -579,9 +586,6 @@ class PDFForm(File):
   security.declareProtected(Permissions.View, 'getFormatMethodTALES')
   def getFormatMethodTALES(self):
     """ returns the TALES expression for the format method attribute """
-    # backward compat
-    if not hasattr(self, "__format_method__") :
-      self.__format_method__ = ""
     return self.__format_method__
 
   security.declareProtected(Permissions.ManagePortal, 'setFormatMethodTALES')
diff --git a/product/ERP5Form/tests/data/test_1.pdf b/product/ERP5Form/tests/data/test_1.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..a1b936fdeef2c4b6c2ec0815be321897731e53af
GIT binary patch
literal 25921
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

literal 0
HcmV?d00001

diff --git a/product/ERP5Form/tests/data/test_1.sla b/product/ERP5Form/tests/data/test_1.sla
new file mode 100644
index 0000000000..16c54d99fa
--- /dev/null
+++ b/product/ERP5Form/tests/data/test_1.sla
@@ -0,0 +1,582 @@
+<SCRIBUSUTF8NEW Version="1.3.0" >
+ <DOCUMENT HalfRes="1" MAGMAX="800" MAJGRID="100" ABSTSPALTEN="11" ScratchBottom="20" AUTOCHECK="0" LANGUAGE="French" DPIn2="" DPgam="0" HCMS="1" UnderlineWidth="-1" TabFill="" DGAP="0" ORIENTATION="0" PASPECT="1" WIDTH="1" POLYR="0" SHOWLINK="0" MINWORDLEN="3" UnderlinePos="-1" VTIEFSC="100" DOCLANGINFO="" COMMENTS="" AutoSaveTime="600000" POLYS="0" GuideRad="10" TITLE="" KEYWORDS="" TabWidth="36" DSIZE="12" AUTOSPALTEN="1" PAGESIZE="A4" STIL="1" PEN="Black" POLYC="4" SnapToGuides="0" GROUPC="3" DOCFORMAT="" DOCDATE="" BORDERTOP="9" currentProfile="PostScript" MARGC="#0000ff" EndArrow="0" SHOWBASE="0" SHOWGRID="0" SnapToGrid="0" GUIDELOCK="0" DIMo="1" DIPr="0" StrikeThruPos="-1" WIDTHLINE="1" DPuse="0" DPSo="0" DOCSOURCE="" FIRSTLEFT="1" FIRSTNUM="1" GuideC="#000080" BRUSH="Black" StartArrow="0" ScratchRight="100" POLYF="0.5" SHOWMARGIN="1" DPbla="1" StrikeThruWidth="-1" VHOCHSC="100" DOCTYPE="" BORDERBOTTOM="40" BRUSHSHADE="100" StrokeText="Black" BASEGRID="14.4" VTIEF="33" DOCCONTRIB="" DOCRELATION="" PICTSCX="1" CPICT="White" PENLINE="Black" AutoSave="0" BASEO="0" DOCIDENT="" PICTSCY="1" MAGSTEP="25" ScratchTop="20" POLYFD="0" AUTOL="20" PUBLISHER="" ANZPAGES="1" PSCALE="1" LINESHADE="100" HYCOUNT="2" DIMo2="1" AUTHOR="" UNITS="0" BORDERRIGHT="9" RANDF="0" MAJORC="#00ff00" PENSHADE="100" PENTEXT="Black" GRAB="4" SHOWGUIDES="1" DPPr="" DPMo="" PAGEHEIGHT="842" PAGEWIDTH="595" BACKG="1" GuideZ="10" MINGRID="20" VHOCH="33" DOCCOVER="" DCOL="1" EmbeddedPath="0" SHOWPICT="1" SHOWFRAME="1" AUTOMATIC="1" ALAYER="0" DOCRIGHTS="" PICTSHADE="100" ScratchLeft="100" DPIn="" VKAPIT="75" DFONT="Blue Highway   Bold" BORDERLEFT="9" PAGEC="#ffffff" BaseC="#c0c0c0" MINORC="#00ff00" MAGMIN="10" STILLINE="1" SHOWControl="0" >
+  <CheckProfile checkTransparency="1" autoCheck="1" minResolution="144" checkOverflow="1" ignoreErrors="0" checkRasterPDF="1" checkResolution="1" checkGlyphs="1" Name="PDF/X-3" checkAnnotations="1" checkPictures="1" checkOrphans="1" />
+  <CheckProfile checkTransparency="1" autoCheck="1" minResolution="72" checkOverflow="1" ignoreErrors="0" checkRasterPDF="1" checkResolution="1" checkGlyphs="1" Name="PDF·1.3" checkAnnotations="0" checkPictures="1" checkOrphans="1" />
+  <CheckProfile checkTransparency="0" autoCheck="1" minResolution="72" checkOverflow="1" ignoreErrors="0" checkRasterPDF="1" checkResolution="1" checkGlyphs="1" Name="PDF·1.4" checkAnnotations="0" checkPictures="1" checkOrphans="1" />
+  <CheckProfile checkTransparency="1" autoCheck="1" minResolution="72" checkOverflow="1" ignoreErrors="0" checkRasterPDF="1" checkResolution="1" checkGlyphs="1" Name="PostScript" checkAnnotations="0" checkPictures="1" checkOrphans="1" />
+  <COLOR RGB="#f0f8ff" CMYK="#0f070000" NAME="AliceBlue" />
+  <COLOR RGB="#faebd7" CMYK="#000f2305" NAME="AntiqueWhite" />
+  <COLOR RGB="#ffefdb" CMYK="#00102400" NAME="AntiqueWhite1" />
+  <COLOR RGB="#eedfcc" CMYK="#000f2211" NAME="AntiqueWhite2" />
+  <COLOR RGB="#cdc0b0" CMYK="#000d1d32" NAME="AntiqueWhite3" />
+  <COLOR RGB="#8b8378" CMYK="#00081374" NAME="AntiqueWhite4" />
+  <COLOR RGB="#7fffd4" CMYK="#80002b00" NAME="Aquamarine" />
+  <COLOR RGB="#7fffd4" CMYK="#80002b00" NAME="Aquamarine1" />
+  <COLOR RGB="#76eec6" CMYK="#78002811" NAME="Aquamarine2" />
+  <COLOR RGB="#66cdaa" CMYK="#67002332" NAME="Aquamarine3" />
+  <COLOR RGB="#458b74" CMYK="#46001774" NAME="Aquamarine4" />
+  <COLOR RGB="#f0ffff" CMYK="#0f000000" NAME="Azure" />
+  <COLOR RGB="#f0ffff" CMYK="#0f000000" NAME="Azure1" />
+  <COLOR RGB="#e0eeee" CMYK="#0e000011" NAME="Azure2" />
+  <COLOR RGB="#c1cdcd" CMYK="#0c000032" NAME="Azure3" />
+  <COLOR RGB="#838b8b" CMYK="#08000074" NAME="Azure4" />
+  <COLOR RGB="#f5f5dc" CMYK="#0000190a" NAME="Beige" />
+  <COLOR RGB="#ffe4c4" CMYK="#001b3b00" NAME="Bisque" />
+  <COLOR RGB="#ffe4c4" CMYK="#001b3b00" NAME="Bisque1" />
+  <COLOR RGB="#eed5b7" CMYK="#00193711" NAME="Bisque2" />
+  <COLOR RGB="#cdb79e" CMYK="#00162f32" NAME="Bisque3" />
+  <COLOR RGB="#8b7d6b" CMYK="#000e2074" NAME="Bisque4" />
+  <COLOR RGB="#000000" CMYK="#000000ff" NAME="Black" />
+  <COLOR RGB="#ffebcd" CMYK="#00143200" NAME="BlanchedAlmond" />
+  <COLOR RGB="#0000ff" CMYK="#ffff0000" NAME="Blue" />
+  <COLOR RGB="#0000ff" CMYK="#ffff0000" NAME="Blue1" />
+  <COLOR RGB="#0000ee" CMYK="#eeee0011" NAME="Blue2" />
+  <COLOR RGB="#0000cd" CMYK="#cdcd0032" NAME="Blue3" />
+  <COLOR RGB="#00008b" CMYK="#8b8b0074" NAME="Blue4" />
+  <COLOR RGB="#8a2be2" CMYK="#58b7001d" NAME="BlueViolet" />
+  <COLOR RGB="#a52a2a" CMYK="#007b7b5a" NAME="Brown" />
+  <COLOR RGB="#ff4040" CMYK="#00bfbf00" NAME="Brown1" />
+  <COLOR RGB="#ee3b3b" CMYK="#00b3b311" NAME="Brown2" />
+  <COLOR RGB="#cd3333" CMYK="#009a9a32" NAME="Brown3" />
+  <COLOR RGB="#8b2323" CMYK="#00686874" NAME="Brown4" />
+  <COLOR RGB="#deb887" CMYK="#00265721" NAME="Burlywood" />
+  <COLOR RGB="#ffd39b" CMYK="#002c6400" NAME="Burlywood1" />
+  <COLOR RGB="#eec591" CMYK="#00295d11" NAME="Burlywood2" />
+  <COLOR RGB="#cdaa7d" CMYK="#00235032" NAME="Burlywood3" />
+  <COLOR RGB="#8b7355" CMYK="#00183674" NAME="Burlywood4" />
+  <COLOR RGB="#5f9ea0" CMYK="#4102005f" NAME="CadetBlue" />
+  <COLOR RGB="#98f5ff" CMYK="#670a0000" NAME="CadetBlue1" />
+  <COLOR RGB="#8ee5ee" CMYK="#60090011" NAME="CadetBlue2" />
+  <COLOR RGB="#7ac5cd" CMYK="#53080032" NAME="CadetBlue3" />
+  <COLOR RGB="#53868b" CMYK="#38050074" NAME="CadetBlue4" />
+  <COLOR RGB="#7fff00" CMYK="#8000ff00" NAME="Chartreuse" />
+  <COLOR RGB="#7fff00" CMYK="#8000ff00" NAME="Chartreuse1" />
+  <COLOR RGB="#76ee00" CMYK="#7800ee11" NAME="Chartreuse2" />
+  <COLOR RGB="#66cd00" CMYK="#6700cd32" NAME="Chartreuse3" />
+  <COLOR RGB="#458b00" CMYK="#46008b74" NAME="Chartreuse4" />
+  <COLOR RGB="#d2691e" CMYK="#0069b42d" NAME="Chocolate" />
+  <COLOR RGB="#ff7f24" CMYK="#0080db00" NAME="Chocolate1" />
+  <COLOR RGB="#ee7621" CMYK="#0078cd11" NAME="Chocolate2" />
+  <COLOR RGB="#cd661d" CMYK="#0067b032" NAME="Chocolate3" />
+  <COLOR RGB="#8b4513" CMYK="#00467874" NAME="Chocolate4" />
+  <COLOR RGB="#ff7f50" CMYK="#0080af00" NAME="Coral" />
+  <COLOR RGB="#ff7256" CMYK="#008da900" NAME="Coral1" />
+  <COLOR RGB="#ee6a50" CMYK="#00849e11" NAME="Coral2" />
+  <COLOR RGB="#cd5b45" CMYK="#00728832" NAME="Coral3" />
+  <COLOR RGB="#8b3e2f" CMYK="#004d5c74" NAME="Coral4" />
+  <COLOR RGB="#6495ed" CMYK="#89580012" NAME="CornflowerBlue" />
+  <COLOR RGB="#fff8dc" CMYK="#00072300" NAME="Cornsilk" />
+  <COLOR RGB="#fff8dc" CMYK="#00072300" NAME="Cornsilk1" />
+  <COLOR RGB="#eee8cd" CMYK="#00062111" NAME="Cornsilk2" />
+  <COLOR RGB="#cdc8b1" CMYK="#00051c32" NAME="Cornsilk3" />
+  <COLOR RGB="#8b8878" CMYK="#00031374" NAME="Cornsilk4" />
+  <COLOR RGB="#00ffff" CMYK="#ff000000" NAME="Cyan" />
+  <COLOR RGB="#00ffff" CMYK="#ff000000" NAME="Cyan1" />
+  <COLOR RGB="#00eeee" CMYK="#ee000011" NAME="Cyan2" />
+  <COLOR RGB="#00cdcd" CMYK="#cd000032" NAME="Cyan3" />
+  <COLOR RGB="#008b8b" CMYK="#8b000074" NAME="Cyan4" />
+  <COLOR RGB="#00008b" CMYK="#8b8b0074" NAME="DarkBlue" />
+  <COLOR RGB="#008b8b" CMYK="#8b000074" NAME="DarkCyan" />
+  <COLOR RGB="#b8860b" CMYK="#0032ad47" NAME="DarkGoldenrod" />
+  <COLOR RGB="#ffb90f" CMYK="#0046f000" NAME="DarkGoldenrod1" />
+  <COLOR RGB="#eead0e" CMYK="#0041e011" NAME="DarkGoldenrod2" />
+  <COLOR RGB="#cd950c" CMYK="#0038c132" NAME="DarkGoldenrod3" />
+  <COLOR RGB="#8b6508" CMYK="#00268374" NAME="DarkGoldenrod4" />
+  <COLOR RGB="#006400" CMYK="#6400649b" NAME="DarkGreen" />
+  <COLOR RGB="#a9a9a9" CMYK="#00000056" NAME="DarkGrey" />
+  <COLOR RGB="#bdb76b" CMYK="#00065242" NAME="DarkKhaki" />
+  <COLOR RGB="#8b008b" CMYK="#008b0074" NAME="DarkMagenta" />
+  <COLOR RGB="#556b2f" CMYK="#16003c94" NAME="DarkOliveGreen" />
+  <COLOR RGB="#caff70" CMYK="#35008f00" NAME="DarkOliveGreen1" />
+  <COLOR RGB="#bcee68" CMYK="#32008611" NAME="DarkOliveGreen2" />
+  <COLOR RGB="#a2cd5a" CMYK="#2b007332" NAME="DarkOliveGreen3" />
+  <COLOR RGB="#6e8b3d" CMYK="#1d004e74" NAME="DarkOliveGreen4" />
+  <COLOR RGB="#ff8c00" CMYK="#0073ff00" NAME="DarkOrange" />
+  <COLOR RGB="#ff7f00" CMYK="#0080ff00" NAME="DarkOrange1" />
+  <COLOR RGB="#ee7600" CMYK="#0078ee11" NAME="DarkOrange2" />
+  <COLOR RGB="#cd6600" CMYK="#0067cd32" NAME="DarkOrange3" />
+  <COLOR RGB="#8b4500" CMYK="#00468b74" NAME="DarkOrange4" />
+  <COLOR RGB="#9932cc" CMYK="#339a0033" NAME="DarkOrchid" />
+  <COLOR RGB="#bf3eff" CMYK="#40c10000" NAME="DarkOrchid1" />
+  <COLOR RGB="#b23aee" CMYK="#3cb40011" NAME="DarkOrchid2" />
+  <COLOR RGB="#9a32cd" CMYK="#339b0032" NAME="DarkOrchid3" />
+  <COLOR RGB="#68228b" CMYK="#23690074" NAME="DarkOrchid4" />
+  <COLOR RGB="#8b0000" CMYK="#008b8b74" NAME="DarkRed" />
+  <COLOR RGB="#e9967a" CMYK="#00536f16" NAME="DarkSalmon" />
+  <COLOR RGB="#8fbc8f" CMYK="#2d002d43" NAME="DarkSeaGreen" />
+  <COLOR RGB="#c1ffc1" CMYK="#3e003e00" NAME="DarkSeaGreen1" />
+  <COLOR RGB="#b4eeb4" CMYK="#3a003a11" NAME="DarkSeaGreen2" />
+  <COLOR RGB="#9bcd9b" CMYK="#32003232" NAME="DarkSeaGreen3" />
+  <COLOR RGB="#698b69" CMYK="#22002274" NAME="DarkSeaGreen4" />
+  <COLOR RGB="#483d8b" CMYK="#434e0074" NAME="DarkSlateBlue" />
+  <COLOR RGB="#2f4f4f" CMYK="#200000b0" NAME="DarkSlateGrey" />
+  <COLOR RGB="#97ffff" CMYK="#68000000" NAME="DarkSlateGrey1" />
+  <COLOR RGB="#8deeee" CMYK="#61000011" NAME="DarkSlateGrey2" />
+  <COLOR RGB="#79cdcd" CMYK="#54000032" NAME="DarkSlateGrey3" />
+  <COLOR RGB="#528b8b" CMYK="#39000074" NAME="DarkSlateGrey4" />
+  <COLOR RGB="#00ced1" CMYK="#d103002e" NAME="DarkTurquoise" />
+  <COLOR RGB="#9400d3" CMYK="#3fd3002c" NAME="DarkViolet" />
+  <COLOR RGB="#ff1493" CMYK="#00eb6c00" NAME="DeepPink" />
+  <COLOR RGB="#ff1493" CMYK="#00eb6c00" NAME="DeepPink1" />
+  <COLOR RGB="#ee1289" CMYK="#00dc6511" NAME="DeepPink2" />
+  <COLOR RGB="#cd1076" CMYK="#00bd5732" NAME="DeepPink3" />
+  <COLOR RGB="#8b0a50" CMYK="#00813b74" NAME="DeepPink4" />
+  <COLOR RGB="#00bfff" CMYK="#ff400000" NAME="DeepSkyBlue" />
+  <COLOR RGB="#00bfff" CMYK="#ff400000" NAME="DeepSkyBlue1" />
+  <COLOR RGB="#00b2ee" CMYK="#ee3c0011" NAME="DeepSkyBlue2" />
+  <COLOR RGB="#009acd" CMYK="#cd330032" NAME="DeepSkyBlue3" />
+  <COLOR RGB="#00688b" CMYK="#8b230074" NAME="DeepSkyBlue4" />
+  <COLOR RGB="#696969" CMYK="#00000096" NAME="DimGrey" />
+  <COLOR RGB="#1e90ff" CMYK="#e16f0000" NAME="DodgerBlue" />
+  <COLOR RGB="#1e90ff" CMYK="#e16f0000" NAME="DodgerBlue1" />
+  <COLOR RGB="#1c86ee" CMYK="#d2680011" NAME="DodgerBlue2" />
+  <COLOR RGB="#1874cd" CMYK="#b5590032" NAME="DodgerBlue3" />
+  <COLOR RGB="#104e8b" CMYK="#7b3d0074" NAME="DodgerBlue4" />
+  <COLOR RGB="#b22222" CMYK="#0090904d" NAME="Firebrick" />
+  <COLOR RGB="#ff3030" CMYK="#00cfcf00" NAME="Firebrick1" />
+  <COLOR RGB="#ee2c2c" CMYK="#00c2c211" NAME="Firebrick2" />
+  <COLOR RGB="#cd2626" CMYK="#00a7a732" NAME="Firebrick3" />
+  <COLOR RGB="#8b1a1a" CMYK="#00717174" NAME="Firebrick4" />
+  <COLOR RGB="#fffaf0" CMYK="#00050f00" NAME="FloralWhite" />
+  <COLOR RGB="#228b22" CMYK="#69006974" NAME="ForestGreen" />
+  <COLOR RGB="#dcdcdc" CMYK="#00000023" NAME="Gainsboro" />
+  <COLOR RGB="#f8f8ff" CMYK="#07070000" NAME="GhostWhite" />
+  <COLOR RGB="#ffd700" CMYK="#0028ff00" NAME="Gold" />
+  <COLOR RGB="#ffd700" CMYK="#0028ff00" NAME="Gold1" />
+  <COLOR RGB="#eec900" CMYK="#0025ee11" NAME="Gold2" />
+  <COLOR RGB="#cdad00" CMYK="#0020cd32" NAME="Gold3" />
+  <COLOR RGB="#8b7500" CMYK="#00168b74" NAME="Gold4" />
+  <COLOR RGB="#daa520" CMYK="#0035ba25" NAME="Goldenrod" />
+  <COLOR RGB="#ffc125" CMYK="#003eda00" NAME="Goldenrod1" />
+  <COLOR RGB="#eeb422" CMYK="#003acc11" NAME="Goldenrod2" />
+  <COLOR RGB="#cd9b1d" CMYK="#0032b032" NAME="Goldenrod3" />
+  <COLOR RGB="#8b6914" CMYK="#00227774" NAME="Goldenrod4" />
+  <COLOR RGB="#00ff00" CMYK="#ff00ff00" NAME="Green" />
+  <COLOR RGB="#00ff00" CMYK="#ff00ff00" NAME="Green1" />
+  <COLOR RGB="#00ee00" CMYK="#ee00ee11" NAME="Green2" />
+  <COLOR RGB="#00cd00" CMYK="#cd00cd32" NAME="Green3" />
+  <COLOR RGB="#008b00" CMYK="#8b008b74" NAME="Green4" />
+  <COLOR RGB="#adff2f" CMYK="#5200d000" NAME="GreenYellow" />
+  <COLOR RGB="#bebebe" CMYK="#00000041" NAME="Grey" />
+  <COLOR RGB="#000000" CMYK="#000000ff" NAME="Grey0" />
+  <COLOR RGB="#030303" CMYK="#000000fc" NAME="Grey1" />
+  <COLOR RGB="#1a1a1a" CMYK="#000000e5" NAME="Grey10" />
+  <COLOR RGB="#ffffff" CMYK="#00000000" NAME="Grey100" />
+  <COLOR RGB="#1c1c1c" CMYK="#000000e3" NAME="Grey11" />
+  <COLOR RGB="#1f1f1f" CMYK="#000000e0" NAME="Grey12" />
+  <COLOR RGB="#212121" CMYK="#000000de" NAME="Grey13" />
+  <COLOR RGB="#242424" CMYK="#000000db" NAME="Grey14" />
+  <COLOR RGB="#262626" CMYK="#000000d9" NAME="Grey15" />
+  <COLOR RGB="#292929" CMYK="#000000d6" NAME="Grey16" />
+  <COLOR RGB="#2b2b2b" CMYK="#000000d4" NAME="Grey17" />
+  <COLOR RGB="#2e2e2e" CMYK="#000000d1" NAME="Grey18" />
+  <COLOR RGB="#303030" CMYK="#000000cf" NAME="Grey19" />
+  <COLOR RGB="#050505" CMYK="#000000fa" NAME="Grey2" />
+  <COLOR RGB="#333333" CMYK="#000000cc" NAME="Grey20" />
+  <COLOR RGB="#363636" CMYK="#000000c9" NAME="Grey21" />
+  <COLOR RGB="#383838" CMYK="#000000c7" NAME="Grey22" />
+  <COLOR RGB="#3b3b3b" CMYK="#000000c4" NAME="Grey23" />
+  <COLOR RGB="#3d3d3d" CMYK="#000000c2" NAME="Grey24" />
+  <COLOR RGB="#404040" CMYK="#000000bf" NAME="Grey25" />
+  <COLOR RGB="#424242" CMYK="#000000bd" NAME="Grey26" />
+  <COLOR RGB="#454545" CMYK="#000000ba" NAME="Grey27" />
+  <COLOR RGB="#474747" CMYK="#000000b8" NAME="Grey28" />
+  <COLOR RGB="#4a4a4a" CMYK="#000000b5" NAME="Grey29" />
+  <COLOR RGB="#080808" CMYK="#000000f7" NAME="Grey3" />
+  <COLOR RGB="#4d4d4d" CMYK="#000000b2" NAME="Grey30" />
+  <COLOR RGB="#4f4f4f" CMYK="#000000b0" NAME="Grey31" />
+  <COLOR RGB="#525252" CMYK="#000000ad" NAME="Grey32" />
+  <COLOR RGB="#545454" CMYK="#000000ab" NAME="Grey33" />
+  <COLOR RGB="#575757" CMYK="#000000a8" NAME="Grey34" />
+  <COLOR RGB="#595959" CMYK="#000000a6" NAME="Grey35" />
+  <COLOR RGB="#5c5c5c" CMYK="#000000a3" NAME="Grey36" />
+  <COLOR RGB="#5e5e5e" CMYK="#000000a1" NAME="Grey37" />
+  <COLOR RGB="#616161" CMYK="#0000009e" NAME="Grey38" />
+  <COLOR RGB="#636363" CMYK="#0000009c" NAME="Grey39" />
+  <COLOR RGB="#0a0a0a" CMYK="#000000f5" NAME="Grey4" />
+  <COLOR RGB="#666666" CMYK="#00000099" NAME="Grey40" />
+  <COLOR RGB="#696969" CMYK="#00000096" NAME="Grey41" />
+  <COLOR RGB="#6b6b6b" CMYK="#00000094" NAME="Grey42" />
+  <COLOR RGB="#6e6e6e" CMYK="#00000091" NAME="Grey43" />
+  <COLOR RGB="#707070" CMYK="#0000008f" NAME="Grey44" />
+  <COLOR RGB="#737373" CMYK="#0000008c" NAME="Grey45" />
+  <COLOR RGB="#757575" CMYK="#0000008a" NAME="Grey46" />
+  <COLOR RGB="#787878" CMYK="#00000087" NAME="Grey47" />
+  <COLOR RGB="#7a7a7a" CMYK="#00000085" NAME="Grey48" />
+  <COLOR RGB="#7d7d7d" CMYK="#00000082" NAME="Grey49" />
+  <COLOR RGB="#0d0d0d" CMYK="#000000f2" NAME="Grey5" />
+  <COLOR RGB="#7f7f7f" CMYK="#00000080" NAME="Grey50" />
+  <COLOR RGB="#828282" CMYK="#0000007d" NAME="Grey51" />
+  <COLOR RGB="#858585" CMYK="#0000007a" NAME="Grey52" />
+  <COLOR RGB="#878787" CMYK="#00000078" NAME="Grey53" />
+  <COLOR RGB="#8a8a8a" CMYK="#00000075" NAME="Grey54" />
+  <COLOR RGB="#8c8c8c" CMYK="#00000073" NAME="Grey55" />
+  <COLOR RGB="#8f8f8f" CMYK="#00000070" NAME="Grey56" />
+  <COLOR RGB="#919191" CMYK="#0000006e" NAME="Grey57" />
+  <COLOR RGB="#949494" CMYK="#0000006b" NAME="Grey58" />
+  <COLOR RGB="#969696" CMYK="#00000069" NAME="Grey59" />
+  <COLOR RGB="#0f0f0f" CMYK="#000000f0" NAME="Grey6" />
+  <COLOR RGB="#999999" CMYK="#00000066" NAME="Grey60" />
+  <COLOR RGB="#9c9c9c" CMYK="#00000063" NAME="Grey61" />
+  <COLOR RGB="#9e9e9e" CMYK="#00000061" NAME="Grey62" />
+  <COLOR RGB="#a1a1a1" CMYK="#0000005e" NAME="Grey63" />
+  <COLOR RGB="#a3a3a3" CMYK="#0000005c" NAME="Grey64" />
+  <COLOR RGB="#a6a6a6" CMYK="#00000059" NAME="Grey65" />
+  <COLOR RGB="#a8a8a8" CMYK="#00000057" NAME="Grey66" />
+  <COLOR RGB="#ababab" CMYK="#00000054" NAME="Grey67" />
+  <COLOR RGB="#adadad" CMYK="#00000052" NAME="Grey68" />
+  <COLOR RGB="#b0b0b0" CMYK="#0000004f" NAME="Grey69" />
+  <COLOR RGB="#121212" CMYK="#000000ed" NAME="Grey7" />
+  <COLOR RGB="#b3b3b3" CMYK="#0000004c" NAME="Grey70" />
+  <COLOR RGB="#b5b5b5" CMYK="#0000004a" NAME="Grey71" />
+  <COLOR RGB="#b8b8b8" CMYK="#00000047" NAME="Grey72" />
+  <COLOR RGB="#bababa" CMYK="#00000045" NAME="Grey73" />
+  <COLOR RGB="#bdbdbd" CMYK="#00000042" NAME="Grey74" />
+  <COLOR RGB="#bfbfbf" CMYK="#00000040" NAME="Grey75" />
+  <COLOR RGB="#c2c2c2" CMYK="#0000003d" NAME="Grey76" />
+  <COLOR RGB="#c4c4c4" CMYK="#0000003b" NAME="Grey77" />
+  <COLOR RGB="#c7c7c7" CMYK="#00000038" NAME="Grey78" />
+  <COLOR RGB="#c9c9c9" CMYK="#00000036" NAME="Grey79" />
+  <COLOR RGB="#141414" CMYK="#000000eb" NAME="Grey8" />
+  <COLOR RGB="#cccccc" CMYK="#00000033" NAME="Grey80" />
+  <COLOR RGB="#cfcfcf" CMYK="#00000030" NAME="Grey81" />
+  <COLOR RGB="#d1d1d1" CMYK="#0000002e" NAME="Grey82" />
+  <COLOR RGB="#d4d4d4" CMYK="#0000002b" NAME="Grey83" />
+  <COLOR RGB="#d6d6d6" CMYK="#00000029" NAME="Grey84" />
+  <COLOR RGB="#d9d9d9" CMYK="#00000026" NAME="Grey85" />
+  <COLOR RGB="#dbdbdb" CMYK="#00000024" NAME="Grey86" />
+  <COLOR RGB="#dedede" CMYK="#00000021" NAME="Grey87" />
+  <COLOR RGB="#e0e0e0" CMYK="#0000001f" NAME="Grey88" />
+  <COLOR RGB="#e3e3e3" CMYK="#0000001c" NAME="Grey89" />
+  <COLOR RGB="#171717" CMYK="#000000e8" NAME="Grey9" />
+  <COLOR RGB="#e5e5e5" CMYK="#0000001a" NAME="Grey90" />
+  <COLOR RGB="#e8e8e8" CMYK="#00000017" NAME="Grey91" />
+  <COLOR RGB="#ebebeb" CMYK="#00000014" NAME="Grey92" />
+  <COLOR RGB="#ededed" CMYK="#00000012" NAME="Grey93" />
+  <COLOR RGB="#f0f0f0" CMYK="#0000000f" NAME="Grey94" />
+  <COLOR RGB="#f2f2f2" CMYK="#0000000d" NAME="Grey95" />
+  <COLOR RGB="#f5f5f5" CMYK="#0000000a" NAME="Grey96" />
+  <COLOR RGB="#f7f7f7" CMYK="#00000008" NAME="Grey97" />
+  <COLOR RGB="#fafafa" CMYK="#00000005" NAME="Grey98" />
+  <COLOR RGB="#fcfcfc" CMYK="#00000003" NAME="Grey99" />
+  <COLOR RGB="#f0fff0" CMYK="#0f000f00" NAME="Honeydew" />
+  <COLOR RGB="#f0fff0" CMYK="#0f000f00" NAME="Honeydew1" />
+  <COLOR RGB="#e0eee0" CMYK="#0e000e11" NAME="Honeydew2" />
+  <COLOR RGB="#c1cdc1" CMYK="#0c000c32" NAME="Honeydew3" />
+  <COLOR RGB="#838b83" CMYK="#08000874" NAME="Honeydew4" />
+  <COLOR RGB="#ff69b4" CMYK="#00964b00" NAME="HotPink" />
+  <COLOR RGB="#ff6eb4" CMYK="#00914b00" NAME="HotPink1" />
+  <COLOR RGB="#ee6aa7" CMYK="#00844711" NAME="HotPink2" />
+  <COLOR RGB="#cd6090" CMYK="#006d3d32" NAME="HotPink3" />
+  <COLOR RGB="#8b3a62" CMYK="#00512974" NAME="HotPink4" />
+  <COLOR RGB="#cd5c5c" CMYK="#00717132" NAME="IndianRed" />
+  <COLOR RGB="#ff6a6a" CMYK="#00959500" NAME="IndianRed1" />
+  <COLOR RGB="#ee6363" CMYK="#008b8b11" NAME="IndianRed2" />
+  <COLOR RGB="#cd5555" CMYK="#00787832" NAME="IndianRed3" />
+  <COLOR RGB="#8b3a3a" CMYK="#00515174" NAME="IndianRed4" />
+  <COLOR RGB="#fffff0" CMYK="#00000f00" NAME="Ivory" />
+  <COLOR RGB="#fffff0" CMYK="#00000f00" NAME="Ivory1" />
+  <COLOR RGB="#eeeee0" CMYK="#00000e11" NAME="Ivory2" />
+  <COLOR RGB="#cdcdc1" CMYK="#00000c32" NAME="Ivory3" />
+  <COLOR RGB="#8b8b83" CMYK="#00000874" NAME="Ivory4" />
+  <COLOR RGB="#f0e68c" CMYK="#000a640f" NAME="Khaki" />
+  <COLOR RGB="#fff68f" CMYK="#00097000" NAME="Khaki1" />
+  <COLOR RGB="#eee685" CMYK="#00086911" NAME="Khaki2" />
+  <COLOR RGB="#cdc673" CMYK="#00075a32" NAME="Khaki3" />
+  <COLOR RGB="#8b864e" CMYK="#00053d74" NAME="Khaki4" />
+  <COLOR RGB="#e6e6fa" CMYK="#14140005" NAME="Lavender" />
+  <COLOR RGB="#fff0f5" CMYK="#000f0a00" NAME="LavenderBlush" />
+  <COLOR RGB="#fff0f5" CMYK="#000f0a00" NAME="LavenderBlush1" />
+  <COLOR RGB="#eee0e5" CMYK="#000e0911" NAME="LavenderBlush2" />
+  <COLOR RGB="#cdc1c5" CMYK="#000c0832" NAME="LavenderBlush3" />
+  <COLOR RGB="#8b8386" CMYK="#00080574" NAME="LavenderBlush4" />
+  <COLOR RGB="#7cfc00" CMYK="#8000fc03" NAME="LawnGreen" />
+  <COLOR RGB="#fffacd" CMYK="#00053200" NAME="LemonChiffon" />
+  <COLOR RGB="#fffacd" CMYK="#00053200" NAME="LemonChiffon1" />
+  <COLOR RGB="#eee9bf" CMYK="#00052f11" NAME="LemonChiffon2" />
+  <COLOR RGB="#cdc9a5" CMYK="#00042832" NAME="LemonChiffon3" />
+  <COLOR RGB="#8b8970" CMYK="#00021b74" NAME="LemonChiffon4" />
+  <COLOR RGB="#add8e6" CMYK="#390e0019" NAME="LightBlue" />
+  <COLOR RGB="#bfefff" CMYK="#40100000" NAME="LightBlue1" />
+  <COLOR RGB="#b2dfee" CMYK="#3c0f0011" NAME="LightBlue2" />
+  <COLOR RGB="#9ac0cd" CMYK="#330d0032" NAME="LightBlue3" />
+  <COLOR RGB="#68838b" CMYK="#23080074" NAME="LightBlue4" />
+  <COLOR RGB="#f08080" CMYK="#0070700f" NAME="LightCoral" />
+  <COLOR RGB="#e0ffff" CMYK="#1f000000" NAME="LightCyan" />
+  <COLOR RGB="#e0ffff" CMYK="#1f000000" NAME="LightCyan1" />
+  <COLOR RGB="#d1eeee" CMYK="#1d000011" NAME="LightCyan2" />
+  <COLOR RGB="#b4cdcd" CMYK="#19000032" NAME="LightCyan3" />
+  <COLOR RGB="#7a8b8b" CMYK="#11000074" NAME="LightCyan4" />
+  <COLOR RGB="#eedd82" CMYK="#00116c11" NAME="LightGoldenrod" />
+  <COLOR RGB="#ffec8b" CMYK="#00137400" NAME="LightGoldenrod1" />
+  <COLOR RGB="#eedc82" CMYK="#00126c11" NAME="LightGoldenrod2" />
+  <COLOR RGB="#cdbe70" CMYK="#000f5d32" NAME="LightGoldenrod3" />
+  <COLOR RGB="#8b814c" CMYK="#000a3f74" NAME="LightGoldenrod4" />
+  <COLOR RGB="#fafad2" CMYK="#00002805" NAME="LightGoldenrodYellow" />
+  <COLOR RGB="#90ee90" CMYK="#5e005e11" NAME="LightGreen" />
+  <COLOR RGB="#d3d3d3" CMYK="#0000002c" NAME="LightGrey" />
+  <COLOR RGB="#ffb6c1" CMYK="#00493e00" NAME="LightPink" />
+  <COLOR RGB="#ffaeb9" CMYK="#00514600" NAME="LightPink1" />
+  <COLOR RGB="#eea2ad" CMYK="#004c4111" NAME="LightPink2" />
+  <COLOR RGB="#cd8c95" CMYK="#00413832" NAME="LightPink3" />
+  <COLOR RGB="#8b5f65" CMYK="#002c2674" NAME="LightPink4" />
+  <COLOR RGB="#ffa07a" CMYK="#005f8500" NAME="LightSalmon" />
+  <COLOR RGB="#ffa07a" CMYK="#005f8500" NAME="LightSalmon1" />
+  <COLOR RGB="#ee9572" CMYK="#00597c11" NAME="LightSalmon2" />
+  <COLOR RGB="#cd8162" CMYK="#004c6b32" NAME="LightSalmon3" />
+  <COLOR RGB="#8b5742" CMYK="#00344974" NAME="LightSalmon4" />
+  <COLOR RGB="#20b2aa" CMYK="#9200084d" NAME="LightSeaGreen" />
+  <COLOR RGB="#87cefa" CMYK="#732c0005" NAME="LightSkyBlue" />
+  <COLOR RGB="#b0e2ff" CMYK="#4f1d0000" NAME="LightSkyBlue1" />
+  <COLOR RGB="#a4d3ee" CMYK="#4a1b0011" NAME="LightSkyBlue2" />
+  <COLOR RGB="#8db6cd" CMYK="#40170032" NAME="LightSkyBlue3" />
+  <COLOR RGB="#607b8b" CMYK="#2b100074" NAME="LightSkyBlue4" />
+  <COLOR RGB="#8470ff" CMYK="#7b8f0000" NAME="LightSlateBlue" />
+  <COLOR RGB="#778899" CMYK="#22110066" NAME="LightSlateGrey" />
+  <COLOR RGB="#b0c4de" CMYK="#2e1a0021" NAME="LightSteelBlue" />
+  <COLOR RGB="#cae1ff" CMYK="#351e0000" NAME="LightSteelBlue1" />
+  <COLOR RGB="#bcd2ee" CMYK="#321c0011" NAME="LightSteelBlue2" />
+  <COLOR RGB="#a2b5cd" CMYK="#2b180032" NAME="LightSteelBlue3" />
+  <COLOR RGB="#6e7b8b" CMYK="#1d100074" NAME="LightSteelBlue4" />
+  <COLOR RGB="#ffffe0" CMYK="#00001f00" NAME="LightYellow" />
+  <COLOR RGB="#ffffe0" CMYK="#00001f00" NAME="LightYellow1" />
+  <COLOR RGB="#eeeed1" CMYK="#00001d11" NAME="LightYellow2" />
+  <COLOR RGB="#cdcdb4" CMYK="#00001932" NAME="LightYellow3" />
+  <COLOR RGB="#8b8b7a" CMYK="#00001174" NAME="LightYellow4" />
+  <COLOR RGB="#32cd32" CMYK="#9b009b32" NAME="LimeGreen" />
+  <COLOR RGB="#faf0e6" CMYK="#000a1405" NAME="Linen" />
+  <COLOR RGB="#ff00ff" CMYK="#00ff0000" NAME="Magenta" />
+  <COLOR RGB="#ff00ff" CMYK="#00ff0000" NAME="Magenta1" />
+  <COLOR RGB="#ee00ee" CMYK="#00ee0011" NAME="Magenta2" />
+  <COLOR RGB="#cd00cd" CMYK="#00cd0032" NAME="Magenta3" />
+  <COLOR RGB="#8b008b" CMYK="#008b0074" NAME="Magenta4" />
+  <COLOR RGB="#b03060" CMYK="#0080504f" NAME="Maroon" />
+  <COLOR RGB="#ff34b3" CMYK="#00cb4c00" NAME="Maroon1" />
+  <COLOR RGB="#ee30a7" CMYK="#00be4711" NAME="Maroon2" />
+  <COLOR RGB="#cd2990" CMYK="#00a43d32" NAME="Maroon3" />
+  <COLOR RGB="#8b1c62" CMYK="#006f2974" NAME="Maroon4" />
+  <COLOR RGB="#66cdaa" CMYK="#67002332" NAME="MediumAquamarine" />
+  <COLOR RGB="#0000cd" CMYK="#cdcd0032" NAME="MediumBlue" />
+  <COLOR RGB="#ba55d3" CMYK="#197e002c" NAME="MediumOrchid" />
+  <COLOR RGB="#e066ff" CMYK="#1f990000" NAME="MediumOrchid1" />
+  <COLOR RGB="#d15fee" CMYK="#1d8f0011" NAME="MediumOrchid2" />
+  <COLOR RGB="#b452cd" CMYK="#197b0032" NAME="MediumOrchid3" />
+  <COLOR RGB="#7a378b" CMYK="#11540074" NAME="MediumOrchid4" />
+  <COLOR RGB="#9370db" CMYK="#486b0024" NAME="MediumPurple" />
+  <COLOR RGB="#ab82ff" CMYK="#547d0000" NAME="MediumPurple1" />
+  <COLOR RGB="#9f79ee" CMYK="#4f750011" NAME="MediumPurple2" />
+  <COLOR RGB="#8968cd" CMYK="#44650032" NAME="MediumPurple3" />
+  <COLOR RGB="#5d478b" CMYK="#2e440074" NAME="MediumPurple4" />
+  <COLOR RGB="#3cb371" CMYK="#7700424c" NAME="MediumSeaGreen" />
+  <COLOR RGB="#7b68ee" CMYK="#73860011" NAME="MediumSlateBlue" />
+  <COLOR RGB="#00fa9a" CMYK="#fa006005" NAME="MediumSpringGreen" />
+  <COLOR RGB="#48d1cc" CMYK="#8900052e" NAME="MediumTurquoise" />
+  <COLOR RGB="#c71585" CMYK="#00b24238" NAME="MediumVioletRed" />
+  <COLOR RGB="#191970" CMYK="#5757008f" NAME="MidnightBlue" />
+  <COLOR RGB="#f5fffa" CMYK="#0a000500" NAME="MintCream" />
+  <COLOR RGB="#ffe4e1" CMYK="#001b1e00" NAME="MistyRose" />
+  <COLOR RGB="#ffe4e1" CMYK="#001b1e00" NAME="MistyRose1" />
+  <COLOR RGB="#eed5d2" CMYK="#00191c11" NAME="MistyRose2" />
+  <COLOR RGB="#cdb7b5" CMYK="#00161832" NAME="MistyRose3" />
+  <COLOR RGB="#8b7d7b" CMYK="#000e1074" NAME="MistyRose4" />
+  <COLOR RGB="#ffe4b5" CMYK="#001b4a00" NAME="Moccasin" />
+  <COLOR RGB="#ffdead" CMYK="#00215200" NAME="NavajoWhite" />
+  <COLOR RGB="#ffdead" CMYK="#00215200" NAME="NavajoWhite1" />
+  <COLOR RGB="#eecfa1" CMYK="#001f4d11" NAME="NavajoWhite2" />
+  <COLOR RGB="#cdb38b" CMYK="#001a4232" NAME="NavajoWhite3" />
+  <COLOR RGB="#8b795e" CMYK="#00122d74" NAME="NavajoWhite4" />
+  <COLOR RGB="#000080" CMYK="#8080007f" NAME="NavyBlue" />
+  <COLOR RGB="#fdf5e6" CMYK="#00081702" NAME="OldLace" />
+  <COLOR RGB="#6b8e23" CMYK="#23006b71" NAME="OliveDrab" />
+  <COLOR RGB="#c0ff3e" CMYK="#3f00c100" NAME="OliveDrab1" />
+  <COLOR RGB="#b3ee3a" CMYK="#3b00b411" NAME="OliveDrab2" />
+  <COLOR RGB="#9acd32" CMYK="#33009b32" NAME="OliveDrab3" />
+  <COLOR RGB="#698b22" CMYK="#22006974" NAME="OliveDrab4" />
+  <COLOR RGB="#ffa500" CMYK="#005aff00" NAME="Orange" />
+  <COLOR RGB="#ffa500" CMYK="#005aff00" NAME="Orange1" />
+  <COLOR RGB="#ee9a00" CMYK="#0054ee11" NAME="Orange2" />
+  <COLOR RGB="#cd8500" CMYK="#0048cd32" NAME="Orange3" />
+  <COLOR RGB="#8b5a00" CMYK="#00318b74" NAME="Orange4" />
+  <COLOR RGB="#ff4500" CMYK="#00baff00" NAME="OrangeRed" />
+  <COLOR RGB="#ff4500" CMYK="#00baff00" NAME="OrangeRed1" />
+  <COLOR RGB="#ee4000" CMYK="#00aeee11" NAME="OrangeRed2" />
+  <COLOR RGB="#cd3700" CMYK="#0096cd32" NAME="OrangeRed3" />
+  <COLOR RGB="#8b2500" CMYK="#00668b74" NAME="OrangeRed4" />
+  <COLOR RGB="#da70d6" CMYK="#006a0425" NAME="Orchid" />
+  <COLOR RGB="#ff83fa" CMYK="#007c0500" NAME="Orchid1" />
+  <COLOR RGB="#ee7ae9" CMYK="#00740511" NAME="Orchid2" />
+  <COLOR RGB="#cd69c9" CMYK="#00640432" NAME="Orchid3" />
+  <COLOR RGB="#8b4789" CMYK="#00440274" NAME="Orchid4" />
+  <COLOR RGB="#eee8aa" CMYK="#00064411" NAME="PaleGoldenrod" />
+  <COLOR RGB="#98fb98" CMYK="#63006304" NAME="PaleGreen" />
+  <COLOR RGB="#9aff9a" CMYK="#65006500" NAME="PaleGreen1" />
+  <COLOR RGB="#90ee90" CMYK="#5e005e11" NAME="PaleGreen2" />
+  <COLOR RGB="#7ccd7c" CMYK="#51005132" NAME="PaleGreen3" />
+  <COLOR RGB="#548b54" CMYK="#37003774" NAME="PaleGreen4" />
+  <COLOR RGB="#afeeee" CMYK="#3f000011" NAME="PaleTurquoise" />
+  <COLOR RGB="#bbffff" CMYK="#44000000" NAME="PaleTurquoise1" />
+  <COLOR RGB="#aeeeee" CMYK="#40000011" NAME="PaleTurquoise2" />
+  <COLOR RGB="#96cdcd" CMYK="#37000032" NAME="PaleTurquoise3" />
+  <COLOR RGB="#668b8b" CMYK="#25000074" NAME="PaleTurquoise4" />
+  <COLOR RGB="#db7093" CMYK="#006b4824" NAME="PaleVioletRed" />
+  <COLOR RGB="#ff82ab" CMYK="#007d5400" NAME="PaleVioletRed1" />
+  <COLOR RGB="#ee799f" CMYK="#00754f11" NAME="PaleVioletRed2" />
+  <COLOR RGB="#cd6889" CMYK="#00654432" NAME="PaleVioletRed3" />
+  <COLOR RGB="#8b475d" CMYK="#00442e74" NAME="PaleVioletRed4" />
+  <COLOR RGB="#ffefd5" CMYK="#00102a00" NAME="PapayaWhip" />
+  <COLOR RGB="#ffdab9" CMYK="#00254600" NAME="PeachPuff" />
+  <COLOR RGB="#ffdab9" CMYK="#00254600" NAME="PeachPuff1" />
+  <COLOR RGB="#eecbad" CMYK="#00234111" NAME="PeachPuff2" />
+  <COLOR RGB="#cdaf95" CMYK="#001e3832" NAME="PeachPuff3" />
+  <COLOR RGB="#8b7765" CMYK="#00142674" NAME="PeachPuff4" />
+  <COLOR RGB="#cd853f" CMYK="#00488e32" NAME="Peru" />
+  <COLOR RGB="#ffc0cb" CMYK="#003f3400" NAME="Pink" />
+  <COLOR RGB="#ffb5c5" CMYK="#004a3a00" NAME="Pink1" />
+  <COLOR RGB="#eea9b8" CMYK="#00453611" NAME="Pink2" />
+  <COLOR RGB="#cd919e" CMYK="#003c2f32" NAME="Pink3" />
+  <COLOR RGB="#8b636c" CMYK="#00281f74" NAME="Pink4" />
+  <COLOR RGB="#dda0dd" CMYK="#003d0022" NAME="Plum" />
+  <COLOR RGB="#ffbbff" CMYK="#00440000" NAME="Plum1" />
+  <COLOR RGB="#eeaeee" CMYK="#00400011" NAME="Plum2" />
+  <COLOR RGB="#cd96cd" CMYK="#00370032" NAME="Plum3" />
+  <COLOR RGB="#8b668b" CMYK="#00250074" NAME="Plum4" />
+  <COLOR RGB="#b0e0e6" CMYK="#36060019" NAME="PowderBlue" />
+  <COLOR RGB="#a020f0" CMYK="#50d0000f" NAME="Purple" />
+  <COLOR RGB="#9b30ff" CMYK="#64cf0000" NAME="Purple1" />
+  <COLOR RGB="#912cee" CMYK="#5dc20011" NAME="Purple2" />
+  <COLOR RGB="#7d26cd" CMYK="#50a70032" NAME="Purple3" />
+  <COLOR RGB="#551a8b" CMYK="#36710074" NAME="Purple4" />
+  <COLOR RGB="#ff0000" CMYK="#00ffff00" NAME="Red" />
+  <COLOR RGB="#ff0000" CMYK="#00ffff00" NAME="Red1" />
+  <COLOR RGB="#ee0000" CMYK="#00eeee11" NAME="Red2" />
+  <COLOR RGB="#cd0000" CMYK="#00cdcd32" NAME="Red3" />
+  <COLOR RGB="#8b0000" CMYK="#008b8b74" NAME="Red4" />
+  <COLOR RGB="#bc8f8f" CMYK="#002d2d43" NAME="RosyBrown" />
+  <COLOR RGB="#ffc1c1" CMYK="#003e3e00" NAME="RosyBrown1" />
+  <COLOR RGB="#eeb4b4" CMYK="#003a3a11" NAME="RosyBrown2" />
+  <COLOR RGB="#cd9b9b" CMYK="#00323232" NAME="RosyBrown3" />
+  <COLOR RGB="#8b6969" CMYK="#00222274" NAME="RosyBrown4" />
+  <COLOR RGB="#4169e1" CMYK="#a078001e" NAME="RoyalBlue" />
+  <COLOR RGB="#4876ff" CMYK="#b7890000" NAME="RoyalBlue1" />
+  <COLOR RGB="#436eee" CMYK="#ab800011" NAME="RoyalBlue2" />
+  <COLOR RGB="#3a5fcd" CMYK="#936e0032" NAME="RoyalBlue3" />
+  <COLOR RGB="#27408b" CMYK="#644b0074" NAME="RoyalBlue4" />
+  <COLOR RGB="#8b4513" CMYK="#00467874" NAME="SaddleBrown" />
+  <COLOR RGB="#fa8072" CMYK="#007a8805" NAME="Salmon" />
+  <COLOR RGB="#ff8c69" CMYK="#00739600" NAME="Salmon1" />
+  <COLOR RGB="#ee8262" CMYK="#006c8c11" NAME="Salmon2" />
+  <COLOR RGB="#cd7054" CMYK="#005d7932" NAME="Salmon3" />
+  <COLOR RGB="#8b4c39" CMYK="#003f5274" NAME="Salmon4" />
+  <COLOR RGB="#f4a460" CMYK="#0050940b" NAME="SandyBrown" />
+  <COLOR RGB="#2e8b57" CMYK="#5d003474" NAME="SeaGreen" />
+  <COLOR RGB="#54ff9f" CMYK="#ab006000" NAME="SeaGreen1" />
+  <COLOR RGB="#4eee94" CMYK="#a0005a11" NAME="SeaGreen2" />
+  <COLOR RGB="#43cd80" CMYK="#8a004d32" NAME="SeaGreen3" />
+  <COLOR RGB="#2e8b57" CMYK="#5d003474" NAME="SeaGreen4" />
+  <COLOR RGB="#fff5ee" CMYK="#000a1100" NAME="Seashell" />
+  <COLOR RGB="#fff5ee" CMYK="#000a1100" NAME="Seashell1" />
+  <COLOR RGB="#eee5de" CMYK="#00091011" NAME="Seashell2" />
+  <COLOR RGB="#cdc5bf" CMYK="#00080e32" NAME="Seashell3" />
+  <COLOR RGB="#8b8682" CMYK="#00050974" NAME="Seashell4" />
+  <COLOR RGB="#a0522d" CMYK="#004e735f" NAME="Sienna" />
+  <COLOR RGB="#ff8247" CMYK="#007db800" NAME="Sienna1" />
+  <COLOR RGB="#ee7942" CMYK="#0075ac11" NAME="Sienna2" />
+  <COLOR RGB="#cd6839" CMYK="#00659432" NAME="Sienna3" />
+  <COLOR RGB="#8b4726" CMYK="#00446574" NAME="Sienna4" />
+  <COLOR RGB="#87ceeb" CMYK="#641d0014" NAME="SkyBlue" />
+  <COLOR RGB="#87ceff" CMYK="#78310000" NAME="SkyBlue1" />
+  <COLOR RGB="#7ec0ee" CMYK="#702e0011" NAME="SkyBlue2" />
+  <COLOR RGB="#6ca6cd" CMYK="#61270032" NAME="SkyBlue3" />
+  <COLOR RGB="#4a708b" CMYK="#411b0074" NAME="SkyBlue4" />
+  <COLOR RGB="#6a5acd" CMYK="#63730032" NAME="SlateBlue" />
+  <COLOR RGB="#836fff" CMYK="#7c900000" NAME="SlateBlue1" />
+  <COLOR RGB="#7a67ee" CMYK="#74870011" NAME="SlateBlue2" />
+  <COLOR RGB="#6959cd" CMYK="#64740032" NAME="SlateBlue3" />
+  <COLOR RGB="#473c8b" CMYK="#444f0074" NAME="SlateBlue4" />
+  <COLOR RGB="#708090" CMYK="#2010006f" NAME="SlateGrey" />
+  <COLOR RGB="#c6e2ff" CMYK="#391d0000" NAME="SlateGrey1" />
+  <COLOR RGB="#b9d3ee" CMYK="#351b0011" NAME="SlateGrey2" />
+  <COLOR RGB="#9fb6cd" CMYK="#2e170032" NAME="SlateGrey3" />
+  <COLOR RGB="#6c7b8b" CMYK="#1f100074" NAME="SlateGrey4" />
+  <COLOR RGB="#fffafa" CMYK="#00050500" NAME="Snow" />
+  <COLOR RGB="#fffafa" CMYK="#00050500" NAME="Snow1" />
+  <COLOR RGB="#eee9e9" CMYK="#00050511" NAME="Snow2" />
+  <COLOR RGB="#cdc9c9" CMYK="#00040432" NAME="Snow3" />
+  <COLOR RGB="#8b8989" CMYK="#00020274" NAME="Snow4" />
+  <COLOR RGB="#00ff7f" CMYK="#ff008000" NAME="SpringGreen" />
+  <COLOR RGB="#00ff7f" CMYK="#ff008000" NAME="SpringGreen1" />
+  <COLOR RGB="#00ee76" CMYK="#ee007811" NAME="SpringGreen2" />
+  <COLOR RGB="#00cd66" CMYK="#cd006732" NAME="SpringGreen3" />
+  <COLOR RGB="#008b45" CMYK="#8b004674" NAME="SpringGreen4" />
+  <COLOR RGB="#4682b4" CMYK="#6e32004b" NAME="SteelBlue" />
+  <COLOR RGB="#63b8ff" CMYK="#9c470000" NAME="SteelBlue1" />
+  <COLOR RGB="#5cacee" CMYK="#92420011" NAME="SteelBlue2" />
+  <COLOR RGB="#4f94cd" CMYK="#7e390032" NAME="SteelBlue3" />
+  <COLOR RGB="#36648b" CMYK="#55270074" NAME="SteelBlue4" />
+  <COLOR RGB="#d2b48c" CMYK="#001e462d" NAME="Tan" />
+  <COLOR RGB="#ffa54f" CMYK="#005ab000" NAME="Tan1" />
+  <COLOR RGB="#ee9a49" CMYK="#0054a511" NAME="Tan2" />
+  <COLOR RGB="#cd853f" CMYK="#00488e32" NAME="Tan3" />
+  <COLOR RGB="#8b5a2b" CMYK="#00316074" NAME="Tan4" />
+  <COLOR RGB="#d8bfd8" CMYK="#00190027" NAME="Thistle" />
+  <COLOR RGB="#ffe1ff" CMYK="#001e0000" NAME="Thistle1" />
+  <COLOR RGB="#eed2ee" CMYK="#001c0011" NAME="Thistle2" />
+  <COLOR RGB="#cdb5cd" CMYK="#00180032" NAME="Thistle3" />
+  <COLOR RGB="#8b7b8b" CMYK="#00100074" NAME="Thistle4" />
+  <COLOR RGB="#ff6347" CMYK="#009cb800" NAME="Tomato" />
+  <COLOR RGB="#ff6347" CMYK="#009cb800" NAME="Tomato1" />
+  <COLOR RGB="#ee5c42" CMYK="#0092ac11" NAME="Tomato2" />
+  <COLOR RGB="#cd4f39" CMYK="#007e9432" NAME="Tomato3" />
+  <COLOR RGB="#8b3626" CMYK="#00556574" NAME="Tomato4" />
+  <COLOR RGB="#40e0d0" CMYK="#a000101f" NAME="Turquoise" />
+  <COLOR RGB="#00f5ff" CMYK="#ff0a0000" NAME="Turquoise1" />
+  <COLOR RGB="#00e5ee" CMYK="#ee090011" NAME="Turquoise2" />
+  <COLOR RGB="#00c5cd" CMYK="#cd080032" NAME="Turquoise3" />
+  <COLOR RGB="#00868b" CMYK="#8b050074" NAME="Turquoise4" />
+  <COLOR RGB="#ee82ee" CMYK="#006c0011" NAME="Violet" />
+  <COLOR RGB="#d02090" CMYK="#00b0402f" NAME="VioletRed" />
+  <COLOR RGB="#ff3e96" CMYK="#00c16900" NAME="VioletRed1" />
+  <COLOR RGB="#ee3a8c" CMYK="#00b46211" NAME="VioletRed2" />
+  <COLOR RGB="#cd3278" CMYK="#009b5532" NAME="VioletRed3" />
+  <COLOR RGB="#8b2252" CMYK="#00693974" NAME="VioletRed4" />
+  <COLOR RGB="#f5deb3" CMYK="#0017420a" NAME="Wheat" />
+  <COLOR RGB="#ffe7ba" CMYK="#00184500" NAME="Wheat1" />
+  <COLOR RGB="#eed8ae" CMYK="#00164011" NAME="Wheat2" />
+  <COLOR RGB="#cdba96" CMYK="#00133732" NAME="Wheat3" />
+  <COLOR RGB="#8b7e66" CMYK="#000d2574" NAME="Wheat4" />
+  <COLOR RGB="#ffffff" CMYK="#00000000" NAME="White" />
+  <COLOR RGB="#f5f5f5" CMYK="#0000000a" NAME="WhiteSmoke" />
+  <COLOR RGB="#ffff00" CMYK="#0000ff00" NAME="Yellow" />
+  <COLOR RGB="#ffff00" CMYK="#0000ff00" NAME="Yellow1" />
+  <COLOR RGB="#eeee00" CMYK="#0000ee11" NAME="Yellow2" />
+  <COLOR RGB="#cdcd00" CMYK="#0000cd32" NAME="Yellow3" />
+  <COLOR RGB="#8b8b00" CMYK="#00008b74" NAME="Yellow4" />
+  <COLOR RGB="#9acd32" CMYK="#33009b32" NAME="YellowGreen" />
+  <LAYERS DRUCKEN="1" NUMMER="0" NAME="Fond de page" SICHTBAR="1" LEVEL="0" />
+  <PDF ImagePr="0" BTop="9" UseProfiles="0" BLeft="9" PrintP="" RecalcPic="0" ImageP="" SolidP="" PicRes="300" Thumbnails="0" CMethod="0" UseLayers="0" Encrypt="0" BRight="9" Binding="0" Articles="0" InfoString="" RGBMode="1" Grayscale="0" PresentMode="0" Permissions="-4" Intent="1" Compress="1" Version="14" Resolution="300" Bookmarks="0" UseProfiles2="0" RotateDeg="0" MirrorV="0" Quality="0" UseLpi="0" PassUser="" BBottom="40" Intent2="1" MirrorH="0" PassOwner="" >
+   <Fonts Name="Blue Highway   Bold" />
+   <Effekte pageViewDuration="1" Di="0" pageEffectDuration="1" effectType="0" Dm="0" M="0" />
+   <LPI Angle="45" Frequency="75" SpotFunction="2" Color="Black" />
+   <LPI Angle="105" Frequency="75" SpotFunction="2" Color="Cyan" />
+   <LPI Angle="75" Frequency="75" SpotFunction="2" Color="Magenta" />
+   <LPI Angle="90" Frequency="75" SpotFunction="2" Color="Yellow" />
+  </PDF>
+  <DocItemAttributes/>
+  <TablesOfContents/>
+  <MASTERPAGE NUM="0" BORDERTOP="9" NAM="Normal" LEFT="0" BORDERBOTTOM="40" BORDERRIGHT="9" NumVGuides="0" PAGEHEIGHT="842" PAGEWIDTH="595" PAGEYPOS="20" HorizontalGuides="" MNAM="" PAGEXPOS="100" NumHGuides="0" VerticalGuides="" BORDERLEFT="9" />
+  <PAGE NUM="0" BORDERTOP="9" NAM="" LEFT="0" BORDERBOTTOM="40" BORDERRIGHT="9" NumVGuides="0" PAGEHEIGHT="842" PAGEWIDTH="595" PAGEYPOS="20" HorizontalGuides="" MNAM="Normal" PAGEXPOS="100" NumHGuides="0" VerticalGuides="" BORDERLEFT="9" />
+  <PAGEOBJECT OnMasterPage="" BottomLine="0" REXTRA="1" ALIGN="0" LANGUAGE="French" NUMPO="16" PLINEART="1" TXTSCALE="100" RightLine="0" LOCALSCX="1" LINESP="14.4" ROT="0" TXTSHX="5" TXTSTROKE="Black" WIDTH="69" ImageRes="1" GROUPS="" LOCKR="0" IFONT="Blue Highway   Bold" LOCALSCY="1" NAMEDLST="" TXTSHY="-5" isInline="0" AUTOTEXT="0" FLIPPEDV="0" PCOLOR="None" RADRECT="0" REVERS="0" PRINTABLE="1" RATIO="1" FLIPPEDH="0" COLGAP="0" PCOLOR2="None" NEXTITEM="-1" NUMGROUP="0" TransValue="0" PLINEEND="0" TXTSTW="-0.1" FRTYPE="0" PTYPE="4" ImageClip="" isTableItem="0" TEXTFLOW2="0" SHADE2="100" TXTBASE="0" PWIDTH="1" HEIGHT="23" DASHOFF="0" PFILE2="" PFILE="" TEXTFLOW3="0" ISIZE="12" PLTSHOW="0" LINESPMode="0" TXTSTYLE="0" CLIPEDIT="0" BACKITEM="-1" BookNr="0" TransValueS="0" EMBEDDED="1" PFILE3="" ANNAME="" SHADE="100" TXTULP="-0.1" COCOOR="0 0 0 0 69 0 69 0 69 0 69 0 69 23 69 23 69 23 69 23 0 23 0 23 0 23 0 23 0 0 0 0 " BASEOF="0" PICART="1" TXTKERN="0" COLUMNS="1" OwnPage="0" LAYER="0" BOOKMARK="0" startArrowIndex="0" TopLine="0" LOCK="0" EPROF="" BBOXX="0" DASHS="" IRENDER="0" TEXTFLOW="0" BBOXH="0" TXTFILLSH="100" YPOS="67" ANNOTATION="0" LOCALX="0" GRTYP="0" XPOS="166" NUMCO="16" POCOOR="0 0 0 0 69 0 69 0 69 0 69 0 69 23 69 23 69 23 69 23 0 23 0 23 0 23 0 23 0 0 0 0 " EXTRA="1" LOCALY="0" NUMDASH="0" LeftLine="0" PRFILE="" TEXTRA="1" SCALETYPE="1" TXTOUT="1" TXTFILL="Black" endArrowIndex="0" BEXTRA="1" PLINEJOIN="0" TXTSTP="-0.1" TXTULW="-0.1" TXTSCALEV="100" TXTSTRSH="100" >
+   <ITEXT CAB="0" CCOLOR="Black" CBASE="0" CSTW="-0.1" CSIZE="12" CULP="-0.1" CH="Static Text" CSHADE2="100" CKERN="0" CSCALE="100" CSHADE="100" COUT="1" CSCALEV="100" CSTP="-0.1" CULW="-0.1" CSTYLE="0" CFONT="Blue Highway   Bold" CSHX="5" CSHY="-5" CSTROKE="Black" />
+   <PageItemAttributes/>
+  </PAGEOBJECT>
+  <PAGEOBJECT OnMasterPage="" BottomLine="0" REXTRA="1" ANACTYP="0" ALIGN="0" LANGUAGE="French" NUMPO="16" ANBSTY="0" PLINEART="1" TXTSCALE="100" RightLine="0" LOCALSCX="1" LINESP="14.4" ROT="0" TXTSHX="5" TXTSTROKE="Black" WIDTH="191" ImageRes="1" GROUPS="" LOCKR="0" ANMC="-1" ANZIEL="0" ANKACT="" IFONT="Blue Highway   Bold" LOCALSCY="1" NAMEDLST="" TXTSHY="-5" isInline="0" AUTOTEXT="0" FLIPPEDV="0" PCOLOR="None" RADRECT="0" REVERS="0" ANTOOLTIP="" PRINTABLE="1" RATIO="1" FLIPPEDH="0" COLGAP="0" PCOLOR2="None" NEXTITEM="-1" NUMGROUP="0" TransValue="0" ANICON="0" ANCHK="0" PLINEEND="0" TXTSTW="-0.1" FRTYPE="0" PTYPE="4" ImageClip="" isTableItem="0" TEXTFLOW2="0" ANHTML="0" ANXACT="" ANTYPE="3" SHADE2="100" TXTBASE="0" PWIDTH="1" HEIGHT="38" DASHOFF="0" PFILE2="" PFILE="" TEXTFLOW3="0" ANFLAG="0" ANEXTERN="../../tests" ANFACT="" ANBLACT="" ISIZE="12" PLTSHOW="0" LINESPMode="0" TXTSTYLE="0" CLIPEDIT="0" BACKITEM="-1" BookNr="0" TransValueS="0" EMBEDDED="1" PFILE3="" ANNAME="text_1" ANCHKS="0" ANVACT="" ANFOACT="" ANEACT="" SHADE="100" TXTULP="-0.1" COCOOR="0 0 0 0 191 0 191 0 191 0 191 0 191 38 191 38 191 38 191 38 0 38 0 38 0 38 0 38 0 0 0 0 " ANSCALE="0" ANROLL="" ANDACT="" BASEOF="0" PICART="1" TXTKERN="0" COLUMNS="1" OwnPage="0" LAYER="0" BOOKMARK="0" startArrowIndex="0" TopLine="0" LOCK="0" EPROF="" ANBCOL="Black" ANFONT="4" ANFEED="1" ANCACT="" BBOXX="0" DASHS="" IRENDER="0" TEXTFLOW="0" ANBWID="1" BBOXH="0" TXTFILLSH="100" YPOS="116" ANAA="0" ANNOTATION="1" LOCALX="0" GRTYP="0" XPOS="166" NUMCO="16" POCOOR="0 0 0 0 191 0 191 0 191 0 191 0 191 38 191 38 191 38 191 38 0 38 0 38 0 38 0 38 0 0 0 0 " EXTRA="1" ANFORMAT="0" LOCALY="0" NUMDASH="0" LeftLine="0" PRFILE="" TEXTRA="1" ANPLACE="1" ANVIS="0" ANDOWN="" SCALETYPE="1" TXTOUT="1" TXTFILL="Black" endArrowIndex="0" BEXTRA="1" ANACTION="" PLINEJOIN="0" TXTSTP="-0.1" TXTULW="-0.1" TXTSCALEV="100" TXTSTRSH="100" >
+   <PageItemAttributes/>
+  </PAGEOBJECT>
+  <PAGEOBJECT OnMasterPage="" BottomLine="0" REXTRA="1" ANACTYP="0" ALIGN="0" LANGUAGE="French" NUMPO="16" ANBSTY="0" PLINEART="1" TXTSCALE="100" RightLine="0" LOCALSCX="1" LINESP="14.4" ROT="0" TXTSHX="5" TXTSTROKE="Black" WIDTH="191" ImageRes="1" GROUPS="" LOCKR="0" ANMC="-1" ANZIEL="0" ANKACT="" IFONT="Blue Highway   Bold" LOCALSCY="1" NAMEDLST="" TXTSHY="-5" isInline="0" AUTOTEXT="0" FLIPPEDV="0" PCOLOR="None" RADRECT="0" REVERS="0" ANTOOLTIP="" PRINTABLE="1" RATIO="1" FLIPPEDH="0" COLGAP="0" PCOLOR2="None" NEXTITEM="-1" NUMGROUP="0" TransValue="0" ANICON="0" ANCHK="0" PLINEEND="0" TXTSTW="-0.1" FRTYPE="0" PTYPE="4" ImageClip="" isTableItem="0" TEXTFLOW2="0" ANHTML="0" ANXACT="" ANTYPE="3" SHADE2="100" TXTBASE="0" PWIDTH="1" HEIGHT="38" DASHOFF="0" PFILE2="" PFILE="" TEXTFLOW3="0" ANFLAG="0" ANEXTERN="../../../../../../../../home" ANFACT="" ANBLACT="" ISIZE="12" PLTSHOW="0" LINESPMode="0" TXTSTYLE="0" CLIPEDIT="0" BACKITEM="-1" BookNr="0" TransValueS="0" EMBEDDED="1" PFILE3="" ANNAME="text_2" ANCHKS="0" ANVACT="" ANFOACT="" ANEACT="" SHADE="100" TXTULP="-0.1" COCOOR="0 0 0 0 191 0 191 0 191 0 191 0 191 38 191 38 191 38 191 38 0 38 0 38 0 38 0 38 0 0 0 0 " ANSCALE="0" ANROLL="" ANDACT="" BASEOF="0" PICART="1" TXTKERN="0" COLUMNS="1" OwnPage="0" LAYER="0" BOOKMARK="0" startArrowIndex="0" TopLine="0" LOCK="0" EPROF="" ANBCOL="Black" ANFONT="4" ANFEED="1" ANCACT="" BBOXX="0" DASHS="" IRENDER="0" TEXTFLOW="0" ANBWID="1" BBOXH="0" TXTFILLSH="100" YPOS="165" ANAA="0" ANNOTATION="1" LOCALX="0" GRTYP="0" XPOS="165" NUMCO="16" POCOOR="0 0 0 0 191 0 191 0 191 0 191 0 191 38 191 38 191 38 191 38 0 38 0 38 0 38 0 38 0 0 0 0 " EXTRA="1" ANFORMAT="0" LOCALY="0" NUMDASH="0" LeftLine="0" PRFILE="" TEXTRA="1" ANPLACE="1" ANVIS="0" ANDOWN="" SCALETYPE="1" TXTOUT="1" TXTFILL="Black" endArrowIndex="0" BEXTRA="1" ANACTION="" PLINEJOIN="0" TXTSTP="-0.1" TXTULW="-0.1" TXTSCALEV="100" TXTSTRSH="100" >
+   <PageItemAttributes/>
+  </PAGEOBJECT>
+  <PAGEOBJECT OnMasterPage="" BottomLine="0" REXTRA="1" ANACTYP="0" ALIGN="0" LANGUAGE="French" NUMPO="16" ANBSTY="0" PLINEART="1" TXTSCALE="100" RightLine="0" LOCALSCX="1" LINESP="14.4" ROT="0" TXTSHX="5" TXTSTROKE="Black" WIDTH="191" ImageRes="1" GROUPS="" LOCKR="0" ANMC="-1" ANZIEL="0" ANKACT="" IFONT="Blue Highway   Bold" LOCALSCY="1" NAMEDLST="" TXTSHY="-5" isInline="0" AUTOTEXT="0" FLIPPEDV="0" PCOLOR="None" RADRECT="0" REVERS="0" ANTOOLTIP="" PRINTABLE="1" RATIO="1" FLIPPEDH="0" COLGAP="0" PCOLOR2="None" NEXTITEM="-1" NUMGROUP="0" TransValue="0" ANICON="0" ANCHK="0" PLINEEND="0" TXTSTW="-0.1" FRTYPE="0" PTYPE="4" ImageClip="" isTableItem="0" TEXTFLOW2="0" ANHTML="0" ANXACT="" ANTYPE="3" SHADE2="100" TXTBASE="0" PWIDTH="1" HEIGHT="38" DASHOFF="0" PFILE2="" PFILE="" TEXTFLOW3="0" ANFLAG="0" ANEXTERN="../../../../../../../../home" ANFACT="" ANBLACT="" ISIZE="12" PLTSHOW="0" LINESPMode="0" TXTSTYLE="0" CLIPEDIT="0" BACKITEM="-1" BookNr="0" TransValueS="0" EMBEDDED="1" PFILE3="" ANNAME="text_3" ANCHKS="0" ANVACT="" ANFOACT="" ANEACT="" SHADE="100" TXTULP="-0.1" COCOOR="0 0 0 0 191 0 191 0 191 0 191 0 191 38 191 38 191 38 191 38 0 38 0 38 0 38 0 38 0 0 0 0 " ANSCALE="0" ANROLL="" ANDACT="" BASEOF="0" PICART="1" TXTKERN="0" COLUMNS="1" OwnPage="0" LAYER="0" BOOKMARK="0" startArrowIndex="0" TopLine="0" LOCK="0" EPROF="" ANBCOL="Black" ANFONT="4" ANFEED="1" ANCACT="" BBOXX="0" DASHS="" IRENDER="0" TEXTFLOW="0" ANBWID="1" BBOXH="0" TXTFILLSH="100" YPOS="213" ANAA="0" ANNOTATION="1" LOCALX="0" GRTYP="0" XPOS="165" NUMCO="16" POCOOR="0 0 0 0 191 0 191 0 191 0 191 0 191 38 191 38 191 38 191 38 0 38 0 38 0 38 0 38 0 0 0 0 " EXTRA="1" ANFORMAT="0" LOCALY="0" NUMDASH="0" LeftLine="0" PRFILE="" TEXTRA="1" ANPLACE="1" ANVIS="0" ANDOWN="" SCALETYPE="1" TXTOUT="1" TXTFILL="Black" endArrowIndex="0" BEXTRA="1" ANACTION="" PLINEJOIN="0" TXTSTP="-0.1" TXTULW="-0.1" TXTSCALEV="100" TXTSTRSH="100" >
+   <PageItemAttributes/>
+  </PAGEOBJECT>
+ </DOCUMENT>
+</SCRIBUSUTF8NEW>
diff --git a/product/ERP5Form/tests/testPDFForm.py b/product/ERP5Form/tests/testPDFForm.py
new file mode 100644
index 0000000000..21ab3cce6d
--- /dev/null
+++ b/product/ERP5Form/tests/testPDFForm.py
@@ -0,0 +1,130 @@
+##############################################################################
+#
+# Copyright (c) 2007 Nexedi SARL and Contributors. All Rights Reserved.
+#          Jerome Perrin <jerome@nexedi.com>
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsability of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# garantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+##############################################################################
+
+import unittest
+import os
+
+from Products.ERP5Form.PDFForm import PDFForm
+from Products.ERP5.Document.Document import Document
+
+
+class TestPDFForm(unittest.TestCase):
+  """Tests PDF Form
+  """
+  def setUp(self):
+    """Creates a PDFForm, and a document on which the PDF form is rendered.
+    """
+    self.document = Document('doc_id', title='The Document')
+    pdf_file = open(os.path.join(os.path.dirname(__file__),
+                                      'data', 'test_1.pdf'))
+    self.pdf_form = PDFForm('test_pdf_form').__of__(self.document)
+    self.pdf_form.manage_upload(pdf_file)
+    
+  def test_getCellNames(self):
+    self.assertEquals(['text_1', 'text_2', 'text_3'],
+                      self.pdf_form.getCellNames())
+
+  def test_SimpleGeneratePDF(self):
+    self.pdf_form.setCellTALES('text_1', 'string:Something simple')
+    self.failUnless(self.pdf_form.generatePDF())
+    # aliases
+    self.failUnless(self.pdf_form.index_html())
+    self.failUnless(self.pdf_form())
+  
+  def test_EmptyGeneratePdf(self):
+    self.failUnless(self.pdf_form.generatePDF())
+    # aliases
+    self.failUnless(self.pdf_form.index_html())
+    self.failUnless(self.pdf_form())
+  
+  def test_showCellName(self):
+    self.failUnless(self.pdf_form.showCellNames())
+  
+  def test_CellTALES(self):
+    self.pdf_form.setCellTALES('text_1', 'here/getId')
+    self.assertEquals('here/getId', self.pdf_form.getCellTALES('text_1'))
+
+  def test_setInvalidTALES(self):
+    from Products.PageTemplates.TALES import CompilerError
+    self.pdf_form.setCellTALES('text_1', 'python:(inv.alid "= ')
+    # maybe should raise when setting the TALES, not when getting ?
+    self.assertRaises(CompilerError, self.pdf_form.evaluateCell, 'text_1')
+  
+  def test_EditCells(self):
+    self.pdf_form.doEditCells(REQUEST=dict(text_1='here/getId',
+                                           text_2='string:'))
+    self.assertEquals('here/getId', self.pdf_form.getCellTALES('text_1'))
+    self.assertEquals('string:', self.pdf_form.getCellTALES('text_2'))
+  
+  def test_EvaluateCell(self):
+    self.pdf_form.setCellTALES('text_1', 'here/getId')
+    self.assertEquals('doc_id', self.pdf_form.evaluateCell('text_1'))
+  
+  def test_EvaluateNonExistCell(self):
+    self.assertRaises(KeyError, self.pdf_form.evaluateCell,
+                      'this_cell_does_not_exist')
+  
+  def test_CalculateCellValues(self):
+    self.pdf_form.setCellTALES('text_1', 'here/getId')
+    self.pdf_form.setCellTALES('text_2', 'string:static')
+    calculated_values = self.pdf_form.calculateCellValues()
+    self.assertEquals('doc_id', calculated_values['text_1'])
+    self.assertEquals('static', calculated_values['text_2'])
+  
+  def test_CalculateCellValuesWithCellKey(self):
+    self.pdf_form.setCellTALES('text_1', 'here/getId')
+    self.pdf_form.setCellTALES('text_2', 'cell/text_1')
+    calculated_values = self.pdf_form.calculateCellValues()
+    self.assertEquals('doc_id', calculated_values['text_1'])
+    self.assertEquals('doc_id', calculated_values['text_2'])
+  
+  def test_CalculateCellValuesTotal(self):
+    # The original use case of `cell`
+    self.pdf_form.setCellTALES('text_1', 'python:3')
+    self.pdf_form.setCellTALES('text_2', 'python:2')
+    self.pdf_form.setCellTALES('text_3',
+                               'python:cell["text_1"] + cell["text_2"]')
+    self.assertEquals(3 + 2, self.pdf_form.calculateCellValues()['text_3'])
+  
+  def test_CalculateCellValuesCircularRefs(self):
+    self.pdf_form.setCellTALES('text_1', 'cell/text2')
+    self.pdf_form.setCellTALES('text_2', 'cell/text_1')
+    from Products.ERP5Form.PDFForm import CircularReferencyError
+    self.assertRaises(CircularReferencyError,
+                      self.pdf_form.calculateCellValues)
+  
+  def test_CalculateCellValuesParms(self):
+    self.pdf_form.setCellTALES('text_1', 'a_parameter')
+    calculated_values = self.pdf_form.calculateCellValues(a_parameter='Value')
+    self.assertEquals('Value', calculated_values['text_1'])
+  
+
+def test_suite():
+  suite = unittest.TestSuite()
+  suite.addTest(unittest.makeSuite(TestPDFForm))
+  return suite
-- 
2.30.9