
    ohe
             	          d Z dZddlmZ ddlZddlmZ ddlZddlZddl	Z	ddl
Z	ddlZddlZddlZddlZddlmZ ddlmZ ddlZddlmZ dd	lmZ ddlZddlZdd
lmZmZmZmZmZ ddl m!Z! ddl"m#Z# ddl$m%Z% 	 ddl&Z&ddl'Z&ddl(m)Z)m*Z* dZ- ej\                         Z/ ej`                         Z1 e2ejf                  e4      rejf                  Z5nejj                  Z5 G d de5      Z6 ejn                  d      Z8 ejn                  d      Z9 ejn                  d      Z: ejn                  d      Z;dZ<de<z  Z=dZ>dZ?dZ@i ddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0e@d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDxZAZBi ddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0e@d7d8d1d2d3d4d5d6d9d:d;d<d=d>d?dAdExZCZDdFdGixZEZFdd-e@d2dAdHxZGZHi dIddJddKd!dLd#dMd%dNd'dOd)dPd+dQd-dRd/dSe@dTd8dUd2dVd4dWd6dXd:dYd<d=d>d?d@dAdBdCdZZIi dIddJddKd!dLd#dMd%dNd'dOd)dPd+dQd-dRd/dSe@dTd8dUd2dVd4dWd6dXd:dYd<d=d>d?dAd[ZJd\dGiZKdd-e@d2dAd]ZLddeBfd^Z3ddeBfd_ZMd` ZNeBfdaZOdb ZPdc ZQ G dd de      ZR eRdfg      ZS G dh di      ZT G dj dkej                        ZU G dl dmej                        ZW G dn doe#j                        ZXy# e+e,f$ r dZ&Y Kw xY w)pz
Open Document Format (ODF) Writer.

This module is provisional:
the API is not settled and may change with any minor Docutils version.
reStructuredText    )ConfigParserN)StringIO)urlopen)	HTTPError)ElementTree)minidom)frontendnodesutilswriters	languages)PIL)
standalone)
references   )OdtPygmentsProgFormatterOdtPygmentsLaTeXFormatterz1.0ac                        e Zd ZddZd Zd Zy)_ElementInterfaceWrapperNc                 D    t         j                  | ||       d t        | <   y N)_ElementInterface__init___parents)selftagattribs      C/usr/lib/python3/dist-packages/docutils/writers/odf_odt/__init__.pyr   z!_ElementInterfaceWrapper.__init__K   s    ""4f5    c                     |t         | <   y r   r   )r   parents     r   	setparentz"_ElementInterfaceWrapper.setparentO   s    r    c                     t         |    S r   r"   r   s    r   	getparentz"_ElementInterfaceWrapper.getparentR   s    ~r    r   )__name__
__module____qualname__r   r$   r'    r    r   r   r   J   s     r    r   z( +)z(\t+)z^ +z {2,}zrststyle-table-z%s0)borderz
border-topzborder-leftzborder-rightzborder-bottomzDocutils.org/odf_odtz0urn:oasis:names:tc:opendocument:xmlns:office:1.0chartz/urn:oasis:names:tc:opendocument:xmlns:chart:1.0dcz http://purl.org/dc/elements/1.1/domz!http://www.w3.org/2001/xml-eventsdr3dz.urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0drawz1urn:oasis:names:tc:opendocument:xmlns:drawing:1.0foz;urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0formz.urn:oasis:names:tc:opendocument:xmlns:form:1.0mathz"http://www.w3.org/1998/Math/MathMLmetaz.urn:oasis:names:tc:opendocument:xmlns:meta:1.0numberz3urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0officeoooz!http://openoffice.org/2004/officeoooczhttp://openoffice.org/2004/calcooowz!http://openoffice.org/2004/writerpresentationz6urn:oasis:names:tc:opendocument:xmlns:presentation:1.0scriptz0urn:oasis:names:tc:opendocument:xmlns:script:1.0stylez/urn:oasis:names:tc:opendocument:xmlns:style:1.0z8urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0z/urn:oasis:names:tc:opendocument:xmlns:table:1.0z.urn:oasis:names:tc:opendocument:xmlns:text:1.0zhttp://www.w3.org/2002/xformszhttp://www.w3.org/1999/xlinkz http://www.w3.org/2001/XMLSchemaz)http://www.w3.org/2001/XMLSchema-instance)svgtabletextxformsxlinkxsdxsi)r>   r?   r@   rB   manifestz2urn:oasis:names:tc:opendocument:xmlns:manifest:1.0)r.   r5   r7   r8   rB   zxmlns:chartxmlns:dcz	xmlns:domz
xmlns:dr3dz
xmlns:drawzxmlns:foz
xmlns:formz
xmlns:math
xmlns:metaxmlns:numberxmlns:officezxmlns:presentation	xmlns:oooz
xmlns:ooocz
xmlns:ooowzxmlns:scriptxmlns:style)	xmlns:svgxmlns:table
xmlns:textzxmlns:xformsxmlns:xlinkz	xmlns:xsdz	xmlns:xsi)rL   rM   rN   rO   zxmlns:manifest)rF   rG   rI   rJ   rO   c                 B    |i }t        | ||      \  } }t        | |      S r   )fix_nsr   )r   r   nsmapnsdicts       r   ElementrT      s+    ~ff-KC#C00r    c                     |i }t        |||      \  }}t        ||      }| j                  |       |j                  |        |S r   )rQ   r   appendr$   )r#   r   r   rR   rS   els         r   
SubElementrX     sG    ~ff-KC	!#v	.B
MM"LLIr    c                     t        | |      }i }t        |j                               D ]  \  }}t        ||      }|||<    ||fS r   )add_nslistitems)r   r   rS   nstagnsattribkeyvalnskeys           r   rQ   rQ     sR    3EH( SsF# (?r    c                     | S r   r+   )r   rS   s     r   rZ   rZ     s    Jr    c                     t               }| j                  |d       |j                         }|j                          |S )Nunicodeencoding)r   writegetvalueclose)et	outstreams1s      r   ToStringrm     s6    
IHHYH+				BOOIr    c                     | j                  dd      } | j                  dd      } | j                  dd      } d}| D ]1  }t        |      t        d      k\  r|d	t        |      fz  z  }-||z  }3 |S )
N&z&amp;<z&lt;>z&gt; z&#x%X;)replaceord)r@   asciichars      r   escape_cdatarx   "  s{    <<W%D<<V$D<<V$DE t9F#XT--ETME	
 Lr    c                   P    e Zd ZddZd Zd Z eee      Zd Zd Z	 eee	      Z
y)
TableStyleNc                      || _         || _        y r   )r,   backgroundcolor)r   r,   r|   s      r   r   zTableStyle.__init__5  s    .r    c                     | j                   S r   border_r&   s    r   get_border_zTableStyle.get_border_9  s    ||r    c                     || _         y r   r~   )r   r,   s     r   set_border_zTableStyle.set_border_<  s	    r    c                     | j                   S r   backgroundcolor_r&   s    r   get_backgroundcolor_zTableStyle.get_backgroundcolor_A  s    $$$r    c                     || _         y r   r   )r   r|   s     r   set_backgroundcolor_zTableStyle.set_backgroundcolor_D  s
     /r    NN)r(   r)   r*   r   r   r   propertyr,   r   r   r|   r+   r    r   rz   rz   4  s7    / k;/F%035IJOr    rz   z0.0007in solid #000000)r,   c                   8    e Zd Zd	dZd Zd Zd Zd Zd Zd Z	y)
	ListLevelc                 .    || _         || _        || _        y r   )levelsibling_levelnested_level)r   r   r   r   s       r   r   zListLevel.__init__Q  s    
*(r    c                     || _         y r   r   )r   r   s     r   set_siblingzListLevel.set_siblingV  s
    *r    c                     | j                   S r   r   r&   s    r   get_siblingzListLevel.get_siblingY  s    !!!r    c                     || _         y r   r   )r   r   s     r   
set_nestedzListLevel.set_nested\  s
    (r    c                     | j                   S r   r   r&   s    r   
get_nestedzListLevel.get_nested_  s       r    c                     || _         y r   r   )r   r   s     r   	set_levelzListLevel.set_levelb  	    
r    c                     | j                   S r   r   r&   s    r   	get_levelzListLevel.get_levele      zzr    N)TT)
r(   r)   r*   r   r   r   r   r   r   r   r+   r    r   r   r   P  s%    )
+")!r    r   c                      e Zd ZdZdZdZ	 dez   Z ej                  e	j                  j                   e	j                         d      e	j                  j                   ej                  e      e            ZdZ ej                  e	j                  j                   e	j                         d      e	j                  j                   ej                  e      e            Zddd	ez  d
geddfddgddifddgdddej(                  dfddgdddej(                  dfddgdej*                  dfddgdddej(                  dfd d!gdddej(                  dfd"d#gd$dd%ej(                  dfd&d'gd$dd%ej(                  dfd(d)gddd*ej(                  dfd+d,gddd*ej(                  dfd-d.gddd/ej(                  dfd0d1gddd/ej(                  dfd2d3gd$dd4ej(                  dfd5d6gd$dd4ej(                  dfd7d8gd9d:dfd;d<gd9d=dfffZd>d?iZd@ZdAZdBZdC ZdD ZdE ZdF Zej@                  fdGZ!dH Z"dI Z#dJ Z$dK Z%dL Z&dM Z'dN Z(y)OWriterz'application/vnd.oasis.opendocument.textz.odt)odtstylesdummyztemplate.txtzODF-Specific OptionsNz$Specify a stylesheet.  Default: "%s"z--stylesheet
stylesheet)defaultdesta}  Specify a configuration/mapping file relative to the current working directory for additional ODF options.  In particular, this file may contain a section named "Formats" that maps default style names to names to be used in the resulting output file allowing for adhering to external standards. For more info and the format of the configuration/mapping file, see the odtwriter doc.z--odf-config-filemetavarz<file>zyObfuscate email addresses to confuse harvesters while still keeping email links usable with standards-compliant browsers.z--cloak-email-addressesF
store_truecloak_email_addresses)r   actionr   	validatorz!Do not obfuscate email addresses.z--no-cloak-email-addressesstore_falsezLSpecify the thickness of table borders in thousands of a cm.  Default is 35.z--table-border-thickness)r   r   z/Add syntax highlighting in literal code blocks.z--add-syntax-highlightingadd_syntax_highlightingz@Do not add syntax highlighting in literal code blocks. (default)z--no-syntax-highlightingz'Create sections for headers.  (default)z--create-sectionsTcreate_sectionsz#Do not create sections for headers.z--no-sectionszCreate links.z--create-linkscreate_linkszDo not create links.  (default)z
--no-linkszFGenerate endnotes at end of document, not footnotes at bottom of page.z--endnotes-end-docendnotes_end_doczPGenerate footnotes at bottom of page, not endnotes at end of document. (default)z--no-endnotes-end-doczPGenerate a bullet list table of contents, not an ODF/oowriter table of contents.z--generate-list-tocgenerate_oowriter_toczHGenerate an ODF/oowriter table of contents, not a bullet list. (default)z--generate-oowriter-toczSpecify the contents of an custom header line.  See odf_odt writer documentation for details about special field character sequences.z--custom-odt-headerrr   custom_headerzSpecify the contents of an custom footer line.  See odf_odt writer documentation for details about special field character sequences.z--custom-odt-footercustom_footeroutput_encoding_error_handlerxmlcharrefreplace)stylesheet_pathzodf_odt writer)r   c                 X    t         j                  j                  |        t        | _        y r   )r   r   r   ODFTranslatortranslator_classr&   s    r   r   zWriter.__init__  s    % -r    c                    | j                   j                  | _        | j                  | j                         | _        | j                  j	                  | j
                         | j                   j                  | j                         | j                  j                          | j                          | j                  d   | _
        y )Nwhole)documentsettingsr   visitorretrieve_styles	EXTENSION	walkaboutadd_doc_titleassemble_my_partspartsoutputr&   s    r   	translatezWriter.translate  s    ..,,T]];$$T^^4-""$ jj)r    c                    t         j                  j                  |        t        j                         }t        j                  |dt
        j                        }| j                  |d| j                  t
        j                         | j                  j                         }| j                  |d|       | j                         }| j                  |d|       | j                         }| j                  |d|       | j                         }d}d}| j                  j                   r| j                  j                   j#                  dd	      }|j%                  d	      }|d
   j'                         }|dd D ]B  }t)        |      dk(  r"|j+                         r|j-                         } nt)        |      dk(  sB n |u	 t/        j0                  |      }	|	j%                  d      }	t)        |	      dkD  r|	d   j%                  d      }	|	d
   }|%| j4                  j6                  j9                  d       | j;                  | j                  j=                         ||      \  }
}}|
rt?        j@                  |      }| j                  |d|       | jC                  |       | jE                  |       |jG                          |jI                  d
       |jK                         }|jG                          || jL                  d<   | j4                  jN                  jP                  | jL                  d<   tR        jT                  | jL                  d<   y# t2        $ r |}	Y w xY w)zEAssemble the `self.parts` dictionary.  Extend in subclasses.
        wmimetype)compress_typecontent.xmlzMETA-INF/manifest.xmlmeta.xmlN_-r   r      .zinvalid language-region.
  Could not find region with locale.normalize().
  Please specify both language and region (ll-RR).
  Examples: es-MX (Spanish, Mexico),
  en-AU (English, Australia).
styles.xmlr   rf   version)+r   r   assemble_partstempfileNamedTemporaryFilezipfileZipFileZIP_DEFLATEDwrite_zip_str	MIME_TYPE
ZIP_STOREDr   content_astextcreate_manifestcreate_metaget_stylesheetlanguage_codert   splitlowerlenisalphaupperlocale	normalize	NameErrorr   reporterwarningupdate_stylesheetget_dom_stylesheetetreetostringstore_embedded_filescopy_from_stylesheetri   seekreadr   r   output_encodingdocutils__version__)r   fzfilecontentrl   r   region_codelanguage_idssubtagrcodeupdatednew_dom_stylesupdated_noder   s                 r   r   zWriter.assemble_my_parts  s    	%%d+'')3(<(<=:t~~!,, 	 	. ,,--/5-9!!#5"92>5*b1  "
 <<%%<<55==c3GL'--c2L(O113M&qr* v;!#(8"(,,.K[A% "*",,];E C(u:>!!HNN3/E"'(K&MM**2289 150F0FLL++-}k1K-/B5,3!!%(!!%(	q			#

7!%!7!7!G!G

: ( 4 4

9= ! *)E*s   ;M MMc                    d}t               }|||j                  d      }|t        d      |j                  d      }|st        d      |D ]  }|j                  j                  d      }	|	dk(  s|	dk(  s)|j                  d	      }
|
t        d
      |1||
