[Erp5-report] r13206 - in /erp5/trunk/products/ERP5Form: ./ tests/ tests/data/

nobody at svn.erp5.org nobody at svn.erp5.org
Sat Mar 3 14:24:30 CET 2007


Author: jerome
Date: Sat Mar  3 14:24:11 2007
New Revision: 13206

URL: http://svn.erp5.org?rev=13206&view=rev
Log:
Unit tests for PDFForm.
Some cleanup in PDFForm, and minor changes to make it easier to test.


Added:
    erp5/trunk/products/ERP5Form/tests/data/
    erp5/trunk/products/ERP5Form/tests/data/test_1.pdf   (with props)
    erp5/trunk/products/ERP5Form/tests/data/test_1.sla
    erp5/trunk/products/ERP5Form/tests/testPDFForm.py
Modified:
    erp5/trunk/products/ERP5Form/PDFForm.py

Modified: erp5/trunk/products/ERP5Form/PDFForm.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/PDFForm.py?rev=13206&r1=13205&r2=13206&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/PDFForm.py (original)
+++ erp5/trunk/products/ERP5Form/PDFForm.py Sat Mar  3 14:24:11 2007
@@ -52,10 +52,10 @@
 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 @@
   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 @@
     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 @@
   # 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 @@
       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,20 +237,36 @@
       # 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,
+    using a TALES expression for each cell.
+
+  TODO:
+    * cache compiled TALES
+    * set _v_errors when setting invalid TALES (setCellTALES can raise, but
+      not doEditCells)
   """
-    This class allows to fill PDF Form with TALES expressions,
-    using a TALES expression for each cell.
-  """
+
   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 @@
       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__ = ""
-
-    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
+    self.cells = PersistentMapping()
+
+    # File constructor will set the file content
     File.__init__(self, id, title, pdf_file)
 
   security.declareProtected(Permissions.ManagePortal, 'manage_upload')
@@ -389,7 +400,7 @@
       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 @@
     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 @@
       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 @@
     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 @@
             '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 @@
           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 @@
   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')

Added: erp5/trunk/products/ERP5Form/tests/data/test_1.pdf
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/tests/data/test_1.pdf?rev=13206&view=auto
==============================================================================
Binary file - no diff available.

Propchange: erp5/trunk/products/ERP5Form/tests/data/test_1.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: erp5/trunk/products/ERP5Form/tests/data/test_1.sla
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/tests/data/test_1.sla?rev=13206&view=auto
==============================================================================
--- erp5/trunk/products/ERP5Form/tests/data/test_1.sla (added)
+++ erp5/trunk/products/ERP5Form/tests/data/test_1.sla Sat Mar  3 14:24:11 2007
@@ -1,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>

Added: erp5/trunk/products/ERP5Form/tests/testPDFForm.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/tests/testPDFForm.py?rev=13206&view=auto
==============================================================================
--- erp5/trunk/products/ERP5Form/tests/testPDFForm.py (added)
+++ erp5/trunk/products/ERP5Form/tests/testPDFForm.py Sat Mar  3 14:24:11 2007
@@ -1,0 +1,130 @@
+##############################################################################
+#
+# Copyright (c) 2007 Nexedi SARL and Contributors. All Rights Reserved.
+#          Jerome Perrin <jerome at 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




More information about the Erp5-report mailing list