j                  d<   ||
j                  d<   d}|j                  |
       |}||
j                  d<   ||
j                  d<   d}|j                  |
        |||fS )z@Update xml style sheet element with language and region/country.Fz8{urn:oasis:names:tc:opendocument:xmlns:office:1.0}stylesz5Cannot find 'styles' element in styles.odt/styles.xmlz>{urn:oasis:names:tc:opendocument:xmlns:style:1.0}default-stylez1Cannot find 'default-style' element in styles.xmlz7{urn:oasis:names:tc:opendocument:xmlns:style:1.0}family	paragraphgraphicz@{urn:oasis:names:tc:opendocument:xmlns:style:1.0}text-propertiesz3Cannot find 'text-properties' element in styles.xmlzE{urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0}languagezA{urn:oasis:names:tc:opendocument:xmlns:style:1.0}language-complexTzD{urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0}countryz@{urn:oasis:names:tc:opendocument:xmlns:style:1.0}country-complex)setfindRuntimeErrorfindallr   getadd)r   stylesheet_rootr   r   r   modified_nodesn1n2_nodesnodefamilyn3s              r   r   zWriter.update_stylesheetT  s   $(? %%B z"KM Mzz !H ",- - ! / [(Fi,?*+B z*45 5 %0 AN 		=>
 =J 		9: #'&**2.". @K 		<=
 <G 		89 #'&**2.;/< 77r    c                     t        j                  t        j                                }t        j                  ||      }d|_        ||_        |j                  ||       y )Nl     H )time	localtimer   ZipInfoexternal_attrr   writestr)r   r   namebytesr   r  zinfos          r   r   zWriter.write_zip_str  sD    NN499;/	i05+ue$r    c                     | j                   j                         }|D ]  \  }}|		 |j                  ||        y # t        $ r, | j                  j
                  j                  d|d       Y Sw xY w)NzCan't open file r   )r   get_embedded_file_listrg   OSErrorr   r   r   )r   r   embedded_filessourcedestinations        r   r   zWriter.store_embedded_files  sr    <<>#1 	8FK~8FK0		8
  8&&..-3688s   <2A10A1c                     | j                   j                  }t        j                  |d      }|j	                  d      }|j                          |S )z.
        modeled after get_stylesheet
        rsettings.xml)r   r   r   r   r   ri   )r   
stylespathr   rl   s       r   get_settingszWriter.get_settings  s?     ]]--

C0ZZ'	r    c                 6    | j                   j                         S )zXGet the stylesheet from the visitor.
        Ask the visitor to setup the page.
        )r   
setup_pager&   s    r   r   zWriter.get_stylesheet  s     ||&&((r    c                 \   | j                   j                  }t        j                  |d      }|j	                  d      }| j                  |d|       |j                         }|D ]7  }|j                  d      s|j	                  |      }|j                  ||       9 |j                          y)zLCopy images, settings, etc from the stylesheet doc into target doc.
        r#  r$  z	Pictures/N)
r   r   r   r   r   r   namelist
startswithr  ri   )r   
outzipfiler%  	inzipfilerl   r*  r  imageobjs           r   r   zWriter.copy_from_stylesheet  s     ]]--
OOJ4	^^N+:~r:%%' 	4D{+$>>$/##D(3	4 	r    c                      y r   r+   r&   s    r   r   zWriter.assemble_parts      r    c                    t        dt        t              }t        j                  |      }t        |d| j                  ddt               t        |ddddt               t        |ddddt               t        |ddd	dt               t        |ddd
dt               t        |      }t        j                  |      }|j                  d      S )Nzmanifest:manifestr   rS   zmanifest:file-entry/)zmanifest:media-typezmanifest:full-pathztext/xmlr   r   r$  r   z  )rT   MANIFEST_NAMESPACE_ATTRIBMANIFEST_NAMESPACE_DICTr   r   rX   r   MANNSDrm   r	   parseStringtoprettyxml)r   rootdocrl   s       r   r   zWriter.create_manifest  s    ,*

 %4.#'>>"%8
 	 	4.#-"/8
 	 	4.#-".8
 	 	4.#-"08
 	 	4.#-",8
 	 c]!!"%t$$r    c                    t        dt        t              }t        j                  |      }t        |dt              }t        |dt              }dt        |_        t        j                  j                  dd      }t        |d	t              }||_        t        j                  d
t        j                               }t        |dt              }||_        t        |dt              }||_        t        |dt              }||_        t        |dt              }d|_        t        |dt              }d|_        t        |dt              }d|_        | j                  j!                         }t        |dt              }|r||_        nd|_        | j                  j#                         j%                         D ]  \  }}|dk(  r7t'        j(                  d|      }	|	D ]  }
t        |dt              }|
|_         B|dk(  rt        |dt              }||_        a|dk(  rt        |dt              }||_        t        |dd|it              }||_         t+        |      }|S )Nzoffice:document-metar2  zoffice:metarS   zmeta:generatorzDocutils/rst2odf.py/USERrr   zmeta:initial-creatorz%Y-%m-%dT%H:%M:%Szmeta:creation-date
dc:creatorzdc:datezdc:languagezen-USzmeta:editing-cycles1zmeta:editing-durationPT00M01Szdc:titlez
[no title]keywordsz, *zmeta:keyworddescriptionzdc:descriptionsubjectz
dc:subjectzmeta:user-definedz	meta:name)rT   META_NAMESPACE_ATTRIBMETA_NAMESPACE_DICTr   r   rX   METNSDVERSIONr@   osenvironr
  r  strftimer  r   	get_titleget_meta_dictr\   rer   rm   )r   r9  r:  el1rl   s2titlepropvaluerA  keywords              r   r   zWriter.create_meta  s   "(&

 %$f=/?/69ZZ^^FB'5fE]].0@A3FC|F;y8}V<4VD6vF&&(z&9CH#CH<<557==? 	!KD%z!88E51' 'G$T>&IC&CH' & '7G " |FC  ':)4d(;FL !	!" c] 	r    ))r(   r)   r*   r   r   	supporteddefault_stylesheetr   relative_pathrH  pathjoingetcwdr   _datadir__file__default_stylesheet_pathdefault_templatedefault_template_pathr
   validate_booleanvalidate_nonnegative_intsettings_specsettings_defaultsrelative_path_settingsconfig_sectionconfig_section_dependenciesr   r   r   r   r   r   r   r   r&  r   r   r   r   r   r+   r    r   r   r   i  s   9III'!I-1e11
YRYY['*
&X&&x02DEG &/E//
YRYY['*
&X&&x02BCE
 	 "9: 6(	) %%H%'0 ++!*3!)!:!:<	= 1-.!+3!)!:!:<=!+, !)!B!BDE
 ?,-!*5!)!:!:<=.+,!+5!)!:!:<= 7$% *-!)!:!:<= 3 ! +-!)!:!:<= !"!**!)!:!:<= /!+*!)!:!:<=%%&!*.!)!:!:<=0()!+.!)!:!:<=5&' +3!)!:!:<=+*+ *3!)!:!:<=; ''+/	0; ''+/	0]t	
xMv 	()< &N"..*C5J08f 5<4H4H%	8) %>4r    r   c                   V   e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zdd
Zd Zd Zd Zd Zd Z e ed            \  ZZZ ej0                  d      Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$ddZ%ddZ&d  Z'd! Z(d" Z)d# Z*d$ Z+d% Z,d& Z-d' Z.d( Z/d) Z0d* Z1d+ Z2d, Z3d- Z4d. Z5d/ Z6d0 Z7d1 Z8d2 Z9d3 Z:d4 Z;d5 Z<d6 Z=d7 Z>d8 Z?d9 Z@d: ZAd; ZBd< ZCd= ZDd> ZEd? ZFd@ ZGdA ZHdB ZIdC ZJdD ZKdE ZLdF ZMdG ZNdH ZOdI ZPdJ ZQdK ZRdL ZSdM ZTdN ZUdO ZVdP ZWdQ ZXdR ZYdS ZZdT Z[dU Z\dV Z]dW Z^dX Z_dY Z`dZ Zad[ Zbd\ Zcd] Zdd^ Zed_ Zfd` Zgda Zhdb Zidc Zjdd Zkde Zldf Zmdg Zndh Zodi Zpdj Zqdk Zrdl Zsdm Ztdn Zudo Zvdp Zwdq Zxdr Zyds Zzg dtZ{du Z|dv Z}dw Z~dx Zdy Zdz Zd{ Zd| Zd} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Z	 ddZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZeZeZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZddZd Zd Zd Zd Zd Zd Zd Zd Zd ZdÄ ZdĄ Zdń ZdƄ ZdǄ ZdȄ ZdɄ Zdʄ Zd˄ Zd̄ Zd̈́ Zd΄ Zdτ ZdЄ Zdф Zdd҄Zdӄ ZddԄZdՄ Zdք Zdׄ Zd؄ Zdل Zdڄ Zdۄ Zd܄ Zd݄ Zdބ Zd߄ Zd Zd Zd Zd ZeZd ZeZd ZeZd ZeZd ZeZd ZeZd ZeZd ZeZd ZeZddZd Zd Z d Zd Zd Zd Zd Zd Zd Zd Zy)r   )[attributionblockindent
blockquoteblockquote-bulletitemblockquote-bulletlistblockquote-enumitemblockquote-enumlist
bulletitem
bulletlistcaptionlegendcenteredtextbody	codeblockcodeblock-indentedzcodeblock-classnamezcodeblock-commentzcodeblock-functionnamezcodeblock-keywordzcodeblock-namezcodeblock-numberzcodeblock-operatorzcodeblock-stringemphasisenumitemenumlistepigraphepigraph-bulletitemepigraph-bulletlistepigraph-enumitemepigraph-enumlistfooterfootnotecitationheader
highlightshighlights-bulletitemhighlights-bulletlisthighlights-enumitemhighlights-enumlisthorizontallineinlineliteral	quotationrubricstrongtable-titletextbodytocbulletlisttocenumlistrP  subtitleheading1heading2heading3heading4heading5heading6heading7zadmon-attention-hdrzadmon-attention-bodyzadmon-caution-hdrzadmon-caution-bodyzadmon-danger-hdrzadmon-danger-bodyzadmon-error-hdrzadmon-error-bodyzadmon-generic-hdrzadmon-generic-bodyzadmon-hint-hdrzadmon-hint-bodyzadmon-important-hdrzadmon-important-bodyzadmon-note-hdrzadmon-note-bodyzadmon-tip-hdrzadmon-tip-bodyzadmon-warning-hdrzadmon-warning-bodytableoptionztableoption.%cztableoption.%c%dzTable%dz
Table%d.%czTable%d.%c%d
lineblock1
lineblock2
lineblock3
lineblock4
lineblock5
lineblock6imagefigureframec                    t         j                  j                  | |       |j                  | _        | j                  j                  | _        t        j                  | j                  |j                        | _        i | _	        | j                  j                  rt               }|j                  | j                  j                         |j                  d      D ]K  \  }}|| j                  vr)| j                  j                  j!                  d|d       || j                  |<   M d| _        d| _        t'        dt(              }t+        j,                  |      | _        || _        t3        |d       t3        |d	       t3        |d
      }|| _        t3        |d      }| j7                  |      }|| _        || _        | j;                  d      g| _        g | _        d| _         tC        d      dz
  | _"        d| _#        d| _$        d | _%        d | _&        d | _'        d| _(        d| _)        i | _*        g | _+        d| _,        d| _-        g | _.        g | _/        d| _0        d| _1        d| _2        d| _3        d | _4        d| _5        d| _6        i | _7        g | _8        d| _9        d| _:        g | _;        d| _<        d| _=        g | _>        i | _?        d| _@        d| _A        d | _B        d| _C        d| _D        d| _E        d | _F        d | _G        d| _H        g | _I        y )NFormatszStyle "z#" is not a style used by odtwriter.r   zoffice:document-contentr   )elementzoffice:scriptszoffice:font-face-declszoffice:automatic-styleszoffice:bodyr  Ar   Fpythonrr   )Jr   GenericNodeVisitorr   r   r   r   get_languager   language
format_mapodf_config_filer   r   r\   used_stylesr   r   section_levelsection_countrT   CONTENT_NAMESPACE_ATTRIBr   r   content_treecurrent_elementrX   automatic_stylesgenerate_content_elementbody_text_elementrststyleparagraph_style_stacklist_style_stacktable_countru   column_counttrace_leveloptiontablestyles_generated
field_namefield_elementrP  image_countimage_style_count
image_dictembedded_file_listsyntaxhighlightingsyntaxhighlight_lexerheader_contentfooter_content	in_header	in_footer
blockstylein_table_of_contentstable_of_content_index_body
list_leveldef_list_levelfootnote_ref_dictfootnote_listfootnote_chars_idxfootnote_levelpending_idsin_paragraphfound_doc_titlebumped_list_level_stack	meta_dictline_block_levelline_indent_levelcitation_idstyle_indexstr_stylesheetstr_stylesheetcontentdom_stylesheettable_stylesin_citationinline_style_count_stack)r   r   parserr  formatr9  rW   s          r   r   zODFTranslator.__init__O  s     ))$9 ))!]]88!.. ==((!^FKK556$*LL$; 3 &4#3#33MM**22$() -3)3 %+
 "--d;#4)*41278 "m,**2.!!#&*mmJ&?%B" "HqL+0(!
!""$"#%-"  $)!+/(!#"#!$')$ !!" %'""   )+%r    c                     | j                   S r   )r  r&   s    r   get_str_stylesheetz ODFTranslator.get_str_stylesheet      """r    c                    d}| j                   j                  }t        j                  j	                  |      d   }|dk(  r(t        |dd      5 }|j                         }ddd       n`||k(  rIt        j                  |d      }|j                  d      }|j                  d      }|j                          nt        d	|d
|d      | _        || _        t        j                  | j                        | _        t        j                  | j                        | _        | j#                  |      | _        y# 1 sw Y   vxY w)z|Retrieve the stylesheet from either a .xml file or from
        a .odt (zip) file.  Return the content as a string.
        Nr   z.xmlr#  utf-8re   r   r   zstylesheet path (z
) must be z or .xml file)r   r   rH  rW  splitextopenr   r   r   ri   r  r  r  r   
fromstringr  dom_stylesheetcontentextract_table_stylesr  )r   	extensionrO  r%  ext
stylesfilerl   r   s           r   r   zODFTranslator.retrieve_styles  s    ]]--
ggz*1-&=j#8 'J__&' 'IOOJ4EL)BM*BKKM.8) E F F %'"#..t/B/BC%*%5%5&&&(" 55b9' 's   D55D>c                    t        j                  |      }i }|j                  dt        d   d      }|D ]  }|j	                  dt        d   d      }|j                  d      d   }|j	                  dt        d   d      }|j                  t              sf|j	                  |      }	|	t               }	|	||<   |d	k(  rK|j                  dt        d   d
      }
|
j	                  dt        d   dd      }||dk7  s||	_	        |dk(  s|j                  dt        d   d      }
|
| j                  |
      }|||	_         |S )N{r7   z}automatic-stylesr=   }namer   r   z}familyr?   z}table-propertiesr2   }zbackground-colornone
table-cellz}table-cell-properties)r   r  r  CNSDr
  r   r+  TABLESTYLEPREFIXrz   r|   get_propertyr,   )r   
styles_strr9  r  auto_styles	stylenoder  	tablenamer  
tablestyle
propertiesr   r,   s                r   r  z"ODFTranslator.extract_table_styles  sM   
+ii&*8n79$ 	7I==tG}!?@D

3*I]]4=#CDF/0)--i8
%!+J.8L+W$!*26w-B"DJ)~~$(J0BE GH+F0B5=
2|+!*7;G}G"IJ!-!%!2!2:!>!-06J--	7. r    c                 t    d }t         D ],  }|j                  dt        d   d|      }|$|dk7  s*|c S  |S )Nr  r2   r  r  )TABLEPROPERTYNAMESr
  r  )r   r  r,   propertynames       r   r  zODFTranslator.get_property  sF    . 	L]]tDz<#JKF!f&6	 r    c                 :   | j                   j                  }|rT|| _        | j                  sAt        dd| j	                  d      i      }||_        | j                  j                  d|       | j                  | j                        }|| j                  |       y y )Ntext:ptext:style-namerP  r  r   )
r   rP  r  rT   r  r@   r  insertfind_first_text_pattach_page_style)r   r@   rW   s      r   r   zODFTranslator.add_doc_title  s    }}""DJ''X%t}}W'=/  &&--a4##D$:$:;>""2& r    c                     |j                   dk(  s|j                   dk(  r|S |D ]  }| j                  |      }||c S  y)zHSearch the generated doc and return the first <text:p> element.
        r  text:hN)r   r  )r   rW   childrN  s       r   r  zODFTranslator.find_first_text_p  sN     66X8!3I ,,U3?J r    c                     |j                  d      }d}t        | j                  d|dddt              }|r|j	                  d|       |j	                  d|       y	)
zAttach the default page style.

        Create an automatic-style that refers to the current style
        of this element and that refers to the default page style.
        r  P1003style:stylezrststyle-pagedefaultr  )
style:namezstyle:master-page-namestyle:familyr2  style:parent-style-nameN)r
  rX   r  SNSDr  )r   rW   current_style
style_namerN  s        r   r  zODFTranslator.attach_page_style  sc     01
!!=(*@ +:  GG-}=
 *-r    c                 J    ||z  }| j                   j                  |d|z        S )z
        Returns the style name to use for the given style.

        If `parameters` is given `name` must contain a matching number of
        ``%`` and is used as a format expression with `parameters` as
        the value.
        zrststyle-%s)r  r
  )r   r  
parametersname1s       r   r  zODFTranslator.rststyle  s*     z!""5-%*?@@r    c                     t        |d      S )Nzoffice:text)rX   )r   r9  s     r   r  z&ODFTranslator.generate_content_element  s    $..r    c                 d   | j                  | j                         t        | j                        dkD  sDt        | j                        dkD  s,| j
                  j                  s| j
                  j                  r| j                  | j                         t        j                  | j                        S Nr   )setup_paperr  r   r  r  r   r   r   add_header_footerr   r   r&   s    r   r(  zODFTranslator.setup_page  s    ,,-##$q(4&&'!+}}**}}**""4#6#67~~d1122r    c                     | j                   S r   )r  r&   s    r   r   z ODFTranslator.get_dom_stylesheet%  r  r    c                 D   	 t        j                  dt         j                        }d |j                         D        \  fd |       y # t         j                  t
        t        f$ r- | j                  j                  j                  d       d\  Y Zw xY w)N)	paperconfz-s)stderrc              3   2   K   | ]  }t        |        y wr   )float).0ss     r   	<genexpr>z,ODFTranslator.setup_paper.<locals>.<genexpr>,  s     9E!H9   z-Cannot use `paperconf`, defaulting to Letter.)id  i  c                    | j                   dt        d   z  k(  rdt        d   z  | j                  vrdz  | j                  dt        d   z  <   dz  | j                  dt        d   z  <   ddz  z  x| j                  dt        d   z  <   | j                  d	t        d   z  <   ddz  z  x| j                  d
t        d   z  <   | j                  dt        d   z  <   y | D ]
  } |        y )Nz{%s}page-layout-propertiesr=   z{%s}page-widthr2   z%.3fptz{%s}page-height皙?z{%s}margin-leftz{%s}margin-rightz{%s}margin-topz{%s}margin-bottom)r   r  r   )rW   subelhr   walks     r   r)  z'ODFTranslator.setup_paper.<locals>.walk2  s    vv5WEE$tDz1B;Ca<		*T$Z78<DqL		+d4j89 Q'(		+d4j89II04:=> Q'(		*T$Z78II1DJ>?    EK r    )

subprocesscheck_outputSTDOUTr   CalledProcessErrorFileNotFoundError
ValueErrorr   r   info)r   root_el
dimensionsr(  r   r)  s      @@@r   r  zODFTranslator.setup_paper(  s    	#001D8B8I8IKJ9j&6&6&89DAq	  	W' --/@*M 	MM""''?ADAq	s   ?A ABBc                 ^   |j                  dt        d   z        }dt        d}|j                  |      }|y dt        d   d}|j                  |      }d }dt        d   d}| j	                  d      }|D ]  }|j                  |      |k(  s|} n |y |}	| j                  s| j                  j                  rt        |	d	t        t        
      }
| j                  D ]B  }t        dt              }| j	                  d      |j                  |<   |
j                  |       D | j                  j                  r(| j                  |
| j                  j                  d|       | j                   s| j                  j"                  rt        |	dt        t        
      }
| j                   D ]B  }t        dt              }| j	                  d      |j                  |<   |
j                  |       D | j                  j"                  r)| j                  |
| j                  j"                  d|       y y y )Nz{%s}automatic-stylesr7   r  z}master-stylesr=   z}master-pager  pagedefaultzstyle:headerr2  r  r<  r  zstyle:footerr}  )r  r  NAME_SPACE_1r	  r  r
  r  r   r   rX   STYLES_NAMESPACE_ATTRIBSTYLES_NAMESPACE_DICTrZ   r   rV   create_custom_headfootr  r   )r   r1  r  rW  	master_elmaster_el_containertarget_attribtarget_namerW   rN  el2attrkeys               r   r  zODFTranslator.add_header_footerB  s   "<<"T(^35&25LL&	 $(M4'//5	&*7m6mmM2% 	Bvvm$3		 $--"="=^.,C
 ))  !24@%)]]8%<		'"

2 }}**++MM//;KM $--"="=^.,C
 ))  !24@%)]]8%<		'"

2 }}**++MM//;KM + #>r       z%(..?)%c                 f   t        |dd| j                  |      i      }d }| j                  |      }|D ]z  }|d   t        j                  k(  rK|d   dvrd|d   d}t        |      | j                  ||d   ||      }	|	d|d   d}t        |      |	}d||d   |_        q|d   |_        | y )	Nr  r  r  r   r   )pPt1t2t3t4d1d2d3d4d5r"  tazbad field spec: %%)	rX   r  split_field_specifiers_iterr   
code_fieldr  make_field_elementr@   tail)
r   r#   r@   r  r  r  
field_iteritemmsgrN  s
             r   r8  z$ODFTranslator.create_custom_headfootu  s    FHt}}Z86
  55d;
 	3DAw-2227 #' '
 7;1g@C&s++--GZ)9; ;6:1g@C&s++&)O"*"&q'FK+/7O(+	3r    c           	      r   |dk(  rt        |dddi      }|S |dk(  rt        |di       }|S |dk(  r| xj                  d	z  c_        t        |d
| j                  |      dd| j                  z  d      }t        |dd| j                  z  t        d   t        d   d      }t        |dddi      }t        |d      }d|_        t        |dddi      }|S |dk(  r| xj                  d	z  c_        t        |d
| j                  |      dd| j                  z  d      }t        |dd| j                  z  t        d   t        d   d      }t        |dddi      }t        |d      }d|_        t        |dddi      }t        |d      }d|_        t        |dddi      }|S |dk(  r| xj                  d	z  c_        t        |d
| j                  |      dd| j                  z  d      }t        |dd| j                  z  t        d   t        d   d      }t        |dddi      }t        |d      }d|_        t        |dddi      }t        |d      }d|_        t        |d      }|S |dk(  r| xj                  d	z  c_        t        |d
| j                  |      dd| j                  z  d      }t        |dd| j                  z  t        d   t        d   d      }t        |dddi      }t        |d      }d|_        t        |dddi      }t        |d      }d|_        t        |dddi      }t        |d      }d|_        t        |d      }|S |dk(  r| xj                  d	z  c_        t        |d| j                  |      d | j                  z  d!      }t        |d"d | j                  z  dt        d   t        d   d#      }t        |d$ddi      }t        |d      }d%|_        t        |d&ddi      }t        |d      }d%|_        t        |d'      }|S |d(k(  r| xj                  d	z  c_        t        |d| j                  |      d | j                  z  d!      }t        |d"d | j                  z  dt        d   t        d   d#      }t        |d$ddi      }t        |d      }d%|_        t        |d&ddi      }t        |d      }d%|_        t        |d'ddi      }|S |d)k(  r| xj                  d	z  c_        t        |d| j                  |      d | j                  z  d!      }t        |d"d | j                  z  dt        d   t        d   d#      }t        |d$d*di      }t        |d      }d|_        t        |d&i       }t        |d      }d+|_        t        |d'ddi      }|S |d,k(  r| xj                  d	z  c_        t        |d| j                  |      d | j                  z  d!      }t        |d"d | j                  z  dt        d   t        d   d#      }t        |d$ddd-      }t        |d      }d|_        t        |d&i       }t        |d      }d+|_        t        |d'ddi      }|S |d.k(  r| xj                  d	z  c_        t        |d| j                  |      d | j                  z  d!      }t        |d"d | j                  z  t        d   t        d   d      }t        |d'ddi      }t        |d      }d/|_        t        |d$ddi      }t        |d      }d/|_        t        |d&ddi      }|S |d0k(  r!t        |d1d2| j                  |      i      }|S |d3k(  r!t        |d4d2| j                  |      i      }|S |d5k(  rt        |d6d7d8i      }|S d }|S )9NrA  ztext:page-numberztext:select-pagecurrentr  rB  ztext:page-countrC  r   z	text:timetruezrst-time-style-%d)r  
text:fixedstyle:data-style-nameznumber:time-styler6   r=   )r  rH   rK   znumber:hoursnumber:stylelongznumber:text:znumber:minutesrD  znumber:secondsrE   znumber:am-pmrF  rG  z	text:datezrst-date-style-%d)r  rZ  znumber:date-style)r  znumber:automatic-orderrH   rK   znumber:monthr3  z
number:dayznumber:yearrH  rI  number:textualz, rJ  )r_  r[  rK  r   r"  ztext:subjectr  rL  z
text:titlerM  ztext:author-namerY  false)rX   r  r  r  r@   )r   r#   r@   r  r  rN  r=  el3s           r   rQ  z ODFTranslator.make_field_element  s	   3;V%7"IA Cl 
e S[V%6 @ Cb 
] T\!V[#'==#<$'$*:*::	: C -/B1D4D4DD $X#G}L C
 S.: C S-0CCHS"2< Cx 
s T\!V[#'==#<$'$*:*::	: C -/B1D4D4DD $X#G}L C
 S.: C S-0CCHS"2< C S-0CCHS"2< CD 
 T\!V[#'==#<$'$*:*::	: C -/B1D4D4DD $X#G}L C
 S.: C S-0CCHS"2< C S-0CCHS.1CP 
O T\!V[#'==#<$'$*:*::	: C -/B1D4D4DD $X#G}L C
 S.: C S-0CCHS"2< C S-0CCHS"2< C S-0CCHS.1CV 
U T\!V[#'==#<'$*:*::: C
 -/B1D4D4DD*0 $X#G}	L C S.: C S-0CCHS,8 C S-0CCHS-0Cf 
e T\!V[#'==#<'$*:*::: C
 -/B1D4D4DD*0 $X#G}	L C S.: C S-0CCHS,8 C S-0CCHS-9 Cv 
q T\!V[#'==#<'$*:*::: C
 -/B1D4D4DD*0 $X#G}	L C S. &: C S-0CCHS,r:CS-0CCHS-9 CF 
A T\!V[#'==#<'$*:*::: C
 -/B1D4D4DD*0 $X#G}	L C S."( &: C S-0CCHS,r:CS-0CCHS-9 CT 
O T\!V[#'==#<'$*:*::: C
 -/B1D4D4DD $X#G}L C
 S-9 C S-0CCHS.: C S-0CCHS,8 C" 
 S[V^!4==#<= C 
 S[V\!4==#<; C 
 S[V%7gA C
 
 C
r    c              #   R  K   d}	 t         j                  j                  ||      }|r`|j                         }||kD  rt         j                  ||| f t         j
                  |j                  d      f |j                         }nn||d  }|rt         j                  |f y y w)Nr   r   )r   	field_patsearchstart	code_textrP  groupend)r   r@   pos1mopos2trailings         r   rO  z)ODFTranslator.split_field_specifiers_iter  s     ((//d;Bxxz$;'114T?BB#..;;vvx  ;))833 s   B%B'c                 v    | j                   j                         }t        j                  |      }t	        |      S r   )r  getrootr   r   rm   )r   r9  rj   s      r   astextzODFTranslator.astext  s0      ((*t$|r    c                 "    | j                         S r   )ro  r&   s    r   r   zODFTranslator.content_astext  s    {{}r    c                     || _         y r   rP  )r   rP  s     r   	set_titlezODFTranslator.set_title  r   r    c                     | j                   S r   rr  r&   s    r   rK  zODFTranslator.get_title  r   r    c                     || _         y r   r  )r   r  s     r   set_embedded_file_listz$ODFTranslator.set_embedded_file_list  s
    "4r    c                     | j                   S r   rv  r&   s    r   r  z$ODFTranslator.get_embedded_file_list  s    &&&r    c                     | j                   S r   )r  r&   s    r   rL  zODFTranslator.get_meta_dict  s    ~~r    c                    | j                   D ]q  \  }}|j                  j                  dg       }d}|D ]G  }| j                  j                  |      }|"|r)d}t	        j
                  |      }|j                  |       Mt        |      dkD  s\|d   }|j                  }	t        dt              }
|j                  |
d      }|d}t        d	t              }||_        | j                  j                  rd
}nd}|j                  j                          t        dt              }
||j                  |
<   t        dt              }
||j                  |
<   t        dt              }
d|j                  |
<   |	|_        J t y )NbackrefsTFr   text:idr<  zfootnote-errorrr   ztext:note-refendnoter~  text:note-classtext:ref-nametext:reference-formatpage)r  
attributesr
  r  copydeepcopyrV   r   r@   rZ   r  r   r   r   r   clear)r   r  rN  r{  firstrefr=  ra  r	  ref1	attribkeyid1r   
note_classs                 r   process_footnoteszODFTranslator.process_footnotes  sY   ++  	,ID#**:r:HE ,,,005? %"mmC0

3s8a<$'FE#(::D(.y(FI"%'')5E"FC"{&("("FC&)CG#}}==-6
-7
JJ,,.(./@(NI4>CJJy1(.t(LI47CJJy1(. 7)FI4:CJJy1'+CH;, 	,r    Nc                 8    || j                   }t        |||      S r   )r  rX   )r   r   r   r#   s       r   append_childzODFTranslator.append_child  s!    >))F&#v..r    c                     | j                  dd| j                  |      i      }| j                  |       |||_        |S )Nr  r  r  )r  r  append_pending_idsr@   )r   r=   r@   results       r   append_pzODFTranslator.append_p  sJ    ""8t}}U355" 6'FKr    c                     | j                   j                  r!| j                  D ]  }t        |dd|i        g | _        y )Nztext:reference-mark	text:namer  )r   r   r  rX   )r   rW   ids      r   r  z ODFTranslator.append_pending_ids  sE    ==%%&& &24>% && r    c                     || _         y r   )r  )r   rW   s     r   set_current_elementz!ODFTranslator.set_current_element  s
    !r    c                 B    | j                   j                         | _         y r   )r  r'   r&   s    r   set_to_parentzODFTranslator.set_to_parent  s    #33==?r    c                     | j                   j                  |   d}| j                  d      }t        |dd| j	                  d      i      }||_        | j                  d      S )Nr]  r  	text:spanr  r  r  rh  r  labelsr  rX   r  r@   r   r  labelrW   rN  s        r   generate_labeled_blockz$ODFTranslator.generate_labeled_block  s`    --e47]]:&%t}}X'>?A }}]++r    c                     | j                   j                  |   d}| j                  d      }t        |dd| j	                  d      i      }||_        |j                         |_        |S )Nr]  r  r  r  r  r  )r  r  r  rX   r  r@   ro  rR  r  s        r   generate_labeled_linez#ODFTranslator.generate_labeled_line  sc    --e47]]:&%t}}X'>?A ;;=	r    c                 &    |j                  dd      S )N
r^  )rt   )r   r@   s     r   encodezODFTranslator.encode  s    ||D#&&r    c                 f    | j                  |       t        j                  j                  | |       y)z9Override to catch basic attributes which many nodes have.N)handle_basic_attsr   r  dispatch_visitr   r  s     r   r  zODFTranslator.dispatch_visit  s&    t$  //d;r    c                 v    t        |t        j                        r|d   r| xj                  |d   z  c_        y y y )Nids)
isinstancer   rT   r  r  s     r   r  zODFTranslator.handle_basic_atts  s3    dEMM*tE{U+ 0;*r    c                 h    | j                   j                  j                  d|j                         y )Nzmissing visit_r   r   r   tagnamer  s     r   default_visitzODFTranslator.default_visit  s!    &&T\\'LMr    c                 h    | j                   j                  j                  d|j                         y )Nzmissing depart_r  r  s     r   default_departurezODFTranslator.default_departure  s!    &&dll'MNr    c                    t        |j                  t        j                  j                        ry |j                         }t        | j                        dkD  rQ| j                  d   j                  r#| j                  d   xj                  |z  c_        y || j                  d   _        y | j                  j                  r | j                  xj                  |z  c_	        y || j                  _	        y )Nr   r  )
r  r#   r   r   literal_blockro  r   r  rR  r@   )r   r  r@   s      r   
visit_TextzODFTranslator.visit_Text   s    dkk8>>#?#?@{{} t##$q(##B',,$$R(--5-04$$R(-##(($$))T1),0$$)r    c                      y r   r+   r  s     r   depart_TextzODFTranslator.depart_Text2  r0  r    c                 J    | j                  |d      }| j                  |       y )Naddressr  r  r   r  rW   s      r   visit_addresszODFTranslator.visit_address9  "    ((y9  $r    c                 $    | j                          y r   r  r  s     r   depart_addresszODFTranslator.depart_address=      r    c                     t        |j                  t        j                        r| j	                  d      }n| j                  |d      }| j                  |       y )Nrh  author)r  r#   r   authorsr  r  r  r  s      r   visit_authorzODFTranslator.visit_author@  sB    dkk5==1}-B,,T8<B  $r    c                 $    | j                          y r   r  r  s     r   depart_authorzODFTranslator.depart_authorG  r  r    c                     | j                   j                  d   d}| j                  d      }t        |dd| j	                  d      i      }||_        y )Nr  r]  r  r  r  r  r  r  r  s        r   visit_authorszODFTranslator.visit_authorsJ  sQ    --i8;]]:&%t}}X'>?A r    c                      y r   r+   r  s     r   depart_authorszODFTranslator.depart_authorsR  r0  r    c                 J    | j                  |d      }| j                  |       y )Ncontactr  r  s      r   visit_contactzODFTranslator.visit_contactU  r  r    c                 $    | j                          y r   r  r  s     r   depart_contactzODFTranslator.depart_contactY  r  r    c                 J    | j                  |d      }| j                  |       y )N	copyrightr  r  s      r   visit_copyrightzODFTranslator.visit_copyright\  s"    (({;  $r    c                 $    | j                          y r   r  r  s     r   depart_copyrightzODFTranslator.depart_copyright`  r  r    c                 (    | j                  |d       y )Ndater  r  s     r   
visit_datezODFTranslator.visit_datec  s    ""40r    c                      y r   r+   r  s     r   depart_datezODFTranslator.depart_datef  r0  r    c                 J    | j                  |d      }| j                  |       y )Norganizationr  r  s      r   visit_organizationz ODFTranslator.visit_organizationi  s"    ((~>  $r    c                 $    | j                          y r   r  r  s     r   depart_organizationz!ODFTranslator.depart_organizationm  r  r    c                 J    | j                  |d      }| j                  |       y )Nstatusr  r  s      r   visit_statuszODFTranslator.visit_statusp  s"    ((x8  $r    c                 $    | j                          y r   r  r  s     r   depart_statuszODFTranslator.depart_statust  r  r    c                 (    | j                  |d       y )Nrevisionr  r  s     r   visit_revisionzODFTranslator.visit_revisionw  s    ""44r    c                      y r   r+   r  s     r   depart_revisionzODFTranslator.depart_revisionz  r0  r    c                 (    | j                  |d       y )Nr   r  r  s     r   visit_versionzODFTranslator.visit_version}  s    ""43r    c                      y r   r+   r  s     r   depart_versionzODFTranslator.depart_version      r    c                 D    | j                  d|j                                y )Nrg  )r  ro  r  s     r   visit_attributionzODFTranslator.visit_attribution  s    mT[[]3r    c                      y r   r+   r  s     r   depart_attributionz ODFTranslator.depart_attribution  r0  r    c                    d|j                   d   v rA| j                  j                  | j                  d             | j                  d      | _        nd|j                   d   v rA| j                  j                  | j                  d             | j                  d      | _        n@| j                  j                  | j                  d             | j                  d      | _        | xj
                  dz  c_        y )Nrx  classesr  ri  r   )r  r  rV   r  r  r  r  s     r   visit_block_quotezODFTranslator.visit_block_quote  s    33&&--dmmJ.GH"mmJ7DOT__Y77&&--dmmL.IJ"mmL9DO&&--dmmL.IJ"mmL9DO!#r    c                 p    | j                   j                          d| _        | xj                  dz  c_        y )Nrr   r   )r  popr  r  r  s     r   depart_block_quotez ODFTranslator.depart_block_quote  s,    ""&&(!#r    c                    | xj                   dz  c_         | j                  r| j                  j                  ry d|v red|j                  d   v rTt        | j                  dd| j                  d      i      }| j                  j                  | j                  d             nSt        | j                  dd| j                  d	      i      }| j                  j                  | j                  d
             | j                  |       y | j                  | j                  d      k(  rUt        | j                  dd| j                  d      i      }| j                  j                  | j                  d             n7| j                  | j                  d      k(  rTt        | j                  dd| j                  d      i      }| j                  j                  | j                  d             n| j                  | j                  d      k(  rTt        | j                  dd| j                  d      i      }| j                  j                  | j                  d             nSt        | j                  dd| j                  d      i      }| j                  j                  | j                  d
             | j                  |       y )Nr   r  zauto-toc	text:listr  r  r  rv  r  rn  ri  rk  rj  r  r  r  rx  rz  ry  ro  )r  r  r   r   r  rX   r  r  r  rV   r  r  r  s      r   visit_bullet_listzODFTranslator.visit_bullet_list  sX   1$$}}22$"dooi&@@#D$8$8+)4==+GO B ))00z1JK#D$8$8+)4==+IO B ))00|1LM((,$--"== 4 4k%t}}5L'MK  %%,,MM"9:<DMM,$?? 4 4k%t}}5L'MK  %%,,MM"9:<DMM*$== 4 4k%t}}5J'KK  %%,,MM"78:   4 4k%t}}\'BK  %%,,T]]<-HI$$R(r    c                    | j                   rB| j                  j                  rnU| j                          | j                  j                          n*| j                          | j                  j                          | xj                  dz  c_        y Nr   )r  r   r   r  r  r  r  r  s     r   depart_bullet_listz ODFTranslator.depart_bullet_list  se    $$}}22""$%%))+ !!%%'1r    c                 *    t        j                         r   r   SkipChildrenr  s     r   visit_captionzODFTranslator.visit_caption        ""r    c                      y r   r+   r  s     r   depart_captionzODFTranslator.depart_caption  r0  r    c                     | j                  d      }t        |di       }t        |di       }t        j                  j	                  dd      }||_        t        |di       }|j                         |_        y )Nr  zoffice:annotationr  r>  r=  rr   r  )r  rX   rH  rI  r
  r@   ro  )r   r  rW   rN  r=  rl   s         r   visit_commentzODFTranslator.visit_comment  sc    ]]:&0<l26ZZ^^FB'hr2;;=r    c                      y r   r+   r  s     r   depart_commentzODFTranslator.depart_comment  r0  r    c                      y r   r+   r  s     r   visit_compoundzODFTranslator.visit_compound  r  r    c                      y r   r+   r  s     r   depart_compoundzODFTranslator.depart_compound  r0  r    c                     |j                   j                  dd      }t        |      dkD  r.| j                  j	                  | j                  |d                y y Nr  r+   r   )r  r
  r   r  rV   r  r   r  r   s      r   visit_containerzODFTranslator.visit_container  sI    $$Y3v;?&&--dmmF1I.FG r    c                     |j                   j                  dd      }t        |      dkD  r| j                  j	                          y y r  )r  r
  r   r  r  r  s      r   depart_containerzODFTranslator.depart_container  s:    $$Y3v;?&&**, r    c                      y r   r+   r  s     r   visit_decorationzODFTranslator.visit_decoration  r0  r    c                      y r   r+   r  s     r   depart_decorationzODFTranslator.depart_decoration  r0  r    c                 b    | xj                   dz  c_         | j                  dkD  rt        d      y )Nr      z*max definition list nesting level exceeded)r  r  r  r  s     r   visit_definition_listz#ODFTranslator.visit_definition_list  s4    q ??Q<> > r    c                 .    | xj                   dz  c_         y r  )r  r  s     r   depart_definition_listz$ODFTranslator.depart_definition_list  s    q r    c                      y r   r+   r  s     r   visit_definition_list_itemz(ODFTranslator.visit_definition_list_item  r0  r    c                      y r   r+   r  s     r   depart_definition_list_itemz)ODFTranslator.depart_definition_list_item	  r0  r    c                     | j                  d| j                  z        }|j                         |_        | j	                  |       t        j                         )Nzdeflist-term-%d)r  r  ro  r@   r  r   r  r  s      r   
visit_termzODFTranslator.visit_term  sF    ]],t/B/BBC++-  $  ""r    c                 $    | j                          y r   r  r  s     r   depart_termzODFTranslator.depart_term  r  r    c                     | j                   j                  | j                  d| j                  z               | j                  j                  t        d             y )Nzdeflist-def-%dr   )r  rV   r  r  r  r   r  s     r   visit_definitionzODFTranslator.visit_definition  sG    ""))MM*T-@-@@A	C$$++IaL9r    c                 l    | j                   j                          | j                  j                          y r   )r  r  r  r  s     r   depart_definitionzODFTranslator.depart_definition  s&    ""&&($$((*r    c                     t        | j                        dkD  rH| j                  d   }t        |dd| j                  d      i      }d|j	                         d|_        y y )	Nr   r  r  r  ru  r  z ())r   r  rX   r  ro  r@   r   r  rW   rN  s       r   visit_classifierzODFTranslator.visit_classifier  s]    t##$q(%%b)BK)4==+DEGC #'++-2CH )r    c                      y r   r+   r  s     r   depart_classifierzODFTranslator.depart_classifier&  r0  r    c                      y r   r+   r  s     r   visit_documentzODFTranslator.visit_document)  r0  r    c                 $    | j                          y r   )r  r  s     r   depart_documentzODFTranslator.depart_document,  s     r    c                    | xj                   dz  c_         | xj                  dz  c_        | j                  j                  rB| j	                  dd| j                  z  d| j                   z  d      }| j                  |       y y Nr   ztext:sectionz	Section%dzSect%d)r  r  r  r  r  r   r   r  r  r  s      r   visit_docinfozODFTranslator.visit_docinfo/  s    aa==((""!,t/A/A!A'/$2D2D'D( # B $$R( )r    c                 |    | xj                   dz  c_         | j                  j                  r| j                          y y r  r  r   r   r  r  s     r   depart_docinfozODFTranslator.depart_docinfo;  1    a==((  )r    c                 x    t        | j                  dd| j                  d      i      }| j                  |       y )Nr  r  ru  r  rX   r  r  r  r  s      r   visit_emphasiszODFTranslator.visit_emphasis@  s9      +%t}}Z'@AC 	  $r    c                 $    | j                          y r   r  r  s     r   depart_emphasiszODFTranslator.depart_emphasisF  r  r    c                 l   | j                   }| j                  | j                  d      k(  rKt        |dd| j                  d      i      }| j                  j                  | j                  d             n.| j                  | j                  d      k(  rJt        |dd| j                  d      i      }| j                  j                  | j                  d	             n| j                  | j                  d
      k(  rJt        |dd| j                  d      i      }| j                  j                  | j                  d             n^d|j                  dd      }t        |dd| j                  |      i      }| j                  j                  | j                  d             | j                  |       y )Nri  r  r  rm  r  rl  r  r  r  rx  r|  r{  z	enumlist-enumtypearabicrv  )r  r  r  rX   r  rV   r
  r  )r   r  rN  r=  liststylenames        r   visit_enumerated_listz#ODFTranslator.visit_enumerated_listI  sz   ""??dmmL99S+!4==1F#G7 C !!((7L)MN__l ;;S+!4==1F#G7 C !!((7L)MN__j 99S+!4==1D#E7 C !!((7J)KL	 : .2XXj(-KNMS+!4==#?7 C !!((z)BC  %r    c                 X    | j                          | j                  j                          y r   )r  r  r  r  s     r   depart_enumerated_listz$ODFTranslator.depart_enumerated_listb  s     !!#r    c                    | j                   rr| j                  j                  r9| j                  j	                  | j                  d| j                  fz               y | j                  d      }| j                  |       y | j                  d      }|}t        | j                        dkD  r| j                  d   }|j                         rf|j                  d       | j                  D ]F  }t        |j                               D ](  }| j                  d|      }| j                  d|      }* H | j                  j	                  | j                  d          | j                  |       y )Ncontents-%dztext:list-itemr   r  Fr  )r#   )r  r   r   r  rV   r  r  r  r  r   r  r   r   ranger   r  )r   r  rN  ra  	level_obj
level_obj1idxr=  s           r   visit_list_itemzODFTranslator.visit_list_itemf  sK    $$}}22**11MM-4??2E"EFH ''(89((-##$45CC4//014 88<	((*((/&*&B&B >
#()=)=)?#@ >C"&"3"3K"3"LC"&"3"3 0 #4 #>C>>
 &&--d.C.CB.GH$$S)r    c                 "   | j                   rB| j                  j                  r| j                  j	                          y | j                          y t        | j                        dkD  r| j                  d   }|j                         r`|j                  d       | j                  D ]@  }t        |j                               D ]"  }| j                          | j                          $ B | j                  j	                          | j                          y )Nr   r  T)r  r   r   r  r  r  r   r  r   r   rJ  r   )r   r  rK  rL  rM  s        r   depart_list_itemzODFTranslator.depart_list_item  s    $$}}22**..0""$4//014 88<	((*((.&*&B&B 1
#()=)=)?#@ 1C ..0 ..011 &&**, r    c                     d| _         y NTr  r  s     r   visit_headerzODFTranslator.visit_header  	    r    c                     d| _         y NFrS  r  s     r   depart_headerzODFTranslator.depart_header  	    r    c                     d| _         y rR  r  r  s     r   visit_footerzODFTranslator.visit_footer  rU  r    c                     d| _         y rW  r[  r  s     r   depart_footerzODFTranslator.depart_footer  rY  r    c                      y r   r+   r  s     r   visit_fieldzODFTranslator.visit_field  r0  r    c                      y r   r+   r  s     r   depart_fieldzODFTranslator.depart_field  r0  r    c                      y r   r+   r  s     r   visit_field_listzODFTranslator.visit_field_list  r0  r    c                      y r   r+   r  s     r   depart_field_listzODFTranslator.depart_field_list  r0  r    c                     | j                  d      }t        |dd| j                  d      i      }|j                         |_        y )Nr  r  r  r  r  )r  rX   r  ro  r@   r,  s       r   visit_field_namezODFTranslator.visit_field_name  s@    ]]:&%t}}X'>?A ;;=r    c                      y r   r+   r  s     r   depart_field_namezODFTranslator.depart_field_name  r0  r    c                 X    | j                   j                  | j                  d             y )Nrh  )r  rV   r  r  s     r   visit_field_bodyzODFTranslator.visit_field_body  s    ""))$--*FGr    c                 8    | j                   j                          y r   r  r  r  s     r   depart_field_bodyzODFTranslator.depart_field_body      ""&&(r    c                      y r   r+   r  s     r   visit_figurezODFTranslator.visit_figure  r0  r    c                      y r   r+   r  s     r   depart_figurezODFTranslator.depart_figure  r0  r    c                    | xj                   dz  c_         | j                  | _        t        d      }|| _        | j                  j                  ||f       t        |t        j                  j                        r+| j                  j                  | j                  d             y | j                  j                  | j                  d             y )Nr   ztext:note-bodyr  r~  )r  r  save_footnote_currentrT   r  rV   r  r   r   r  r  r  r   r  rN  s      r   visit_footnotezODFTranslator.visit_footnote  s    q %)%9%9"&'"!!4+.dHNN334&&--dmmJ.GH&&--dmmJ.GHr    c                     | j                   j                          | j                  | _        | xj                  dz  c_        y r  )r  r  rv  r  r  r  s     r   depart_footnotezODFTranslator.depart_footnote  s3    ""&&(#99q r    )	*z**z***z++z+++z##z###z@@z@@@c                 ~   | j                   dk  r|j                  d   d   }|j                  j                  d      }|d}| j                  j                  rd}nd}| j                  d||d	      }t        |j                  j                  d
d            }t        |t        j                  j                        r+d|j                         z  }t        |dd|i	      }||_        n|dk(  r4t        |dd|j                         i	      }|j                         |_        n{|dk(  rv| j                  t        t         j"                        k\  rd| _        t         j"                  | j                     }	| xj                  dz  c_        t        |dd|	i	      }|	|_        || j$                  |<   t        j&                         )Nr   r  refidrr   r}  r~  z	text:note)r|  r~  r  autor   z[%s]ztext:note-citationz
text:labelr?  r{  )r  r  r
  r   r   r  strr  r   r   citation_referencero  rX   r@   r  r   r   footnote_charsr  r  )
r   r  r  r}  r  rN  	note_autor  r=  footnote_chars
             r   visit_footnote_referencez&ODFTranslator.visit_footnote_reference  s   !#'*BOO''0E}}}--&
'
##K#(#-9# C DOO//:;I$ A AB!DKKM1 &: (D  $c! &: $++-D   ;;=c!**c%44/6 6./D+ - < <++!-''1,' &: -D  )),D""2&  ""r    c                      y r   r+   r  s     r   depart_footnote_referencez'ODFTranslator.depart_footnote_reference  r0  r    c                     d| _         |j                  d   D ]
  }|| _         n | j                  j	                  | j                  d             | j                  j	                  t        d             y )NTr  rh  r   )r  r  r  r  rV   r  r  r   )r   r  r  s      r   visit_citationzODFTranslator.visit_citation  sd    //%( 	B!D	 	""))$--*FG$$++IaL9r    c                     d | _         | j                  j                          | j                  j                          d| _        y rW  )r  r  r  r  r  r  s     r   depart_citationzODFTranslator.depart_citation
  s6    ""&&($$((* r    c                 <   | j                   j                  r?|j                  d   }| j                  d|dd      }d|_        | j                  |       y | j                  j                  d| j                  _        y | j                  xj                  dz  c_        y )Nr}  text:reference-refr@   r  r  r  [)r   r   r  r  r@   r  r  )r   r  r  rW   s       r   visit_citation_referencez&ODFTranslator.visit_citation_reference  s    ==%%)B""#7)+)/A" B BG$$R(!!&&.(+D  %  %%,%r    c                     | j                   xj                  dz  c_        | j                  j                  r| j	                          y y )N])r  r@   r   r   r  r  s     r   depart_citation_referencez'ODFTranslator.depart_citation_reference  s7    !!S(!==%%  &r    c                    t        |j                  t        j                  j                        rt        j
                         | j                  t| j                  d      }| j                  |       | j                  j                  r4t        |d      }d|_        | j                  dd| j                  i       y d|_        y y )Nr  r  r  ztext:reference-mark-startr  r  )r  r#   r   r   r~  r  r  r  r  r   r   rX   r@   r  )r   r  rW   el0s       r   visit_labelzODFTranslator.visit_label#  s    dkk8>>#:#:;$$&&)z*B$$R(}})) [1!!"=)9)9G!   *r    c                    t        |j                  t        j                  j                        ry | j
                  | j                  j                  r>| j                  dd| j
                  i       t        | j                  d      }d|_        n| j                  xj                  dz  c_        | j                          y y )Nztext:reference-mark-endr  r  r  r  )r  r#   r   r   r~  r  r   r   r  rX   r  r@   r  )r   r  r  s      r   depart_labelzODFTranslator.depart_label2  s    dkk8>>#:#:;)}}))!!";)9)9E!  !!5!5{C$$))S0)  *r    c                      y r   r+   r  s     r   visit_generatedzODFTranslator.visit_generated@  r0  r    c                      y r   r+   r  s     r   depart_generatedzODFTranslator.depart_generatedC  r0  r    c                 D    t         j                  j                  |      ryy)Nr   r   )rH  rW  exists)r   rW  s     r   check_file_existszODFTranslator.check_file_existsF  s    77>>$r    c                 t   d|j                   v r|j                   d   }|j                  d      s|j                  d      s|j                  t        j                        sQt	        j
                  |      \  }}|r7t        j                  j                  |      }|r|t        j                  |}| j                  |      s+| j                  j                  j                  d|d       y y || j                  v r| j                  |   \  }}n.| xj                  dz  c_        t        j                  j                  |      d   }d| j                  |fz  }|j                  d      s|j                  d      rw	 t        |      }|j!                         }	|j#                          t%        j&                  dd	
      }
|
j)                  |	       |
j#                          |
j*                  }|}||f}n!t        j                  j/                  |      |f}| j0                  j3                  |       ||f| j                  |<   | j4                  r| j6                  }n)t9        | j6                  dd| j;                  d      i      }|}t=        |j>                  t@        jB                  jD                        r>| jG                  ||||      \  }}}}i }| jI                  |||||      \  }}|||_%        y y | jI                  ||||       y # t,        $ r- | j                  j                  j                  d|d       Y Lw xY w)Nurizhttp:zhttps:zCannot find image file r   r   zPictures/1%08x%swbF)deletezCan't open image url r  r  r  r  )&r  r+  rH  sepr   get_source_linerW  dirnamer  r   r   r   r  r  r   r   r   ri   r   r   rg   r  r   abspathr  rV   r  r  rX   r  r  r#   r   r   figuregenerate_figuregenerate_imagerR  )r   r  r   	docsourceliner  filenamer!  imgfiler   imgfile2imgfilenamespecrN  r=  ra  el4el5rp  r   el6widths                         r   visit_imagezODFTranslator.visit_imageL  s   DOO#__U+F%%g.&2C2CH2M((0&+&;&;D&AOIt "$''//)"<"18"&&&%KF--f5MM**228>ACT__$$(OOF$;!Hk!ww}}V,Q/H,0@0@(/MMK  )V->->x-HA%foG%llnGMMO'::4NHNN7+NN$"*--K(F -/>##**40'-{&<DOOF#&&C$$h)4==+DEGC dkk8>>#8#89%)%9%9fS&""Cc7 F,,fkVJC "" # fk3?7 ! AMM**226<?AAs   9A1L 2L76L7c                      y r   r+   r  s     r   depart_imagezODFTranslator.depart_image  r0  r    c           
         d }d }||j                   v r{|j                   |   }|j                         }	 |j                  d      r2|dk(  rt        d      |j	                  d      }t        |      dz  }d}n| j                  |      \  }}||fS ||fS # t        $ rI}| j                  j                  j                  d|d|j                   |   d|d	       Y d }~||fS d }~ww xY w)
NrN  heightz!percentage not allowed for heightz %g      Y@zInvalid z for image: "z".  Error: "z".)
r  stripendswithr/  rstripr   convert_to_cmr   r   r   )r   r  attrsizeunitexps         r   get_image_width_heightz$ODFTranslator.get_image_width_height  s    4??"??4(D::<D;==%x'()LMM;;t,D ;.DD!%!3!3D!9JD$ TztTz  ;&&.. dood3S:; ; Tz;s   AB 	C$<CC$c                    |j                         }|j                  d      rt        |dd       dz  }n|j                  d      rt        |dd       dz  }n|j                  d      rt        |dd       dz  }nq|j                  d	      rt        |dd       d
z  }nN|j                  d      rt        |dd       dz  }n+|j                  d      rt        |dd       }nt        d      d}||fS )zConvert various units to centimeters.

        Note that a call to this method should be wrapped in:
            try: except ValueError:
        pxN9v?ingRQ@ptgQ?pcg+@mmr&  cmzunknown unit type)r  r  r   r/  )r   r  r  s      r   r  zODFTranslator.convert_to_cm  s     zz|==cr#e+D]]4 cr#d*D]]4 cr#e+D]]4 cr#e+D]]4 cr#c)D]]4 cr#D011Tzr    c                 T   d|j                   v rR|j                   d   }	 t        |      }|dk  r+| j                  j                  j                  d|d       d}|dz  }|S d}|S # t        $ r9 | j                  j                  j                  d|j                   d   d       Y |w xY w)	NscalezInvalid scale for image: ""r   zscale out of range (z), using 1.g{Gz?g      ?)r  intr/  r   r   r   )r   r  r  s      r   get_image_scalezODFTranslator.get_image_scale  s    doo%OOG,E5E

 qy&&..;@CEDLE  E  5&&..0455s   A% %?B'&B'c                 
   | j                  |      }| j                  |d      \  }}| j                  |d      \  }}d}t        ~|| j                  v rp| j                  |   \  }	}
t        j                  j                  |	d      5 }|j                  }|j                  j                  d|      }ddd       	 t        |       nd}||t        d      ||d   }t        |      d	z  }||d
   }t        |      d	z  }|dk(  rJ|}|d   }t        |      d	z  }|d
   }t        |      d	z  }| j                         }||z  }||z  |z  }||z  }||z  }||z  }d|z  }d|z  }||fS # 1 sw Y   xY w# t        $ r ||f}Y w xY w)z=Return the image size in centimeters adjusted by image attrs.r  r  )H   r  Nr#  dpiz4image size not fully specified and PIL not installedr   r  r   rN  z%.2fcm)r  r  r   r  Imager  r  r0  r
  iter	TypeErrorr  r   get_page_width)r   r  r   r  r  
width_unitr  r   r  r  r!  imgimg_sizefactorimage_widthimage_height
line_widths                    r   get_image_scaled_width_heightz+ODFTranslator.get_image_scaled_width_height  s   $$T* 77gFz//h?	?v8$(OOF$;!Hk#. /#88hhll5#./!S	 H=FN"JL L} eu,~!!v.S &qk#K058'{$\2U:!002
+ :-<,.%5 F"f}E/ /  !Cj!s   )E&6E2 &E/2FFc                    | j                         }|j                  d      }d}|D ]  }|j                  d      }|j                  d      }|j                  d      }|||=	 | j                  |      \  }}| j                  |      \  }}| j                  |      \  }}||z
  |z
  } |d}|S # t        $ r( | j
                  j                  j                  d       Y @w xY w)z0Return the document's page width in centimeters.z.//{urn:oasis:names:tc:opendocument:xmlns:style:1.0}page-layout/{urn:oasis:names:tc:opendocument:xmlns:style:1.0}page-layout-propertiesNzG{urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0}page-widthzH{urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0}margin-leftzI{urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0}margin-rightz;Stylesheet file contains invalid page width or margin size.g{Gz.@)r   iterfindr
  r  r/  r   r   r   )	r   r9  r   r  r  
page_widthmargin_leftmargin_rightr   s	            r   r  zODFTranslator.get_page_width  s    &&(%&
  	<DJ ((K  88 L "&'' $ 2 2: >
A!%!3!3K!@Q"&"4"4\"Ba
 ,|;E-	<. = E  '&&..&''s   $<B00.C! C!c           	      v   d }| j                  ||      \  }}|j                  j                  D ]"  }|j                  dk(  s|j	                         }$ | xj
                  dz  c_        |\ddddd}	t        | j                  d|	t        	      }
d
d
ddd}	t        |
d|	t        	       ddddddddd}	t        |
d|	t        	       d| j
                  z  }dt        t              z  }|d| j                  d      d}	t        | j                  d|	t        	      }
i }	d}|j                  j                  j                  d      }|rd|v rd}|rd|	d<   nd |	d<   t        |
d!|	t        	       ||ddd"}	||	d#<   t        |d$|	%      }i }	t        |d&|	%      }d'| j                  d      i}	t        |d(|	%      }||||fS ))Nrp  r   extrar  CaptionStandard)zstyle:classr  r  r  r  r2  z0.0835in0r`  )fo:margin-bottomfo:margin-topztext:line-numberztext:number-lineszstyle:paragraph-properties12ptitalicTimesLucidasans1)zfo:font-sizezfo:font-stylezstyle:font-namezstyle:font-name-complexzstyle:font-size-asianzstyle:font-size-complexzstyle:font-style-asianzstyle:font-style-complexzstyle:text-propertiesrstframestyle%d
graphics%dr  r  r  r  r  Fr  wrapTdynamic
style:wrapr  style:graphic-properties)draw:style-name	draw:nametext:anchor-typedraw:z-index	svg:width
draw:framer  zdraw:text-boxr  r  )r  r#   childrenr  ro  r  rX   r  r  nextIMAGE_NAME_COUNTERr  r  r
  )r   r  r   r!  r  rp  r  r  node1r   rN  r  	draw_namer  r  ra  r  r  s                     r   r  zODFTranslator.generate_figure"	  s   ::4Hv[[)) 	)E}}	),,.	) 	!# & +'+5	F T22M$*49C %/!+$'%,	F s8$T3 !'!)#*+8)/+1*2,4	F s3$T3&)?)??
 4(:#;;	 %%'+}}]'C

 ..&vdD++((,,Y7v(D#,F< #)F< 32 	/  *" +	
 ${,vFof=t}}Y7
 hv6Cg%%r    c                 L   | j                  ||      \  }}| xj                  dz  c_        d| j                  z  }|d| j                  d      d}	t        | j                  d|	t
              }
d }d }d|j                  v r2|j                  d   j                         }|D ]  }|d	v r|}
|d
v s|} |ddddddddddddddd}	n|}	|||	d<   |||	d<   d}|j                  j                  d      }|rd|v rd}|rd|	d<   nd|	d<   | j                  |      rd|	d<   t        |
d|	t
               dt        t              z  }||dd}	t        |j                  t        j                        rd |	d!<   nd|	d!<   ||	d"<   ||	d#<   t        |d$|	%      }
t        |
d&|d'd(d)d*%       |
|fS )+Nr   r  r  r  r  r  r2  align)leftcenterright)topmiddlebottomr  r  r  zrect(0cm 0cm 0cm 0cm)z0%z100%r`  standard)style:vertical-poszstyle:vertical-relzstyle:horizontal-relzstyle:mirrorzfo:clipzdraw:luminancezdraw:contrastzdraw:redz
draw:greenz	draw:bluez
draw:gammazdraw:color-inversionzdraw:image-opacityzdraw:color-modezstyle:horizontal-posr  Fr  r  Tr  r  r  r  r?  )r  r  r  zas-charr  r  z
svg:heightr  r  z
draw:imagesimpleembedonLoad)
xlink:href
xlink:typez
xlink:showzxlink:actuate)r  r  r  rX   r  r  r  r   r
  is_in_tabler  r  r  r#   r   TextElement)r   r  r   r!  r  frame_attrsr  r  r  r   rN  halignvalignr  r`   r  r  r  s                     r   r  zODFTranslator.generate_imagem	  s.   ::4Hv!#&)?)??
 %%'+}}W'=

 ..&vdDdoo%OOG,224E !55 F77 F	!
 &+&1(3 &2"&!% "!$(/&,#-F" !F-3F)*+1F'( //%%i0v(D#,F< #)F< D!#)F< 32 	/ 4(:#;;	
  *"

 dkk5#4#45)2F%&)4F%&#{%|,vF3"-"!%	.
 	 Ezr    c                     |j                   }|r4t        |t        j                  j                        ry|j                   }|r4y)NTF)r#   r  r   r   entry)r   r  r   s      r   r  zODFTranslator.is_in_table	  s8    %!5!56LLE  r    c                     t        |j                  t        j                  j                        rI| j
                  d   }|d   d   }|| _        | j                  j                  | j                  d             y y )Nr  r   rq  )	r  r#   r   r   r  r  r  rV   r  rw  s      r   visit_legendzODFTranslator.visit_legend	  sa    dkk8>>#8#89&&r*Ca&)C#&D &&--dmmH.EF	 :r    c                     t        |j                  t        j                  j                        rK| j
                  j                          | j                          | j                          | j                          y y r   )r  r#   r   r   r  r  r  r  r  s     r   depart_legendzODFTranslator.depart_legend	  sU    dkk8>>#8#89&&**,   	 :r    c                 X    | xj                   dz  c_         | xj                  dz  c_        y r  r  r  r  s     r   visit_line_blockzODFTranslator.visit_line_block	  $    !#"r    c                 X    | xj                   dz  c_         | xj                  dz  c_        y r  r  r  s     r   depart_line_blockzODFTranslator.depart_line_block	  r  r    c                     d| j                   z  }t        | j                  dd| j                  |      i      }|| _        y )Nzlineblock%dr  r  r  )r  rX   r  r  )r   r  r=   rN  s       r   
visit_linezODFTranslator.visit_line	  s@     6 66--x!2DMM%4H KM"r    c                 $    | j                          y r   r  r  s     r   depart_linezODFTranslator.depart_line	  r  r    c                 x    t        | j                  dd| j                  d      i      }| j                  |       y )Nr  r  r  r  r=  r  s      r   visit_literalzODFTranslator.visit_literal	  s9      +%t}}_'EFH 	  $r    c                 $    | j                          y r   r  r  s     r   depart_literalzODFTranslator.depart_literal	  r  r    c           	      D   |j                   j                  dd      }|r>| j                  }|D ]!  }t        |dd| j	                  |      i      }# t        |      }nt        | j                  d      }d}| j                  |       | j                  j                  |       y )Nr  r+   r  r  r  r   )	r  r
  r  rX   r  r   r  r  rV   )r   r  r   rW   inline_stylecounts         r   visit_inlinezODFTranslator.visit_inline	  s    $$Y3%%B & FK(9(,l(C(EFF KE D00+>BE  $%%,,U3r    c                 x    | j                   j                         }t        |      D ]  }| j                           y r   )r  r  rJ  r  )r   r  r,  xs       r   depart_inlinezODFTranslator.depart_inline
  s5    --113u 	!A 	!r    c                     d}t         j                  |      }|r|j                         }t        |      }|S t        j                  |      }|r|j                         }t        |      dz  }|S )Nr      )SPACES_PATTERNmatchrg  r   TABS_PATTERN)r   r  r,  matchobjpads        r   _calculate_code_block_paddingz+ODFTranslator._calculate_code_block_padding
  si    !''-.."CHE 	 $))$/Hnn&C1r    c                      t         j                  j                  |d      }|dv rt        d fd	t              }nt        d fd	t              }t        j                  |||      S )NT)stripall)latextexc                 (    j                  | |      S r   r  r  r  r   s     r   <lambda>z8ODFTranslator._add_syntax_highlighting.<locals>.<lambda>
      dJ/ r    )escape_functionc                 (    j                  | |      S r   r>  r?  s     r   r@  z8ODFTranslator._add_syntax_highlighting.<locals>.<lambda>
  rA  r    r+   )pygmentslexersget_lexer_by_namer   rx   r   	highlight)r   insourcer  lexerfmtrs   `    r   _add_syntax_highlightingz&ODFTranslator._add_syntax_highlighting
  sb    11(T1J'',0 ,.D
 ,0 ,.D !!(E488r    c                     t         j                  | j                  |      }t        j                  | j                  |      S r   )	FILL_PAT1sub
fill_func1	FILL_PAT2
fill_func2)r   r  s     r   	fill_linezODFTranslator.fill_line#
  s+    }}T__d3}}T__d33r    c                 B    |j                  d      }dt        |      fz  S )Nr   z<text:s text:c="%d"/>rg  r   r   r6  spacess      r   rP  zODFTranslator.fill_func1'
  s!    "&#f+88r    c                 H    |j                  d      }dt        |      dz
  fz  S )Nr   z <text:s text:c="%d"/>r   rU  rV  s      r   rR  zODFTranslator.fill_func2+
  s&    "'3v;?*===r    c                    t        | j                        dkD  rd| j                  d      d}nd| j                  d      d}|j                         }t        r;| j
                  j                  r%|j                  dd      }| j                  ||      }nt        |      }|j                  d      }|d	   d
k(  r|d	= dg}g }|D ]6  }| j                  |      }|j                  dd      }|j                  |       8 dj                  |      }	||	fz  }
|j                  |
       |j                  d       d
j                  |      }|j                  d      }t!        j"                  |      }|D ]  }| j$                  j                  |        y )Nr   z<text:p text:style-name="rt  z">%s</text:p>rs  r  r  r  r  rr   zI<wrappertag1 xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0">z&#10;z<text:line-break/>z</wrappertag1>r  )r   r  r  ro  rE  r   r   r
  rL  rx   r   rS  rt   rV   rX  r  r   r  r  )r   r  wrapper1r   r  lineslines1my_linesmy_linemy_lines_strmy_lines_str2rl   rN  r	  s                 r   visit_literal_blockz!ODFTranslator.visit_literal_block/
  sy   t))*Q.237H /
 k*.H>>xx
H5H2268DF!&)FT"9?b	2 3 	%GnnW-Googt4GOOG$	% ,00: L#33m$&'WWV_YYwr" 	/E  ''.	/r    c                      y r   r+   r  s     r   depart_literal_blockz"ODFTranslator.depart_literal_blockQ
  r0  r    c                 t    | j                   j                  j                  d|       | j                  |       y )Nz"math" role not supported	base_node)r   r   r   r'  r  s     r   
visit_mathzODFTranslator.visit_mathX
  s3    &&'B15 	' 	74 r    c                 &    | j                  |       y r   )r)  r  s     r   depart_mathzODFTranslator.depart_math]
  s    D!r    c                 t    | j                   j                  j                  d|       | j                  |       y )Nz"math" directive not supportedre  )r   r   r   ra  r  s     r   visit_math_blockzODFTranslator.visit_math_block`
  s3    &&'G15 	' 	7  &r    c                 &    | j                  |       y r   )rc  r  s     r   depart_math_blockzODFTranslator.depart_math_blocke
  s    !!$'r    c                     |j                   j                  d      }|j                   j                  d      }|||| j                  |<   y y y )Nr  r   )r  r
  r  )r   r  r  r   s       r   
visit_metazODFTranslator.visit_metah
  sK    ""6*//%%i0 3#*DNN4  !4r    c                      y r   r+   r  s     r   depart_metazODFTranslator.depart_metan
  r0  r    c                    d}| j                   sd| _         t        | j                  d| j                  |      ddt              }t        |ddd	d
dt              }t        | j                  d| j                  d|z  d      ddt              }t        |dddit              }t        | j                  d| j                  d|z  d      ddt              }t        |dddit              }t        | j                  d| j                  d|z  d      ddt              }t        |ddddd
dddt              }t        |dt              }t        | j                  d| j                  d|z  d      ddt              }t        |ddddt              }t        | j                  d| j                  d|z  d       ddt              }t        |dddd
d
dd!t              }t        | j                  d| j                  d|z  d"      ddt              }t        |ddddd
dd!t              }| j                  d#| j                  |      | j                  |      d$%      }t        |d&d'| j                  d|z  d      i%      }t        |d&d'| j                  d|z  d      i%      }t        |d(      }t        |d)      }t        |d*| j                  d|z  d      d+d,%      }t        |d-d.d/i%      }d0|_        t        |d*| j                  d|z  d      d+d,%      }t        |d-d.d/i%      }d1|_        | j                  |       y )2Nr  Tr  r?   r  r  r2  style:table-propertiesz17.59cmr  r  )style:widthtable:alignzstyle:shadowz%s.%%c)r  table-columnstyle:table-column-propertiesstyle:column-widthz4.999cm)Bz12.587cm	%s.%%c%%d)r  r   r  style:table-cell-propertiestransparentz0.097cmz0.035cm solid #000000)fo:background-color
fo:paddingfo:border-leftfo:border-rightfo:border-topfo:border-bottomzstyle:background-imager<  )rz  r   )r  z	fo:border)r  r   r  r  r  r  r  )rz  r   table:tablez
table:nametable:style-namer  table:table-columnr  table:table-header-rowstable:table-rowtable:table-cellstringr  zoffice:value-typer  r  Table_20_HeadingOptionDescription)r  rX   r  r  r  r  r@   r  )r   r  
table_namerW   rN  r=  ra  r  s           r   visit_option_listzODFTranslator.visit_option_listq
  s   "
 ///3D,D11="mmJ7 'J)157B R!9(% &C( 156C D11="mmHz,A7K .J08<>B R!@$iJ19=?CD11="mmHz,A7K .J08<>B R!@$jJ2:>@CD11="mm*,j: ,J. 7;<B R!>'4'"9#)!8$;H= FJKC S":4HCD11="mm*,j: ,J. 7;<B R!>'4H6>BDC D11="mm*,j: ,J. 7;<B R!>'"9#)!'$;H=
 FJKC D11="mm*,j: ,J. 7;<B R!>'"9#:!'$;H=
 FJKC }--
3 $j 96
  1:%w!0;1 2 1:%w!0;1 2 67/00 $j(*!6!):+ , h103 40 $j(*!6!):+ , h103 4   $r    c                 $    | j                          y r   r  r  s     r   depart_option_listz ODFTranslator.depart_option_list
  r  r    c                 H    | j                  d      }| j                  |       y )Nr  r  r  r  s      r   visit_option_list_itemz$ODFTranslator.visit_option_list_item
  s!    01  $r    c                 $    | j                          y r   r  r  s     r   depart_option_list_itemz%ODFTranslator.depart_option_list_item
  r  r    c                 l    | j                  dd| j                  z  dd      }| j                  |       y )Nr  z
Table%d.A2r  r  r  )r  r  r  r  s      r   visit_option_groupz ODFTranslator.visit_option_group
  s>    1 ,t/?/? ?!);
  	  $r    c                 $    | j                          y r   r  r  s     r   depart_option_groupz!ODFTranslator.depart_option_group
  r  r    c                 X    | j                  dddi      }|j                         |_        y )Nr  r  Table_20_Contentsr  )r  ro  r@   r  s      r   visit_optionzODFTranslator.visit_option
  s/    x214 5++-r    c                      y r   r+   r  s     r   depart_optionzODFTranslator.depart_option
  r0  r    c                      y r   r+   r  s     r   visit_option_stringz!ODFTranslator.visit_option_string
  r0  r    c                      y r   r+   r  s     r   depart_option_stringz"ODFTranslator.depart_option_string
  r0  r    c                      y r   r+   r  s     r   visit_option_argumentz#ODFTranslator.visit_option_argument
  r0  r    c                      y r   r+   r  s     r   depart_option_argumentz$ODFTranslator.depart_option_argument
  r0  r    c                     | j                  dd| j                  z  dd      }t        |dddi      }|j                         |_        t        j                         )	Nr  z
Table%d.B2r  r  r  r  r  r  )r  r  rX   ro  r@   r   r  r,  s       r   visit_descriptionzODFTranslator.visit_description
  se    1 ,t/?/? ?!);
  X2/4 5;;=  ""r    c                      y r   r+   r  s     r   depart_descriptionz ODFTranslator.depart_description
  r0  r    c                    d| _         | j                  r| j                  d      }nS| j                  r| j                  d      }n5| j                  d   }| j                  dd|i      }| j                  |       | j                  |       y )NTr  r}  r  r  r  r  )r  r  r  r  r  r  r  r  )r   r  rW   r  s       r   visit_paragraphzODFTranslator.visit_paragraph  s     >>x(B^^x(B33B7J""):6 # 8B ##B'  $r    c                    d| _         | j                          | j                  rQ| j                  j	                  | j
                  d          | j
                  j                  | j
                  d          y | j                  rQ| j                  j	                  | j
                  d          | j
                  j                  | j
                  d          y y )NFr  )	r  r  r  r  rV   r  remover  r  r  s     r   depart_paragraphzODFTranslator.depart_paragraph  s    !>>&&t';';B'?@  ''(<(<R(@A^^&&t';';B'?@  ''(<(<R(@A r    c                      y r   r+   r  s     r   visit_problematiczODFTranslator.visit_problematic  r0  r    c                      y r   r+   r  s     r   depart_problematicz ODFTranslator.depart_problematic  r0  r    c                 R   d|j                   v r|j                   d   }|j                         }d|v r|j                         }dj                  d t	        t
        j                               D              }d|d|d}|j                  d      }t        j                  |      }t        |      d	kD  rb|d	   }| j                  r	 t        j                          | j                  r	 t        j                          | j                  j                  |       t        j                          )
Nr  r   r^  c              3   2   K   | ]  \  }}|d |d  yw)z="r  Nr+   )r!  kvs      r   r#  z*ODFTranslator.visit_raw.<locals>.<genexpr>&  s#      #H1 "#A(#Hr$  z<stuff rq   z</stuff>r  r   )r  r   ro  rX  r[   r  r\   r  r   r  r   r  r  r  rV   r   r  )	r   r  formats
formatlistrawstrattrstr
contentstrr   rN  s	            r   	visit_rawzODFTranslator.visit_raw   s   t&ooh/G J
"(( #H $%=%C%C%E F#H H 8?I
'..w7
**:6w<!#!!*C~~
   ""	    "" ,,33C8  ""r    c                 8    | j                   ry | j                  ry y r   )r  r  r  s     r   
depart_rawzODFTranslator.depart_raw6  s    >>^^r    c                    | j                   j                  rd|v rh|d   }| j                   j                  r"|j                  d      r| j	                  |      }| j                  dd|z  dd      }| j                  |       n^d|v r5| j                   j                  rD|d   }| j                  d	d|z  d
d      }n%| j                  j                  j                  d       | j                  rjt        |j                        dk\  rQt        |j                  d   t        j                  j                         r|j#                  |j                  d          y y y y )Nrefurizmailto:ztext:a%sr  )r  r  r  r}  r  r@   r  z3References must have "refuri" or "refid" attribute.r   r   )r   r   r   r+  cloak_mailtor  r  r   r   r   r  r   r  r  r   r   	generatedr  )r   r  hrefrW   s       r   visit_referencezODFTranslator.visit_reference>  s:   ==%%4H~MM77	2,,T2D&&x"&+"*9&  ((,D==--=D**+?)-17I* B
 &&..IK%%DMM"a'4==+X^^-E-EFKKa() G ( &r    c                 \    | j                   j                  rd|v r| j                          y y y )Nr  )r   r   r  r  s     r   depart_referencezODFTranslator.depart_referenceZ  s-    ==%%4""$   &r    c                     | j                  d      }|j                  d      }|r	|d   }|r|}t        | j                  dd|i      }|j	                         }| j                  |      |_        y )Nr  r  r   r  r  r  )r  r
  rX   r  ro  r  r@   )r   r  r  r  class1rW   r@   s          r   visit_rubriczODFTranslator.visit_rubric_  sp    ]]8,
((9%QZF#
,,h z@
 
 {{}++d#r    c                      y r   r+   r  s     r   depart_rubriczODFTranslator.depart_rubricn  r0  r    c                    | xj                   dz  c_         | xj                  dz  c_        | j                  j                  rB| j	                  dd| j                  z  d| j                   z  d      }| j                  |       y y r5  r6  )r   r  move_idsrW   s       r   visit_sectionzODFTranslator.visit_sectionq  s|    aa==(("">(4+=+==#+d.@.@#@;" B $$R( )r    c                 |    | xj                   dz  c_         | j                  j                  r| j                          y y r  r9  r  s     r   depart_sectionzODFTranslator.depart_section{  r;  r    c                 x    t        | j                  dd| j                  d      i      }| j                  |       y )Nr  r  r  r  r=  r  s      r   visit_strongzODFTranslator.visit_strong  s6    ,,k 14==3JKM  $r    c                 $    | j                          y r   r  r  s     r   depart_strongzODFTranslator.depart_strong  r  r    c                 *    t        j                         r   r  r  s     r   visit_substitution_definitionz+ODFTranslator.visit_substitution_definition  r  r    c                      y r   r+   r  s     r   depart_substitution_definitionz,ODFTranslator.depart_substitution_definition  r0  r    c                      y r   r+   r  s     r   visit_system_messagez"ODFTranslator.visit_system_message  r0  r    c                      y r   r+   r  s     r   depart_system_messagez#ODFTranslator.depart_system_message  r0  r    c                 P   d }d }|j                  d      }| |D ]  }|j                  t              s|} n || j                  j                  |      }|{| j                  j
                  j                  d|d       t        }| j                  j                  |      }|/| j                  j
                  j                  d|d       t        }|S t        }| j                  j                  |      }|/| j                  j
                  j                  d|d       t        }|S )Nr  zCan't find table style "z".  Using default.z Can't find default table style "z".  Using built-in default.)	r
  r+  r  r  r   r   r   TABLENAMEDEFAULTBUILTIN_DEFAULT_TABLE_STYLE)r   r  table_styler  str_classes	str_classs         r   get_table_stylezODFTranslator.get_table_style  s6   
hhy)"( 	''(89!*J !++//
;K" &&.."&' .
"//33J?& MM**22 '*+ #>K  *J++//
;K" &&.. #&' :r    c           
         | xj                   dz  c_         | j                  |      }dt        z  }t        | j                  d| j                  d|z  | j                   f      ddt              }|j                  t        |dd	d
ddt               n"t        |ddd
d|j                  dt               t        | j                  d| j                  d|z  | j                   ddf      ddt              }| j                  j                  }||j                  }nd|fz  }t        |dd||||dt               d }|j                  D ]#  }	|	j                  dk(  s|	j                         } n || j                  d|       n	 t        | j                  d| j                  d|z  | j                   f      | j                  d|z  | j                   f      d      }
| j!                  |
       || _        d| _        y )Nr   z%s%%dr  r  r?   rs  r2  rt  r  0inz0.10in)rv  r  r  margins)rv  r  r  r~  r{  r  r  z0.%03dcm solid #000000r|  z0.049cmr  rP  r  r  r  r  g        )r  r  r  rX   r  r  r  r|   r   table_border_thicknessr,   r  r  ro  r  r  r  current_table_styletable_width)r   r  r  r  rN  r=  	thicknessline_style1rP  r	  r  s              r   visit_tablezODFTranslator.visit_table  s+   A**40//
..--z!D$4$4#79#G
 	
 &&.s4  &!&$,>  s4(!&$,'2'B'B>  ..--j(4+;+;S!*FH(G
 	
 MM88	%,,K2i]BK35#)*( +?
 	 ]] 	E}}'	 MM-/--}--z!D$4$4#79 $z!D$4$4#7!9F
  	  %#& r    c                     t        dt              }d| j                  fz  }| j                  }|d   }||j                  |<   | j                          y )Nru  r<  %.4finr   )rZ   r  r  r  r   r  )r   r  r  	attribvalrN  r=  s         r   depart_tablezODFTranslator.depart_table  sO    =6	 0 033	&&!f )

9r    c                 *    t        d      dz
  | _        y )Nr  r   )ru   r  r  s     r   visit_tgroupzODFTranslator.visit_tgroup  s    HqLr    c                      y r   r+   r  s     r   depart_tgroupzODFTranslator.depart_tgroup  r0  r    c                 r   | xj                   dz  c_         | j                  dt        z  | j                  t	        | j                         f      }|d   dz  }t        | j                  d|ddt              }t        |d	d
d|z  it               | j                  dd|i       | xj                  |z  c_	        y )Nr   z	%s%%d.%%scolwidthg      (@r  rw  rs  r2  rx  ry  r  r  r  r  )
r  r  r  r  chrrX   r  r  r  r  )r   r  colspec_namer  rN  s        r   visit_colspeczODFTranslator.visit_colspec	  s    Q}}**s4#4#458
 
#d*..&*G
  	37/H1DE	  	."4l!E 	 	GH$r    c                      y r   r+   r  s     r   depart_colspeczODFTranslator.depart_colspec  r0  r    c                     | j                  d      }| j                  |       d| _        | j                  j	                  d       y )Nr  Tr  )r  r  in_theadr  rV   r  s      r   visit_theadzODFTranslator.visit_thead  s=    89  $""))*<=r    c                 f    | j                          d| _        | j                  j                          y rW  )r  r  r  r  r  s     r   depart_theadzODFTranslator.depart_thead$  s'    ""&&(r    c                 n    t        d      dz
  | _        | j                  d      }| j                  |       y )Nr  r   r  )ru   r  r  r  r  s      r   	visit_rowzODFTranslator.visit_row)  s1    HqL01  $r    c                 $    | j                          y r   r  r  s     r   
depart_rowzODFTranslator.depart_row.  r  r    c                    | xj                   dz  c_         | j                  dt        z  | j                  ddf      }|dd}|j	                  dd      }|dkD  r!d|dz   fz  |d	<   | xj                   |z  c_         |j	                  d
d      }|dkD  rd|dz   fz  |d<   | j                  d|      }| j                  |       y )Nr   z%s%%d.%%c%%dr  r  r  morecolsr   %dztable:number-columns-spannedmorerowsztable:number-rows-spannedr  r  )r  r  r  r  r
  r  r  )r   r  cellspec_namer   r  r  rN  s          r   visit_entryzODFTranslator.visit_entry1  s    Q--sA(

 !.!)
 88J*a<59X\O5KF12)88J*a<26(Q,2HF./ 26B  %r    c                 $    | j                          y r   r  r  s     r   depart_entryzODFTranslator.depart_entryE  r  r    c                      y r   r+   r  s     r   visit_tbodyzODFTranslator.visit_tbodyH  r0  r    c                      y r   r+   r  s     r   depart_tbodyzODFTranslator.depart_tbodyK  r0  r    c                     d|vr	d|vrd|vry y )Nr  r}  refnamer+   r  s     r   visit_targetzODFTranslator.visit_targetN  s"     D 4'T)r    c                      y r   r+   r  s     r   depart_targetzODFTranslator.depart_targetY  r0  r    c                    t        |j                  t        j                  j                        r| j
                  }|dkD  r^| j                  j                  j                  d       | j                  j                  j                  d|j                         d       d}| j                  dd|z  | j                  d|f      d	      }| j                  |       | j                  |       y t        |j                  t        j                  j                        rjt        | j                  d
d| j                  |      i	      }| j                  |       |j                         }|| _        d| _        | j                  |       y y )N   z4Heading/section levels greater than 7 not supported.z.    Reducing to heading level 7 for heading: "r  r  r  z	heading%dtext:outline-levelr  r  r  r  T)r  r#   r   r   sectionr  r   r   r   ro  r  r  r  r  rX   r  rP  r  )r   r  r  
title_typer  rN  r@   s          r   visit_titlezODFTranslator.visit_title\  sL   dkk8>>#9#9: ..Mq &&..JL&&..)* !"##*.*>'+}}#m%6(8" $ C ##C($$S)X^^%<%<= T118!4==#<E C ##C(;;=DDJ#'D $$S) >r    c                     t        |j                  t        j                  j                        s.t        |j                  t        j                  j
                        r| j                          y y r   )r  r#   r   r   r   r   r  r  s     r   depart_titlezODFTranslator.depart_title|  sD    t{{HNN$:$:;$++x~~'>'>?  @r    c                 ,    | j                  ||d       y )Nr  )r!  )r"  )r   r  r  s      r   visit_subtitlezODFTranslator.visit_subtitle  s    xJ?r    c                 &    | j                  |       y r   )r$  r  s     r   depart_subtitlezODFTranslator.depart_subtitle  s    $r    c                     | j                  dd| j                  d      i      }| j                  |j                               |_        t        j                         )Nr  r  r  r  )r  r  r  ro  r@   r   r  r  s      r   visit_title_referencez#ODFTranslator.visit_title_reference  sO    {t}}[94; <++dkkm,  ""r    c                      y r   r+   r  s     r   depart_title_referencez$ODFTranslator.depart_title_reference  r0  r    c           
          t        dd      D ]_  }t        |dd|fz  | j                  d|fz        d      }t        |d       t        |d	       t        |d
ddd       t        |d       a y )Nr      z$text:table-of-content-entry-templater  rI  r  r  ztext:index-entry-chapterztext:index-entry-textztext:index-entry-tab-stopr   r  )zstyle:leader-charz
style:typeztext:index-entry-page-number)rJ  rX   r  )r   rN  rM  r=  s       r   (generate_table_of_content_entry_templatez6ODFTranslator.generate_table_of_content_entry_template  s    B< 	<C6*.#.'+}}]cW5L'MC s67s34s7%(%A  s:;	<r    c                     d}d }|j                   D ]  }t        ||      s|} n ||j                         }|S | j                  j                  |   }|S )Nrr   )r  r  ro  r  r  )r   r  
class_type	label_keyr  
title_noder	  s          r   find_title_labelzODFTranslator.find_title_label  si    
]] 	E%,"
	 !%%'E  MM((3Er    c                    d|j                   v rld|j                   d   v rO| j                  |t        j                  j                  d      }| j
                  j                  r| j                  ddddd      }t        |d	d
di      }t        |dddi      }||_	        | j                  |       t        |d      }t        |d      }t        |dd| j                  d      i      }||_	        | j                  | _        || _        | j                  |       d| _        y | j!                  d      }	| j!                  d      }	t        |	dd| j                  d      i      }||_	        d| _        y d|j                   d   v rt| j!                  d      }	| j!                  d      }	t        |	dd| j                  d      i      }| j                  |t        j                  j                  d      }||_	        y d|j                   d   v rt| j!                  d      }	| j!                  d      }	t        |	dd| j                  d      i      }| j                  |t        j                  j                  d      }||_	        y y y )Nr  contentsztext:table-of-contentzTable of Contents1rX  Sect1)r  ztext:protectedr  r  ztext:table-of-content-sourcer  10ztext:index-title-templater  Contents_20_Headingtext:index-bodyztext:index-titler  zcontents-headingr  rr  r  r  Tabstract
dedication)r  r4  r   r   rP  r   r   r  rX   r@   r/  r  r  save_current_elementr  r  r  r  )
r   r  r  rN  r=  ra  r  r  r  rW   s
             r   visit_topiczODFTranslator.visit_topic  s   'T__Y77--(....
<==66++,C%9*0+2M+ C
 %60$ C %S*E)+@O C  %CHAA#F$S*;<C$S*<=C$S()4==9K+L< C  %CH040D0DD-7:D4,,S1 -1) '78B'9:B$K 14==3JKMC  %CH,0)ty99]]#34]]#56 -t}}X/FGI --(....  !!;;]]#34]]#56 -t}}X/FGI --(.... " ! <a (r    c                    d|j                   v rxd|j                   d   v rf| j                  j                  r7| j                  | j                         | j                  | j                         n| j                  d       d| _        y y y )Nr  r6  r  F)	r  r   r   update_toc_page_numbersr  r  r=  r  r  r  s     r   depart_topiczODFTranslator.depart_topic  sv    'T__Y77==660088:,,T-F-FGMM"23,1) 8 (r    c                 P    g }| j                  |d|       | j                  |       y r  )update_toc_collectupdate_toc_add_numbers)r   rW   
collections      r   r@  z%ODFTranslator.update_toc_page_numbers  s'    
Az2##J/r    c                     |j                  ||f       |dz  }|D ]%  }|j                  dk7  s| j                  |||       ' y )Nr   r:  )rV   r   rC  )r   rW   r   rE  child_els        r   rC  z ODFTranslator.update_toc_collect  sM    5"+&
 	EH||00''%D	Er    c                 ~    |D ]8  \  }}|j                   dk(  s|j                  dk7  s&t        |d      }d|_        : y )Nr  zTable of Contentsztext:tab9999)r   r@   rX   rR  )r   rE  r   rN  r=  s        r   rD  z$ODFTranslator.update_toc_add_numbers  sA    $ 	"JE38#HH 33 j1!		"r    c                 &    | j                  d       y )Nr  )r  r  s     r   visit_transitionzODFTranslator.visit_transition  s    &'r    c                      y r   r+   r  s     r   depart_transitionzODFTranslator.depart_transition  r0  r    c                 (    | j                  |d       y )Nr   generate_admonitionr  s     r   visit_warningzODFTranslator.visit_warning        y1r    c                 8    | j                   j                          y r   rn  r  s     r   depart_warningzODFTranslator.depart_warning  rp  r    c                 (    | j                  |d       y )N	attentionrO  r  s     r   visit_attentionzODFTranslator.visit_attention        {3r    c                 (    | j                  |d       y )NcautionrO  r  s     r   visit_cautionzODFTranslator.visit_caution  rR  r    c                 (    | j                  |d       y )NdangerrO  r  s     r   visit_dangerzODFTranslator.visit_danger!  s      x0r    c                 (    | j                  |d       y )NerrorrO  r  s     r   visit_errorzODFTranslator.visit_error&  s      w/r    c                 (    | j                  |d       y )NhintrO  r  s     r   
visit_hintzODFTranslator.visit_hint+        v.r    c                 (    | j                  |d       y )N	importantrO  r  s     r   visit_importantzODFTranslator.visit_important0  rX  r    c                 (    | j                  |d       y )NnoterO  r  s     r   
visit_notezODFTranslator.visit_note5  re  r    c                 (    | j                  |d       y )NtiprO  r  s     r   	visit_tipzODFTranslator.visit_tip:  s      u-r    c                     d }|j                   D ]"  }|j                  dk(  s|j                         }$ ||j                  d      }|r|d   }| j	                  |d|       y )NrP  r  r   generic)r  r  ro  r
  rP  )r   r  rP  r	  classes1s        r   visit_admonitionzODFTranslator.visit_admonition?  sd    ]] 	'E}}'	' =xx	*H   y%8r    c           	      x   t        | j                  d      r'| j                  j                  j                  ||      }n|}t	        | j
                  dd| j                  d|f      i      }|r||_        n|j                         d|_        | j                  d|f      }| j                  j                  |       y )Nr  r  r  zadmon-%s-hdrr  !zadmon-%s-body)hasattrr  r  r
  rX   r  r  r@   
capitalizer  rV   )r   r  r  rP  translated_labelrN  rl   s          r   rP  z!ODFTranslator.generate_admonitionL  s    4==(+#}}3377uE$--xt}}	 +A
  CH 0 ; ; =@CH]]?UI6""))"-r    c                 P    | j                  dddi      }| j                  |       y )Nr  r  zrststyle-subscriptr  r  r  s      r   visit_subscriptzODFTranslator.visit_subscript_  s2    {34
  	  $r    c                 $    | j                          y r   r  r  s     r   depart_subscriptzODFTranslator.depart_subscripte  r  r    c                 P    | j                  dddi      }| j                  |       y )Nr  r  zrststyle-superscriptr  r  r  s      r   visit_superscriptzODFTranslator.visit_superscripth  s2    {54
  	  $r    c                 $    | j                          y r   r  r  s     r   depart_superscriptz ODFTranslator.depart_superscriptn  r  r    c                      y r   r+   r  s     r   visit_abbreviationz ODFTranslator.visit_abbreviationq  r0  r    c                      y r   r+   r  s     r   depart_abbreviationz!ODFTranslator.depart_abbreviationt  r0  r    c                      y r   r+   r  s     r   visit_acronymzODFTranslator.visit_acronymw  r0  r    c                      y r   r+   r  s     r   depart_acronymzODFTranslator.depart_acronymz  r0  r    c                      y r   r+   r  s     r   visit_sidebarzODFTranslator.visit_sidebar}  r0  r    c                      y r   r+   r  s     r   depart_sidebarzODFTranslator.depart_sidebar  r0  r    rD  r   r   )r   )r   rP  (	  r(   r)   r*   r  r   r  r   r  r  r   r  r  r  r  r(  r   r  r  r[   rJ  	code_nonerP  rf  rM  compilerc  r8  rQ  rO  ro  r   rs  rK  rw  r  rL  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r  r  r  r!  r#  r%  r'  r)  r-  r/  r1  r3  r7  r:  r>  r@  rE  rG  rN  rP  rT  rX  r\  r^  r`  rb  rd  rf  rh  rj  rl  ro  rr  rt  rx  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r#  r%  r'  r)  r-  r0  r8  rL  rS  rP  rR  ra  rc  visit_doctest_blockdepart_doctest_blockrg  ri  rk  rm  ro  rq  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r"  r$  r&  r(  r*  r,  r/  r4  r>  rA  r@  rC  rD  rK  rM  rQ  rT  rW  depart_attentionr[  depart_cautionr^  depart_dangerra  depart_errorrd  depart_hintrh  depart_importantrk  depart_notern  
depart_tiprr  depart_admonitionrP  ry  r{  r}  r  r  r  r  r  r  r  r+   r    r   r   r     sd   7KrO+b#:2<'
.$	A/3#4.M` (,E!H~$Iz9

:&I3<xt4 
5'!,L/
"@,'<
,NO1$%%%%1%%544
$$
*)X
#!H
-
>!#:
+3!
)!
%&2$*4!$!H)	I!
N&#P:!-!
!<@|20$*X$LI&X $(RhG!###%4$!
949> /D ./!
"'
(+Z%x%% 
#%B#,*8%
$)!
%
#&P=~)%$>)
%
&(	*@!
@ #<":!x	20
E"(2)4 &2 $N1 #M0 "L/ !K4 &/ !K.  J	9 '.&%%r    r   c                        e Zd Z fdZ xZS )Readerc                     t         |          }| j                  j                  s|j	                  t
        j                         |S r   )superget_transformsr   r   r  r   DanglingReferences)r   
transforms	__class__s     r   r  zReader.get_transforms  s7    W+-
}}))j;;<r    )r(   r)   r*   r  __classcell__)r  s   @r   r  r    s     r    r  )Y__doc____docformat__configparserr   r  ior   	itertoolsr   rH  os.pathrM  r*  r   r  urllib.requestr   urllib.errorr   weakref	xml.etreer   r   xml.domr	   r   r   r
   r   r   r   r   &docutils.parsers.rst.directives.imagesr   docutils.readersr   docutils.transformsr   rE  pygments.lexerspygmentsformatterr   r   ImportErrorSyntaxErrorrG  r,  r  WeakKeyDictionaryr   r  rT   typer   r   r  r3  r5  rN  rQ  r  r  r  GENERATOR_DESCr5  CONTENT_NAMESPACE_DICTr  r7  r  r5  r6  rE  rF  r  r6  r4  rD  rX   rQ   rZ   rm   rx   rz   r  r   r   r  r   r  r+   r    r   <module>r     s4  
 # &     	  	    " "  *    ? ? 6 ' *? $Y__&  %7$$&emmT"//	0 	 G$rzz(#BJJv	BJJx 	$ ++ '  (A!>! 	
,! 
.	!
 <! ?! 	
G! <! 0! <! C! l! 
.! -! /!  L!!$ @%!& >'!( F><-+-65!  : >  	
,  
.	 
 <  ?  	
G  <  0  <  C  l  L  
.  -   /! " @# $ >% & F><+-   4 D$  & -<.+   fD 2 4	
 B E M B 6 B I L @ 4  3!" 5#$ F%& D'( LDB313<5 :D 2 4	
 B E M B 6 B I L @ 4  3!" 5#$ F%& D'( LDB1/ 6 J  3B 41 & D 1 $(tD   
$K K* )#%  2gW^^ gVm)E,, m)bSZ qj 	[! Hs   :K	 		KK