dot2tex-2.9.0/0000777000000000000000000000000012335470751011254 5ustar 00000000000000dot2tex-2.9.0/AUTHORS0000666000000000000000000000040712330457347012326 0ustar 00000000000000Dot2tex is written and maintained by Kjell Magne Fauske. The dot language parser is mainly written by Michael Krause. Patches and suggestions ``````````````````````` - Nicolas Thiery - Peter Collingbourne - Michael Krause - Ero Carrera - Michael Niedermair dot2tex-2.9.0/CHANGES0000666000000000000000000002502112335470623012245 0ustar 00000000000000dot2tex change log ================== Here you can see the full list of changes between each dot2tex release. 2.9.0 ----- Released 2014-05-16. - Added support for preprocessing head and tail label (pgf and tikz). - Graphviz arrow styles are now mapped to corresponding PGF/TikZ arrows. - Project is now hosted on GitHub. - Numbers are now outputted as floats. Some versions of Graphviz uses scientific notation for small numbers. TeX does not handle that well [issue #11]. - Added support for more Graphviz node shapes when using the tikz output format: square, diamond, trapezium and star. - Fixed compatibility issue with Pyparsing 2.0.1. - Fixed a bug in preprocessing triggered by using the ``--styleonly`` option with the tikz output format. - The number of sides in the hexagon tikz shape is now correct. Thanks to Jean Pichon for reporting this. - Added support for the point shape when using the TikZ output format. - Node labels are no longer shown when the node shape is point and the output format is TikZ. - Fixed issue 14. Parsing of dimension data from the TeX-log is now more robust and the ``--autosize`` option should now work in Cygwin. - Added the ``--progoptions`` option for passing options to the graph layout program. - Documentation is now built using Sphinx - Cleaned up internal error handling. - When dot2tex fails to parse a graph, dot2tex will now raise an exception and quit. In previous versions dot2tex attempted to run the graph through Graphviz first. - Log handlers are no longer configured when using dot2tex as a library. - Fixed [issue 20]. ``format=positions`` no longer fails if node coordinates are floats. Thanks to Nicolas Thiery for reporting this bug. - Fixed several bugs in the parsing of ID numerals. The bug caused labels like ``label="1.2.3.4"`` to be interpreted as ``label=1.2`` [issue 17]. Thanks to Vsevolod for reporting this. - ``stdout`` is now properly restored after parsing dot data. Thanks to Nicolas Thiery for the patch. - Parentheses, ``()``, in tikz node names are now replaced with ``{}``. Parentheses are not valid characters in node names. Tanks DamienJadeDuff for reporting this. 2.8.7 ----- Released 2009-10-05. - Edges with no edge points are now properly handled. - Added the ``positions`` output format that returns a dictionary with node names as keys and (x, y) tuples as values. Works only when called as a module. Feature suggested by Nicolas Thiery. - Fixed handling of ``stderr`` when creating xdot data. Thanks to Nicolas Thiery for reporting this bug. - Exceptions are now caught when accessing invalid win32 registry keys. Updated Graphviz registry key. Thanks Andreas Frische for reporting this. - Fixed templates so that crop code is not inserted when preprocessing the graph. 2.8.6 ----- Released 2009-07-09. - Added the ``--pgf118`` option for generating code compatible with PGF 1.18 and earlier. - Fixed a bug in handling of the special ``d2toptions`` attribute. It was read even when commented out. Thanks Misha Aizatulin for reporting this. - Fixed label alignment issues when using recent versions of Graphviz. - Silenced os.popen3 deprecation warning in Python 2.6. - Fixed bug in handling of d2toption when dot2tex was used as a module. 2.8.5 ----- Released 2009-03-02 - Updated TikZ/PGF templates to use ``line join=bevel`` instead of ``join=bevel``. The name of the option was changed in PGF 2.0 and ``join`` is now used by TikZ's chain library. The change will break PGF 1.18 compatibility. - Unquoted unicode strings are now correctly parsed. 2.8.4 ----- Released 2008-09-23. - Fixed a really stupid bug in the quoting of the Graphviz binaries. The code in the 2.8.3 release did not quote the binaries at all. Thanks Peter Collingbourne for spotting this! 2.8.3 ----- - File paths to the Graphviz executables are now quoted. This solves an issue with paths containing spaces. Thanks Pedro Teixeira and Mateusz for reporting this. - Fixed a template typo. Dot2tex looks for the ``<>``, but ``<>`` is used in the documentation. Now both versions can be used. - Added ``--cache`` command line option. If caching is enabled, dot2tex will check if the input graph has been processed before. If it has not changed the graph will not be converted (not documented yet). 2.8.2 ----- - Fixed a parsing bug in the detection of output format in cases like:: dot2tex --preproc example.dot | dot2tex Thanks Peter Collingbourne for the patch! - Removed obsolete shebang line from dot2tex.py 2.8.1 ----- - Fixed a severe bug in the preprocessing code for the tikz output format. 2.8.0 ----- Released 2008-05-05. - Node names are now filtered to ensure that they are valid TikZ node names. - Correct fill and stroke color is now set when using the tikz and pst output formats. - Invisible nodes now generate zero-size coordinates when using the tikz output format. This allows drawing edges to/from invisible nodes. - Added dropshadows.dot and sportsbracket.dot examples. - Concentrated edges are now supported in the pgf and pstricks output formats. - The dot parser now correctly parses quoted string like:: label="A \"quote\"" label="\n\nA" - The dot parser now supports concatenation of double quoted strings using the + character. Example:: a [label="partA" + "partB" + "partC"]; - Added support for edge compass points when using the tikz output format. Example: ``a.n -> b.e`` is translated to ``\draw (a.north) ... (b.east)`` - The external pydot module has been replaced with a custom version of the pydot's dot parser. Available in the dotparsing.py file. - Added support for file input. If the input data contains the line ``\input{filename.dot}`` filename.dot will be loaded and processed. (Thanks Kim Sullivan for the idea) - Added interface for using dot2tex as a library. Example:: import dot2tex testgraph="digraph G {a_1-> a_2 -> a_3 -> a_1;}" texcode = dot2tex.dot2tex(testgraph,format='tikz',crop=True) 2.7.0 ----- Released 2007-12-10. - Added the ``--codeonly`` option. When this option is used, only draw commands are generated. Intended for use with the dot2texi package. - Minor improvements to the documentation. - Added ``graphanndtti.tex`` example. 2.6.1 ----- - Fixed missing header in the file dot2tex/dotex - Fixed various typos in the documentation 2.6.0 ----- Released 2007-09-14. - Added the ``--autosize`` option. Equivalent to:: > dot2tex --preproc ex.dot | dot2tex - Added the ``--prog`` option for choosing between dot, neato, circo, towpi and fdp, when the input is in plain dot format. - Added the special ``d2toptions`` graph attribute. Allows you to specify dot2tex options in command line format. - Added a dot2tex wrapper script and changed setup.py to make it fully compatible with both setuptools and distutils. A dot2tex module will now be put in the site-packages directory and a wrapper script in the scripts directory. - Fixed typo in error message. - Added ``--runtests`` option to run doc tests (experimental). - Fixed issue with wrong template when both the --preview and --figonly options were used. 2.5.0 ----- Released 2007-07-28. - Added the TikZ output format (``-f tikz``) - Added the ``lblstyle`` attribute for styling graph, node and edge labels. (PGF and TikZ only) - Added the ``--tikzedgelabels`` option for placing edge labels without using xdot edge label information (tikz and pgf output format only). - Added a topath edge attribute for using TikZ' to paths (tikz and pgf only). - Information about the selected output format is now stored in the graph generated in preprocessing mode. No longer necessary to specify an output format in the final run. - Edges with the same source and dest are now handled correctly in preprocessing mode. Only the edge defined last was preprocessed. - Added the ``--nodeoptions`` and ``--edgeoptions`` options and corresponding ``d2tnodeoptions`` and ``d2tedgeoptions`` graph attribute (tikz only). - Added the ``exstyle`` attribute. Ignored in preprocessing mode. (pgf and tikz only) 2.0.3 ----- - Special TeX char escape code rewritten. Now works as intended. The ``$`` character was not properly escaped. - Added ``&`` to list of special characters. 2.0.2 ----- - Fixed a severe bug in the interpretation of color attributes in edges. Colors were not reset after a change to a single edge color. 2.0.1 ----- - Node margins are now interpreted correctly for nodes with size < minsize. - Nodes now grow correctly to fit labels when size > minsize - Updated documentation with an example on how to change node sizes. 2.0.0 ----- Released 2007-04-23 - Fixed a number of preprocessing bug related to how node attributes are interpreted. - Added automata.dot example. - Changed the name of the ``--preview`` option to ``--crop``. - Added the --preproc option for preprocessing labels with preview.sty. - Added the --debug option. Writes detailed debug information to dot2tex.log. - The ^ char is now properly escaped. - Default PGF/TikZ template now requires PGF v >= 1.09. - Added new template tags to support preprocessing mode. - Templates for preprocessing, output and figonly mode can now be put in the same file. - Added the ``--alignstr`` option. - Added the ``--valignmode`` option. - Added the ``--usepdflatex`` option. 1.5.0 ----- Released 2006-10-22 - Added a few more helpfull error messages. - Added the ``--figonly`` option. - The ``$`` character is now properly escaped. - Fixed a few issues when converting between Graphviz to backend styles. - Fixed scoping issues when drawing edges in duplicate mode. - Added more intelligent detection of xdot input. Older versions of Graphviz does not include the ``xdotversion`` attribute in the output. - Styles are now transfered to the PSTricks and PGF/TikZ backend. - Added a force straight line option to avoid using curves for straight edges. - PGF/TikZ is now set as the default backend. - Fixed a line ending issue in data converted internally to the xdot format. - Added the ``-V`` version command line switch - Added the ``--encoding`` option - Added option for switching node and graph draw order. - Fixed bug in PGF/TikZ color handling - Added the ``--preview`` option to crop graphs - Added ``--figpreamble`` and ``--figpostamble`` options and graph attributes. - Added ``--docpreamble`` option and ``d2tdocpreamble`` graph attribute - Added ``--graphstyle`` option - Added ``--gvcols`` option - Changed default PGF/TikZ arrow type to >=latex' 1.0.1 ----- - Fixed bug in gvcols.tex 1.0.0 ----- Released 2006-09-10 - First public release. dot2tex-2.9.0/docs/0000777000000000000000000000000012335470751012204 5ustar 00000000000000dot2tex-2.9.0/docs/changelog.rst0000666000000000000000000000002712330403405014647 0ustar 00000000000000.. include:: ../CHANGESdot2tex-2.9.0/docs/common.inc0000666000000000000000000000131512335455030014160 0ustar 00000000000000.. _CTAN: http://www.ctan.org/tex-archive/help/Catalogue/entries/dot2tex.html .. _easy_install: https://pypi.python.org/pypi/setuptools .. _Graphviz: http://www.graphviz.org/ .. _PSTricks: http://tug.org/PSTricks/main.cgi/ .. _PGF/TikZ: http://www.ctan.org/pkg/pgf .. _MIT: http://opensource.org/licenses/mit-license.php .. _Python: https://www.python.org .. _pyparsing: http://pyparsing.wikispaces.com/ .. _pydot: https://pypi.python.org/pypi/pydot .. _preview: http://www.ctan.org/pkg/preview .. _preview-latex: http://www.gnu.org/software/auctex/preview-latex.html .. _AUCTeX: http://www.gnu.org/software/auctex/ .. _dot2texi: http://www.ctan.org/pkg/dot2texi .. _pip: https://pypi.python.org/pypi/pipdot2tex-2.9.0/docs/conf.py0000666000000000000000000001616712335465552013521 0ustar 00000000000000# -*- coding: utf-8 -*- # # dot2tex documentation build configuration file, created by # sphinx-quickstart on Thu Apr 21 19:55:14 2011. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.pngmath', 'sphinx.ext.ifconfig'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'dot2tex' copyright = u'2014, Kjell Magne Fauske' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '2.9.0' # The full version, including alpha/beta/rc tags. release = '2.9.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'dot2texdoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'dot2tex.tex', u'dot2tex Documentation', u'Kjell Magne Fauske', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output -------------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'dot2tex', u'dot2tex Documentation', [u'Kjell Magne Fauske'], 1) ] # Example configuration for intersphinx: refer to the Python standard library. intersphinx_mapping = {'http://docs.python.org/': None} dot2tex-2.9.0/docs/customization_guide.rst0000666000000000000000000004070712330511103017011 0ustar 00000000000000=================== Customization guide =================== Customizing the output ====================== Dot2tex offers a few ways of modifying the generated output. Using styles ------------ The dot language defines the ``style`` attribute that can be used to modify the appearance of graphs, nodes, and edges. The ``style`` attribute is passed to the rendering backend, and is a powerful and flexible way of customizing the look and feel of your graphs. Using styles requires detailed knowledge of the output format. The following example shows how interesting visual results can be achieved with the PGF/TikZ output format. The styles are PGF/TikZ specific. See the user guide for details: .. sourcecode:: dot graph G { node [shape=circle, fixedsize=True, width="0.2", style="ball color =green", label=""]; edge [style="snake=zigzag, green"]; a_1 -- c -- a_2; c [style="ball color=black"]; edge [style="snake=snake, blue"]; node [style="ball color = red", label=""]; a_3 -- c -- a_4 --a_3; } The ``snake`` styles only work on straight lines. We therefore have to use the ``-s`` option. ``fdp`` is used to lay out the graph:: $ fdp -TXdot ball.dot | dot2tex -fpgf -s > balls.tex The resulting graph is shown below. .. figure:: img/balls.* :alt: Using styles to style the PGF/TikZ output. .. note:: Use the straight edge option ``-s`` to force the use of straight lines. Otherwise curves will be used to draw even straight lines. Changing arrow types ~~~~~~~~~~~~~~~~~~~~ The style attribute can be used to change arrow types. A PGF/TikZ example: .. sourcecode:: dot digraph G { graph [mindist=0.5]; node [fixedsize=true, shape=circle, width=0.4, style="fill=green!20"]; c -> n_1 [style="-stealth"]; c -> n_2 [style="-to"]; c -> n_3 [style="-latex"]; c -> n_4 [style="-diamond"]; c -> n_5 [style="-o"]; c -> n_6 [style="{-]}"]; c -> n_7 [style="-triangle 90"]; c -> n_8 [style="-hooks"]; c -> n_9 [style="->>"]; c [style="fill=red!80"]; } Rendered with:: $ circo -Txdot pgfarrows.dot | dot2tex -tmath > pgfarrows.tex .. figure:: img/pgfarrows.* :alt: PGF/TikZ style arrows. You can also set the default arrow style by using the ``--graphstyle`` option or ``d2tgraphstyle`` attribute:: $ dot2tex -tmath --graphstyle=">=diamond" ex1.dot > ex1gstyle.tex .. figure:: img/ex1gstyle.* :alt: Setting default PGF/TikZ arrows. A PSTricks example: .. sourcecode:: dot digraph G { d2tdocpreamble="\usepackage{pstricks-add}"; graph [mindist=0.5]; node [texmode="math", fixedsize=true, shape=circle, width=0.4]; c -> n_1 [style="arrows=->"]; c -> n_2 [style="arrows=->>"]; c -> n_3 [style="arrows=-<"]; c -> n_4 [style="arrows=-*"]; c -> n_5 [style="arrows=-{]}"]; c -> n_6 [style="arrows=-o"]; c -> n_7 [style="arrows=-H"]; } Rendered with:: $ circo -Txdot pstarrows.dot | dot2tex -fpst > pstarrows.tex .. figure:: img/pstarrows.* :alt: PSTricks style arrows The above example shows how the ``d2tdocpreamble`` attribute can be used to load additional LaTeX packages. You could also use the ```--docpreamble`` option:: $ ... | dot2tex -fpst --docpreamble="\usepackage{pstricks-add}" ... Label styles ~~~~~~~~~~~~ Node, edge and graph labels can be styled using the special ``lblstyle`` attribute. However, this only works for the ``pgf`` and ``tikz`` output formats. Labels are drawn using code like: .. sourcecode:: latex \draw (157bp,52bp) node {label}; When you specify a ``lblstyle`` attribute, the style will be given as a parameter to the node like this: .. sourcecode:: latex \draw (157bp,52bp) node[lblstyle] {label}; Example: .. sourcecode:: dot digraph G { node [shape=circle]; a -> b [label="label",lblstyle="draw=red,cross out"]; b -> c [label="test",lblstyle="below=0.5cm,rotate=20,fill=blue!20"]; a [label="aa",lblstyle="blue"]; b [lblstyle="font=\Huge"]; c [label="ccc", lblstyle="red,rotate=90"]; label="Graph label"; lblstyle="draw,fill=red!20"; rankdir=LR; } .. figure:: img/lblstyle.* :alt: Label styles See the PGF and TikZ documentation for more information about styles. .. note:: You can use the ``exstyle`` attribute in addition to ``lblstyle``. The difference is that ``exstyle`` is ignored in preprocessing mode. Useful when using TikZ' ``pin`` and ``label`` options and you do not want them to influence the graph layout. Node and edge options ~~~~~~~~~~~~~~~~~~~~~ The ``tikz`` output format offers an additional way of customizing the output by using the ``--nodeoptions`` and ``--edgeoptions`` options, or the ``d2tnodeoptions`` and ``d2tedgeoptions`` graph attributes. The code for generating nodes and edges will then be wrapped in a ``scope`` environment like this: .. sourcecode:: latex ... \begin{scope}[nodeoptions] % code for drawing nodes \end{scope} \begin{scope}[edgeoptions] % code for drawing edges \end{scope} ... Customizing edges ================= The ``tikz`` and ``pgf`` output formats offers a few additional ways of customizing how edges are drawn and how edge edge labels are placed. These features are tightly integrated with TikZ and detailed knowledge of the output format is therefore necessary. TikZ edge labels ---------------- With the ``--tikzedgelabel`` option you can bypass the XDOT edge label placement and let PGF and TikZ do the job instead. This can be useful in some cases. However, this only works properly for straight edges and ``to`` paths. Example: .. sourcecode:: dot graph G { mindist = 0.5; node [shape="circle"]; edge [lblstyle="mystyle"]; a -- b [label="ab"]; b -- c [label="bc"]; c -- a [label="ca"]; } Without the ``--tikzedgelabel`` option the code for placing edges will look something like this: .. sourcecode:: latex % Edge: a -- b \draw [] (28bp,55bp) -- (28bp,75bp); \draw (40bp,65bp) node[mystyle] {ab}; % Edge: b -- c \draw [] (51bp,88bp) -- (68bp,78bp); \draw (66bp,96bp) node[mystyle] {bc}; % Edge: c -- a \draw [] (69bp,51bp) -- (52bp,41bp); \draw (53bp,57bp) node[mystyle] {ca}; With the ``tikzedgelabels`` option the output is simply: .. sourcecode:: latex \draw [] (a) -- node[mystyle] {ab} (b); \draw [] (b) -- node[mystyle] {bc} (c); \draw [] (c) -- node[mystyle] {ca} (a); The placement of the edge labels depends on the options passed to the edge label node (in this case ``mystyle``), and the curve used to connect the nodes. Some examples of ``mystyle`` values are shown in the figure below. The leftmost graph is rendered without the ``tikzedgelabels`` option. .. figure:: img/tikzedgelabels.* :alt: blabla Limitations: - Works best with straight edges and ``to`` paths - The ``headlabel`` and ``taillabel`` attributes are currently not affected by the ``tikzedgelabels`` option. To paths -------- The ``topath`` edge attribute offers a way to override the edges drawn by Graphviz. When a ``topath`` attribute is encountered, dot2tex inserts a so called ``to`` path operation to connect the nodes. A number of predefined to paths are defined by TikZ, and you can create your own. Example: .. sourcecode:: dot digraph G { mindist = 0.5; node [shape="circle"]; a -> b [topath="bend right"]; c -> b [topath="bend left"]; c -> a [topath="out=10,in=-90"]; b -> b [topath="loop above"]; } Generating the graph with:: $ circo -Txdot topaths1.dot | dot2tex -ftikz > topaths1.tex yields: .. figure:: img/topaths1.* The generated edge drawing code is: .. sourcecode:: latex \draw [->] (a) to[bend right] (b); \draw [->] (c) to[bend left] (b); \draw [->] (c) to[out=10,in=-90] (a); \draw [->] (b) to[loop above] (b); .. note:: To paths works best with layout tools that generate straight edges (neato, fdp, circo, twopi). The ``topath`` attribute overrides the edge routing done by Graphviz. You may therefore end up with overlapping edges. Here is a larger example that uses the ``automata`` library: .. sourcecode:: dot digraph G { d2tdocpreamble = "\usetikzlibrary{automata}"; d2tfigpreamble = "\tikzstyle{every state}= \ [draw=blue!50,very thick,fill=blue!20]"; node [style="state"]; edge [lblstyle="auto",topath="bend left"]; A [style="state, initial"]; A -> B [label=2]; A -> D [label=7]; B -> A [label=1]; B -> B [label=3,topath="loop above"]; B -> C [label=4]; C -> F [label=5]; F -> B [label=8]; F -> D [label=7]; D -> E [label=2]; E -> A [label="1,6"]; F [style="state,accepting"]; } Generated with:: neato -Txdot fsm1.dot | dot2tex -ftikz --tikzedgelabels --styleonly .. figure:: img/fsm1.* :alt: blabla Color support ============= All Graphviz `color formats`_ are supported, including the RGBA format. Transparency will however only work when using the PGF/TikZ output format. .. _color formats: http://www.graphviz.org/doc/info/attrs.html#k:color Named colors are supported, but you have to ensure that the colors are defined in the resulting LaTeX file. The default PSTricks and PGF/TikZ templates load the ``X11names`` color scheme defined in the xcolor_ package. Note that color names in the xcolor_ package are case sensitive. This is not the case with Graphviz's `color names`_. Use CamelCase_ names in your graphs to ensure compatibility with xcolor_. .. _CamelCase: http://en.wikipedia.org/wiki/CamelCase .. _xcolor: http://www.ctan.org/pkg/xcolor .. _color names: http://www.graphviz.org/doc/info/colors.html For convenience, a color definition file ``gcols.tex`` is distributed with dot2tex. You can find it in the ``examples`` directory. This file defines most of Graphviz's named colors as lower case. Include this file in the preamble if you need it. .. _templates: Templates ========= The output from dot2tex is a list of drawing commands. To render the graphics with LaTeX there's a need for some boiling plate code. This code can be customized using simple templates. If no template is specified with the ``--template`` option, a default template will be used. The following template tags are available: ``<>`` The actual list of drawing commands. ``<>`` Drawing commands wrapped in a figure environment. Note that several important style options are set in the figure environment. ``<>`` Bounding box. Example: ``(0bp,0bp)(100bp,100bp)`` The individual parts of the bounding box are available with the tags: - ``<>`` - ``<>`` - ``<>`` - ``<>`` Note that the bounding box parts are given without any units. ``<>`` The text encoding used for the output file. Current values are: - ``utf8`` - ``latin1`` ``<>`` Document preamble. The content of this tag is set by the ``--docpreamble`` option or ``d2tdocpreamble`` graph attribute. Useful for including packages and such. ``<>`` Figure preamble. The content of this tag is set by the ``--figpreamble`` option or ``d2tfigpreamble`` graph attribute. Useful for setting font sizes and such. ``<>`` Code generated for preprocessing labels. Three different templates are used by dot2tex for the preprocessing mode, output mode and figure only mode respectively. The following template tags make it possible to use the same template file for all modes. ``<>`` and ``<>`` Code between these tags is ignored in preprocessing mode. ``<>`` and ``<>`` Code between these tags is ignored in output mode. ``<>`` and ``<>`` Code between these tags is used as a template when using the ``--figonly`` option. Ignored in preprocessing and output mode. .. note:: Tags that have no value are replaced with an empty string. Insert a ``%`` character after a template tag to avoid unwanted line breaks. Default PGF/TikZ template ------------------------- .. sourcecode:: latex \documentclass{article} \usepackage[x11names, rgb]{xcolor} \usepackage[<>]{inputenc} \usepackage{tikz} \usetikzlibrary{snakes,arrows,shapes} \usepackage{amsmath} <>% \usepackage[active,auctex]{preview} <>% <>% <>% <>% \begin{document} \pagestyle{empty} % <>% <> <>% % <> \enlargethispage{100cm} % Start of code % \begin{tikzpicture}[anchor=mid,>=latex',join=bevel,<>] \begin{tikzpicture}[>=latex',join=bevel,<>] \pgfsetlinewidth{1bp} <>% <> <>% \end{tikzpicture} % End of code <> % \end{document} % <> \begin{tikzpicture}[>=latex,join=bevel,<>] \pgfsetlinewidth{1bp} <>% <> <>% \end{tikzpicture} <> The ``<>`` template tag is available when the ``--preview`` option is used. The contents will then be: .. sourcecode:: latex \usepackage[active,tightpage]{preview} \PreviewEnvironment{tikzpicture} \setlength\PreviewBorder{<>} Default pstricks template ------------------------- .. sourcecode:: latex \documentclass{article} % <> \usepackage[x11names]{xcolor} \usepackage[<>]{inputenc} \usepackage{graphicx} \usepackage{pstricks} \usepackage{amsmath} <>% \usepackage[active,auctex]{preview} <>% <>% <>% \begin{document} \pagestyle{empty} <>% <>% <>% <>% \enlargethispage{100cm} % Start of code \begin{pspicture}[linewidth=1bp<>]<> \pstVerb{2 setlinejoin} % set line join style to 'mitre' <>% <> <>% \end{pspicture} % End of code <>% \end{document} % <> \begin{pspicture}[linewidth=1bp<>]<> \pstVerb{2 setlinejoin} % set line join style to 'mitre' <>% <> <>% \end{pspicture} <> Special attributes ================== Dot2tex defines several special graph, node and edge attributes. Most of them are not part of the DOT language. ``texmode`` Changes locally how :ref:`labels` are interpreted. ``texlbl`` Overrides the current node or edge label. ``d2tdocpreamble`` Sets the ``<>`` tag. ``d2tfigpreamble`` Sets the ``<>`` tag. ``d2tfigpostamble`` Sets the ``<>`` tag. ``d2tgraphstyle`` Sets the ``<>`` tag. ``d2ttikzedgelabels`` Sets the ``--tikzedgelabels`` option. ``d2tnodeoptions`` Sets the ``--nodeoptions`` option. ``d2tedgeoptions`` Sets the ``--edgeoptions`` option. ``style`` Used to pass styles to the backend. Styles are output format specific, with the exception of the styles defined by the DOT language. ``lblstyle`` Used to set styles for drawing graph, node and edge labels. Only works for the ``pgf`` and ``tikz`` output formats. ``exstyle`` The same as ``lblstyle``, except that ``exstyle`` is ignored in preprocessing mode. ``topath`` Used to set a ``to`` path operation for connecting nodes. Only works for the ``tikz`` output format. ``d2talignstr`` Used to pass a default alignment string to the PSTricks ``\rput`` command:: \rput[d2talignstr] ... ``d2toptions`` Allows you to pass options to dot2tex in the same format as from the command line. The ``d2toptions`` value is parsed in the same way as ordinary command line options. .. _external_dot_files: Including external dot files ============================ If your input file contains the single line .. sourcecode:: latex \input{filename.dot} dot2tex will load the ``filename.dot`` file and convert it. This feature is useful when you want to use :ref:`the dot2texi package `, but don't want to include your dot code directly in your document. dot2tex-2.9.0/docs/docgraphs/0000777000000000000000000000000012335470751014156 5ustar 00000000000000dot2tex-2.9.0/docs/docgraphs/balls.dot0000666000000000000000000000103712316606077015765 0ustar 00000000000000// This graph uses special PGF/TikZ styles to create some interesting // visual effects. To get the snaked edges run dot2tex with the -s option // to force straight edges. Example // $ fdp -Txdot balls.dot | dot2tex -s > balls.tex graph G { node [shape=circle, fixedsize=True, width="0.2", style="ball color = green", label=""]; edge [style="snake=zigzag, green"]; a_1 -- c -- a_2; c [style="ball color=black"]; edge [style="snake=snake, blue", color=red]; node [style="ball color = red", label=""]; a_3 -- c -- a_4 --a_3; }dot2tex-2.9.0/docs/docgraphs/ex1.dot0000666000000000000000000000005112316606077015360 0ustar 00000000000000digraph G { a_1-> a_2 -> a_3 -> a_1; }dot2tex-2.9.0/docs/docgraphs/ex1b.dot0000666000000000000000000000010012316606077015515 0ustar 00000000000000digraph G { node [shape=circle]; a_1-> a_2 -> a_3 -> a_1; }dot2tex-2.9.0/docs/docgraphs/ex2.dot0000666000000000000000000000012612316606077015364 0ustar 00000000000000digraph G { a_1 [texlbl="$\frac{\gamma}{x^2}$"]; a_1-> a_2 -> a_3 -> a_1; }dot2tex-2.9.0/docs/docgraphs/ex3.dot0000666000000000000000000000014312316606077015364 0ustar 00000000000000digraph G { start; end; node [texmode="math"]; a_1; a_2; start -> a_1 -> a_2 -> end; }dot2tex-2.9.0/docs/docgraphs/ex4.dot0000666000000000000000000000037112316606077015370 0ustar 00000000000000digraph G { a_1 [texlbl="$\frac{\gamma}{2x^2+y^3}$"]; a_1 -> a_2 -> a_3 -> a_1 node [texmode="math"]; a_1 -> b_1 -> b_2 -> a_3; b_1 [label="\\frac{\\gamma}{x^2}"]; node [texmode="verbatim"] b_4 [label="\\beta"] a_3 -> b_4 -> a_1; }dot2tex-2.9.0/docs/docgraphs/lblstyle.dot0000666000000000000000000000055712316606077016530 0ustar 00000000000000digraph G { node [shape=circle]; a -> b [label="label",lblstyle="draw=red,cross out"]; b -> c [label="test",lblstyle="below=0.5cm,rotate=20,fill=blue!20"]; a [label="aa",lblstyle="blue"]; b [lblstyle="font=\Huge"]; c [label="ccc", lblstyle="red,rotate=90"]; rankdir=LR; label="Graph label"; lblstyle="draw,fill=red!20"; }dot2tex-2.9.0/docs/docgraphs/nodesize.dot0000666000000000000000000000024612316606077016511 0ustar 00000000000000digraph G { node [shape=rectangle]; a_1 [margin="0"]; // will have no effect a_2 [margin="0.7,0.4"]; a_3 [width="2",height="1"]; a_1-> a_2 -> a_3 -> a_1; }dot2tex-2.9.0/docs/docgraphs/pgfarrows.dot0000666000000000000000000000117012316606077016700 0ustar 00000000000000// Examples of PGF/TikZ style arrows. See chapter 14.1 in the PGF/TikZ manual // for all availale arrow styles. // To generate this graph you can write: // $ circo -Txdot pgfarrows.dot | dot2tex.py > pgfarrows.tex digraph G { graph [mindist=0.5]; node [texmode="math", fixedsize=true, shape=circle, width=0.4, style="fill=green!20"]; c -> n_1 [style="-stealth"]; c -> n_2 [style="-to"]; c -> n_3 [style="-latex"]; c -> n_4 [style="-diamond"]; c -> n_5 [style="-o"]; c -> n_6 [style="{-]}"]; c -> n_7 [style="-triangle 90"]; c -> n_8 [style="-hooks"]; c -> n_9 [style="->>"]; c [style="fill=red!80"]; }dot2tex-2.9.0/docs/docgraphs/preproc1.dot0000666000000000000000000000025312316606077016422 0ustar 00000000000000digraph G { node [shape=circle]; a_1 [texlbl="$x^2+\frac{\sin y}{y^2+\cos \beta}+\gamma_3$"]; a_1 -> a_2 [label=" ", texlbl="$x_1+x_3^2+z+c+v~~$"]; a_2 -> a_1; }dot2tex-2.9.0/docs/docgraphs/pstarrows.dot0000666000000000000000000000101612316606077016731 0ustar 00000000000000// Examples of Pstricks style arrows. // To generate this graph you can write: // $ circo -Txdot pstarrows.dot | dot2tex.py -fpst > pstarrows.tex digraph G { d2tdocpreamble="\usepackage{pstricks-add}"; graph [mindist=0.5]; node [texmode="math", fixedsize=true, shape=circle, width=0.4]; c -> n_1 [style="arrows=->"]; c -> n_2 [style="arrows=->>"]; c -> n_3 [style="arrows=-<"]; c -> n_4 [style="arrows=-*"]; c -> n_5 [style="arrows=-{]}"]; c -> n_6 [style="arrows=-o"]; c -> n_7 [style="arrows=-H"]; }dot2tex-2.9.0/docs/docgraphs/simple.dot0000666000000000000000000000011212316606077016152 0ustar 00000000000000graph G { mindist = 0.5; node [shape="circle"]; a -- b -- c -- a; }dot2tex-2.9.0/docs/docgraphs/simplelbl.dot0000666000000000000000000000032112316606077016646 0ustar 00000000000000graph G { mindist = 0.5; node [shape="circle"]; d2tfigpreamble = "\tikzstyle{mystyle}=[fill=blue!20]"; edge [lblstyle="mystyle"]; a -- b [label="ab"]; b -- c [label="bc"]; c -- a [label="ca"]; }dot2tex-2.9.0/docs/docgraphs/topaths1.dot0000666000000000000000000000031412316606077016430 0ustar 00000000000000digraph G { mindist = 0.5; node [shape="circle"]; a -> b [topath="bend right"]; c -> b [topath="bend left"]; c -> a [topath="out=10,in=-90"]; b -> b [topath="loop above"]; }dot2tex-2.9.0/docs/docgraphs/valignmode1.dot0000666000000000000000000000024012316606077017071 0ustar 00000000000000digraph G { node [fontsize=10]; node0 [label="{left|right}", shape=record]; node1 [shape=rectangle, label="node 1"]; node0 -> node1; rankdir=LR; }dot2tex-2.9.0/docs/img/0000777000000000000000000000000012335470751012760 5ustar 00000000000000dot2tex-2.9.0/docs/img/balls.pdf0000666000000000000000000002063012316606077014552 0ustar 00000000000000%PDF-1.6 % 1 0 obj<> endobj 2 0 obj<> endobj 3 0 obj<> endobj 5 0 obj<> endobj 6 0 obj<>/ProcSet[/PDF]>> endobj 7 0 obj<>stream xP( endstream endobj 8 0 obj<><><><>]/Bounds[9.00009 18.0002 25.0003]>>/Extend[true false]/Domain[0.0 50.0006]/ShadingType 3>>>>/ProcSet[/PDF]>> endobj 9 0 obj<>stream xP( endstream endobj 10 0 obj<><><><>]/Bounds[9.00009 18.0002 25.0003]>>/Extend[true false]/Domain[0.0 50.0006]/ShadingType 3>>>>/ProcSet[/PDF]>> endobj 11 0 obj<>stream xP( endstream endobj 12 0 obj<><><><>]/Bounds[9.00009 18.0002 25.0003]>>/Extend[true false]/Domain[0.0 50.0006]/ShadingType 3>>>>/ProcSet[/PDF]>> endobj 13 0 obj<>stream xX;r%7y \`! (T; R(Dm]3 ސobg ɢAPV>U5|?˗9ky'~_)sكzY[ke-+zUZWV XR֨uvBUˢ,c$5\;Z˵}U, z:Mj=[Ut 'b^{r5bpl,cY4^M[kLpH1V_Ǭ}l#'/:tF10"UcA @ǝddTe 6KU\O IEe'J35XqW9DXrhT]nڇFmiT J@]>÷C3`JjkΔ xZCx8J]T8*zhB+\Gcu80274g9@A $W 2\zgAD9L€C"(!H ws ӆH[Q`(u ˅F?9| }qh icB!PBV )em`ZF$Q-#7<, sP{.tllƴX-` J M/cAfB@%im`eAfH؆jܒ6 Aj$]*򗅨z\u1Z}Ыy=nuP lz,Z9i BMLQ"T&k] :f* =HwD@1Hr$a4YSуh7TY 4p4B jld;CXJb]{1 \Hʮ3. L33RKҔ>w6W7I'Pd5 TR5$aWM±Bo3ntEkg"%%u($M{Py G„@H1@h-;4H2@0 >٬aIx'ђ l(gQ8 g>7A8[ ;ZIFG7D {'^"sQ gf| .Q.HHFBשּRJ񑚅6D@.P [9:tP]T25O{aA7ч])Y\^Y&td0/(N9CUh':Ds;}c̟1!_1[^_~׫3XpuB͜k9!h?(&Pk mHc#w9}t!A3Ms.d[x};cO5OhiQ]w|[ǥlL:.7[ZB t{v^ޯ.4x7썝p9t9u*$ozi}8z敻Fk/=) 7Dn}-=vy:y;>qinY} w֞%kZ_k}GT|z{s_<;e#Fxj-ݝw4oAnrY;Δtu~y@5ֵHw'ks3&Tf~` endstream endobj 14 0 obj<>stream 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 TeX application/pdf uuid:cfc453da-26e4-4525-b1b4-7c8cac1a9d02 uuid:0716dde3-fe3c-4196-b7d4-041d1b6f73b9 MiKTeX pdfTeX-1.30.6 endstream endobj xref 0 15 0000000004 65535 f 0000000016 00000 n 0000000076 00000 n 0000000156 00000 n 0000000000 00000 f 0000000290 00000 n 0000000386 00000 n 0000000462 00000 n 0000000635 00000 n 0000001207 00000 n 0000001381 00000 n 0000001955 00000 n 0000002130 00000 n 0000002703 00000 n 0000004799 00000 n trailer <<14ECC20F84D17F429F96D3AEC3D9A27F>]>> startxref 8146 %%EOF dot2tex-2.9.0/docs/img/balls.png0000666000000000000000000002030612316606077014565 0ustar 00000000000000PNG  IHDR pHYsnu> IDATxyxU;,d!!@  !l @Ĩ(uet^TEQ_e¨(Ϩ*눎lH$$齻a'tvֽ{.#"B***v޽uֺ8:tC;v Ej`-`_zСCDT$M8qۆ o\%&BhMM^8nex;tڵk/X 2^{mѢEү\bA Mu]7 MUU69b2GNe/0ȀjjjfBr223l".f$ D0<h޽ol L8x>񀉨1ѠSyyy4Q  0 N|(Ahv08ƒ {0ѠSeee2cV]&l ]xTUt]3 0 YXƾ;&,EI9yE$ɲ:в%GaA$՚Ұwo(ZL&Ƙiy]UK(I~Y˲*:`0&7L4x4p?$EN(d9TM˲_D_T? 2H4 ;;H 4L1]O4]<QLEYeY4 v@x .;.!s#CUQ@G뚮5M@F%@2n&8fe(E!M ? G]D&\r%S_N81jԨ{f,`N3 >͛73l'x  p3&rQ?P|AU%0xx-ge!"G[FAx5k{7*sdAQ&9xIHy~\ܾLϩ{wL[qys' tfwYeԊQQ͛v-*+1a22*t5L4(| ׿l6mѣ.…6DEI<$&JD@qCšw܁!CDFv#6nEe%l#py0|Q ;OEyyJNG@YYTRB7HD@DuuuyyyIq(-El/:C_?Y@v6rs1t(RS[]ز'nss/cǎ;w677`w_ۖ FyoVpTW.̙kʕ+322`2E\ajoXc11V\\|СuunVZW[oӮ]^Qӧ0w1w[խO}Y1_kI x eeQ~>8k]bL%7?JDw߳=4-{2b!z-z^uxAނiʕ\sM(ս+WbTp/Uz %%el؀_-Dm6|q܍$j3멾vv;p =;BKzxMZ'wɓhѯ{x7#ݟޅ`H_nI,)&2&"2i1G Ăej͝;7l0>:w…;Bѯ߯>jժGRcRbX &?9/ <=X|?JP;u¤Iس|]/q:zl6lY  ZԺRP 89Ƴ& TWWz 𖔔A5ƞ=̙#ѱ#23?k.>H4.kPSf+z`vnA 4c@ dU.///))iPQ;u+ >{ ]\dg bٲ^@^Z3s',_Fv_ͫz7D |6ye*aF`L6 Ugtvń V\rɯ{)\wjkqyy8q7:c2DhmM#C~I$Q$IQRtb:c:,qbۇ!C:2%2\vY_iٳ@Li ~$L 'm=cHIϱcu B/&NثWժUp˲Ǣ -b"^`9#e>Ɗcl֬YxGFЈoy]o'Mw~^]]=lذx+y>@)66_ܝ_~p b-[ P' 8u֝@0o}ozG[aXNW]+WGC-.+{Hugu8:** UUE(dy !5jԒ%K233ϲрjjj2hƦ16I] gϞz[}Cp=EOWT0FIwjP.]|3:v$A "/O2ip!ʪHNwdG-alBT$ \iH+Dsx<Ã/@A&aRZYKpaڠ<˖a. [iǎŮ]p5x%r霩j&m 551*>~(rz,cL3 U$I u]:ETN|{oXQ%I8 "MUÐ LuܹgϞAA0P5ZY MKt"&.\bŜ9s&L`_a>wAVkrv}nkbreX&["Y`sq6mZ^^;DuȮ6UK]2@zB/Z (Wj6@8\{h\E M9tN:zFg.ӯ_>~(/{'"I:k+?](+hBڴ:ws9_ce-b^c5^al1c/O3(c16>}zgHn̤YCknb($Jn\NVѪsR;8ŒܡCNb}N+:(%<M;wlt͚uUbÏbbJL/k=Ì,B{xǁa^.eKP}z#Bb)v MYG$jy~uTEYShX7ߤsVPP0xnݺ%%%EFF !pOsBQQt44PFM|(Oь$-C:~"4Z,^Eř+|16$ɌL;yȑNi4J?>w/ҭ]a:LDcĈ 3榛n:u/ҼgB[E!Kih0f8'l }Y"MNtO?Gi47`/$^湦i[n-//߲e޽{饗&B} oX1rE0CUUU466pt477kxe0yri?݆nrij϶>|S^HN"giRbbbDDjAu X,̟qZDyzOO>ÁZ> "?9G/9B!I"W88EQ\.W}}(EQTU0]rgcDI߽s ի1u*JK>J1(m_~߾}fn7 v;NϧS811;[} [ĨQ0Ajlmll<~8Y}>߉'Ea0SYUU48#{<(64B֍Z|'AQqiH'%)J,dB(&%%eee~y0E!Pk&˲$I=#)`aaahp㸾}^ZUUǣ,˧꺮9zP& TH X0cbbChd5>|СCOOSEE~O$ &t=*[_}ոq\.WXk=]~Yw5@[i6.\b8[~!#3sLx*_|QphTf5_~}NN)gȑ#PU:Kn޼2ԦMWΑ G?^[[܋{cyWt}όX.0jw+ʮ٘];pGʄ[=|Qؘ+]{\7m9٘z8ۣ~oU0j3[9L_)J`NN *uӖa&lzτ*eը.FqO\!T^ZF*ԇ'DlGD?ć;q 풶p@t lnX>;ZamXH~8MItDۼFa6lqdK(h'v-2#m!Wa^.r7`C,bC\ګ,Lzڨ 1S/E6C\BWxk{J\9V`E4ý6&zːc~lDk>vW֡ \X+`kתQ& IG~ bfbxhDL܁(9&cxdfBAGpd6f/!0oud c95hW9Ch( U#12ᳶ8>f4ߋ{CKQj\=#m!NFl싾KR,݈1;4pw ̛F'$dڷ_U|/!6ocP r_Рr& wM` 0D۶Ra7c8n놂 { /Ya} OMT3m<mETh=}""_0|&2n3c&lj0SZ%۰myamQ-jcxo~ & e!M ׺][%*辣rssAmoo:DEE 07tӐ!mfL= Q|ɧ~Z&Y>SEU۫Cq]w=QQQa;c֭WŦ=ƧI$zD'{d%TA/] L4xqx$DfqƔ`.`0|𓵟d#`ZA9'eqqfunhfX4~KJJx^N6lx7&'d.;} ^; Vk5i1E`y@,Yqp4xb)^J}056"6 iHKCZbcěAx&0&0dJh"EQDKUUU!]Сo@1«@1`0x8 < dNgdiц5E B$"Ev})X "@-꾨s8aA477e)├G? 7v.Ii-$@!"4[hŢ>D _ę 2$](IȊjQ(x#\zE{d$$˲ *W!`Pt;%\WUsHUTK8Ƙ$J(H\YرcFFFhpSNiiik&ͫyUE5Msg膦j(~ 7hDfffllnmtUWmsl.uzeLns?81"_n[^Sf2tx FLf - x}3NLL hЩcǎO> stream xڵS;O0 +MzChmH#t1ݵj^|x0܉yYV+s*:tCM E|N'oOko˂$nֶ_`o[Ǜ;rһ, endstream endobj 4 0 obj << /Type /Page /Contents 5 0 R /Resources 3 0 R /MediaBox [0 0 124.83 159.488] /Parent 9 0 R >> endobj 1 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (consistenta.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 10 0 R /BBox [0.00000000 0.00000000 55.00000000 133.00000000] /Resources << /Font << /F11 15 0 R /F7 20 0 R >> /ProcSet [ /PDF /Text ] >> /Length 724 /Filter /FlateDecode >> stream xUMo0Wq=Diʅ$mR@jq^f#LVO/9o?`Bcq+ؓ3(π6=AQ9ph%_ bLu(<(dszoo6ϒ %d;\\.$=\392bB h5iȺSuL|9+8e>K@Eq`+B3D]uvɫ/6r_%wFyuE}T5Ι%QGY/SCRzWx+U2~a>+ 4 G! A!Ʉ50fF"> endobj 13 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14.04 /StemV 72 /XHeight 431 /FontBBox [ -32 -250 1048 750] /Flags 4 /FontName 21 0 R /FontFile 11 0 R >> endobj 15 0 obj << /Type /Font /Subtype /Type1 /FirstChar 97 /LastChar 97 /Widths 22 0 R /FontDescriptor 13 0 R /BaseFont 21 0 R /Encoding 14 0 R >> endobj 18 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 79 /XHeight 431 /FontBBox [ -27 -250 1122 750] /Flags 4 /FontName 23 0 R /FontFile 16 0 R >> endobj 20 0 obj << /Type /Font /Subtype /Type1 /FirstChar 49 /LastChar 51 /Widths 24 0 R /FontDescriptor 18 0 R /BaseFont 23 0 R /Encoding 19 0 R >> endobj 22 0 obj [ 529] endobj 24 0 obj [ 569 569 569] endobj 19 0 obj << /Type /Encoding /Differences [ 0 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/one/two/three/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef] >> endobj 14 0 obj << /Type /Encoding /Differences [ 0 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/a/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef] >> endobj 2 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (consistentb.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 25 0 R /BBox [0.00000000 0.00000000 59.87000000 142.60900000] /Resources << /Font << /F18 30 0 R /F16 35 0 R >> /ProcSet [ /PDF /Text ] >> /Length 728 /Filter /FlateDecode >> stream xUMo1 ϯb"{CТ!-R3ݝKNb;((BG=e!ÐGlP,rӀВnP 0B$ m`C{-Fs QXV8^ziSkY## lbpը|}g1 zɂH aV7,FFӇc2lv7T6-uaX'A(r&%ѡ|޼5T䐢6aǔC'mʪ̭cu]Zh,ؒqnYzg.|7\ %&.M~,&ų;;"U,ͽnH7^+!5v9.@z mEheZ]oʹ^aޔ" qěwq$endstream endobj 25 0 obj << /Producer (MiKTeX pdfTeX-1.30.6) /Creator (TeX) /CreationDate (D:20070616223338+02'00') /PTEX.Fullbanner (This is pdfTeX, Version 3.141592-1.30.6 \(MiKTeX 2.5.2574\)) >> endobj 28 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14.04 /StemV 65 /XHeight 431 /FontBBox [ -30 -250 1026 750] /Flags 4 /FontName 36 0 R /FontFile 26 0 R >> endobj 30 0 obj << /Type /Font /Subtype /Type1 /FirstChar 97 /LastChar 97 /Widths 37 0 R /FontDescriptor 28 0 R /BaseFont 36 0 R /Encoding 29 0 R >> endobj 33 0 obj << /Ascent 694 /CapHeight 683 /Descent -195 /ItalicAngle 0 /StemV 53 /XHeight 430 /FontBBox [ -33 -250 945 749] /Flags 4 /FontName 38 0 R /FontFile 31 0 R >> endobj 35 0 obj << /Type /Font /Subtype /Type1 /FirstChar 49 /LastChar 51 /Widths 39 0 R /FontDescriptor 33 0 R /BaseFont 38 0 R /Encoding 34 0 R >> endobj 37 0 obj [ 514] endobj 39 0 obj [ 459 459 459] endobj 34 0 obj << /Type /Encoding /Differences [ 0 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/one/two/three/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef] >> endobj 29 0 obj << /Type /Encoding /Differences [ 0 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/a/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef] >> endobj 3 0 obj << /Font << /F8 8 0 R >> /XObject << /Im1 1 0 R /Im2 2 0 R >> /ProcSet [ /PDF /Text ] >> endobj 31 0 obj << /Length1 740 /Length2 1421 /Length3 532 /Length 1967 /Filter /FlateDecode >> stream x{*޾[tNrEgJ'.X`#d{EYoH|Qz$R$kD,YAfI_rfg+Ǜ:9ld |[ 5&ߖ{.rzbq9,Xsy&ƒDG GKv??;Qn0QeT[ʌ15V:I^xFj[@18ٯ}eK-SGGEʽAQ>W<>Ž@ZkŖ[.4Jrs&N鲹oHŦ7T OU[[XXxץ,ji;&&KZg̾=ih1$ok$m,tdʁ6af\[bY/ΈOe4Jg>jh挶ۓ5Ǐ680~Ue@n`ɹf}Wg( FV̙10Ȁ^j[)V`̧"_ V&H y`cm'ƶ3 &aaâb5eUVilTy#ӏEͫ,.{~'P?Ʋ4(d`}$E endstream endobj 38 0 obj /NMEWJA+CMR17 endobj 26 0 obj << /Length1 753 /Length2 1517 /Length3 532 /Length 2070 /Filter /FlateDecode >> stream xiXSg+k EQPd3!$ [ A֘I&A"YD@A6Q)A@h& edq"֫Wϙ_s9}|"nGe[A//áqTk,B @ Hpd=$@!(D"Ñ6D$"Sy0\3!P$AT.CBPd8"`+OL>|6 >YQ_F;APXc*HJF`ai忁W}OosJP((`(-~YP멏T~p4 1 DLfp|䳾&Q7ρ K[_$g IP,ũ*#eguR6}>p=n'Ȱw/28eЩqsIM`B q6Vgӓӥ2g4 K.ѧc-A?WTuUk:D~75Lo<.H6gK Rt:jqT3[_d3GBWdqf,jjHZ-ڂgN"ÊWmRs+ktK*iSbT+kqFO~SqUKS~hܦt˙Orήڴ }`-snY/q;nכ D+4 > stream xUiT/ Pd H҈H  0!@@"KY"K\D%le9* -(l"Rwz)y{̟y{)~pHn%8K,C2e"##p0 c5pX# pL$,&Y-7.`4(ٖ`C, >j laG(DԤ)Zd|`0:oZ+Nry4LüH! o kt5o ykQ2B,7~ZP4l P&7\|Zhl|=^$iB&GhpWkܿk4$X,%ǯ5[yY0`k0Zq8APV|Ah$ @(,&O}_0m "GV' c сda?YNNޥDwd.gi׸1 Ev(j@[}l^NW}'Ge_ +8RØ+F,Ni4\}V@G)?̴N쥍+?Whm>#g _eȌ*ɰI<ߝIWb,|UI~^r+ K+s6S ܪT,ZVᓁSMG/&_Hd!DE =0G0fnΨᏵIvo^[J !_`x"L}Ѷ]7i!zC8>>vYaw&TsR8Gr&wθQ*M,雚ףx$UljuNiY^+pitIN*l5Iynm#yw :7s]F:Re^]MJ/3t67#Uᒠ8"#ayě_b l4 yrzp)6!ejN!S}q@w9#E68N N+I ,ؗq`&2'־z@ɱGqm4}7<.M|nN;vN4Jk1o`1CLpkas6Y0zSC7;-&֦m#źJfwk^2j]o?&w̼6!6w(_Ē 3Zٽ,"rI^>(YR-qV҂[HQ:W ڸ},P?S3gyŗYm^c k'fW> 1g׶gDKcMr49{V^V倩INms7hx|/~g+wMU~F04'>oLgqd{koȏԓHҳZI3K/ףkYcѮQDq$}YU*2=Эbtg줟O~kY =_vC󣞨:M8xFQ:J#b^_ܥ;i%0o~Eh8mb?eӛr̄UouY1=in9O)3;(}8rN>9@ zۓ4^u.q>B/G-΀eƳ -vYWi (кLhd\շ[i#1' m~'Ne!Kq۪__:tlN*՝RZ -ے&o^忇Xs @|PWLbk'X\)@`S'b endstream endobj 23 0 obj /QERKGX+CMR7 endobj 11 0 obj << /Length1 753 /Length2 1127 /Length3 532 /Length 1677 /Filter /FlateDecode >> stream xkTSWaՆĠ񲣍)! LR.  1g9 b8*`@b/ET dF .l[K)ҟ_?w9> zCH#I8 k6`PN8VNB>`N ^+y xƵ"[0sZ DH 9$rR5f\ d& j3#tHd@Ep*H s)SUi_2 nn3L`DpL xOflsN~WIsUg5Z H`"N3{NըB!xޯhC$ %*Lbls~3Ƞ0_vf%G1RzVC"P=H`lYh~_f)pR!Ϥ"sYb7{04od%NP><3_{ A@Yq9APA1u JNUTެa/1ּk5-\pNf~cC;%6fI=wv992KoKsl~䒶5$[ɜڔ̛kj2^YZȲ=Kj"4oUqnz)j,# ëWk &*RXD|@ceepK Si?ّl}ҏ)ޮ>>M8gjHW!- T_A}5}[wl ĹG=JY[۲w:2 y(~3I_Uo ڇNFV0SVG_;;|9 Wq|q6ǻ묗D)J8)3j]E^tZ=头zNzq78꒳p5tZב^}C-Vst IeBEIVg k#+wi\TܪݪyE[FK:K gؗr,zFMfVC# np-{/ rr`@^aoaPdP;ѣ<`8i|To]`qրK=͟r KWV|m;,.JPN42jrwpkڈqGrr/QOBn5nѿ_ mkz稘e})n.s/w7@r5r"J|{ endstream endobj 21 0 obj /GALBRH+CMMI10 endobj 7 0 obj << /Length1 755 /Length2 1856 /Length3 532 /Length 2417 /Filter /FlateDecode >> stream xR{O!du *p`(HgD]8 ip5I4}?R,h" |- Y?cT#>h~ͨAd*PP0i?ߵ9D23-O%,hT@~C0Df Ag|%q>LcɺVQ|w0ɷ/?v?L цNdzGh iD0 ti{ :|mB^@,-}4 /H1`lho&L"]0"&R.EcJ+`KxvF- Xʕ q.)o<;r*: 1~c>TsÓhᇗ2=/+Iڅ'ReǛUK44R]թsB.I:*yFp+!,ڴ{pja"KEg˥Z p6x?V\H<p\ۄB٤ڂp_ϔcLkRFʲpn =+CN)OZ _~5.iˈQ`tRA)u/7{S8Jr.U"#xj<"<N~#H\>/&vWוpt=4WilQ/TR@m5Đ $H6]`Q7MR_\J& ͸5Iya\ZݲJGDJ oA.u-mo&TdRLNnhxiR(~0Ԓ1$aXNr靪z*v!s3'6d}F6@RXSMTٷq›lx3K˥י^{󲵪8;+[ ip.xgm:3N(K7Qw{&o? {p7jKJ])+F|EG%d+܈K2L#d͎ 6D`HQ{o|>q|bRe6b+XZVYL{v5 t߰܉'^sm4tu%!ww=.2]=emE,ߒ Mw?jX5JPկPm;p!z5$n!d-ho~6Fp!a.OYV/i`'Ԃ.vj{4zn- wɌ4RNPT_NA3HPdwrviw<]QHDo%qRz!-wі'{@71ߞ ]Ǚe$2k/WFap/?Tb)fMox+hx㼐_/H#fB8bF3CL /3nL媋-Z{vqʍ^y^ϊ~sIEgWLk'/%oJl(5fٍTLC+7SY)D|MV")s׬icg"*\b>$oB{~hi#sXY"+r!M.0;+s} G'vh:QϛERG6ӻ}Grs5<9]5S¬X3o&ѽq5_iWF| u=DQ vOYVJ+3I{$TuJ}j>|fSk vdM9%xKvav4<:onfsJb&;PE{ $g!hঢDHsx[ydwoW f3Y?yX}"VI7 P.yՔX;ݱ93B!kaA.pWȶ" nz3bRuG[`և=hDϩ4rËދzVY }ٔG<_~BQSJd% w![~xT{jcw=be=G㣐ߵhGR_<6}iͭA/䪝?w]N_dIV\RË(_d"U#}qk0.6pCQ=MC.qP_JG*O8#ٯ\҉QL <@:>6ti=w%g?|' PA<G~ endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Encoding 40 0 R /FirstChar 97 /LastChar 98 /Widths 41 0 R /BaseFont /IOGWGR+CMR10 /FontDescriptor 6 0 R >> endobj 6 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /IOGWGR+CMR10 /ItalicAngle 0 /StemV 69 /XHeight 431 /FontBBox [-251 -250 1009 969] /Flags 4 /CharSet (/a/b) /FontFile 7 0 R >> endobj 41 0 obj [500 556 ] endobj 40 0 obj << /Type /Encoding /Differences [ 0 /.notdef 97/a/b 99/.notdef] >> endobj 9 0 obj << /Type /Pages /Count 1 /Kids [4 0 R] >> endobj 42 0 obj << /Type /Catalog /Pages 9 0 R >> endobj 43 0 obj << /Producer (MiKTeX pdfTeX-1.30.6) /Creator (TeX) /CreationDate (D:20070616223621+02'00') /PTEX.Fullbanner (This is pdfTeX, Version 3.141592-1.30.6 (MiKTeX 2.5.2574)) >> endobj xref 0 44 0000000012 65535 f 0000000491 00000 n 0000006624 00000 n 0000012761 00000 n 0000000380 00000 n 0000000015 00000 n 0000023816 00000 n 0000021126 00000 n 0000023662 00000 n 0000024122 00000 n 0000001534 00000 n 0000019298 00000 n 0000000017 00000 f 0000001723 00000 n 0000004525 00000 n 0000001903 00000 n 0000017203 00000 n 0000000027 00000 f 0000002052 00000 n 0000002430 00000 n 0000002227 00000 n 0000021095 00000 n 0000002376 00000 n 0000019269 00000 n 0000002399 00000 n 0000007672 00000 n 0000014982 00000 n 0000000032 00000 f 0000007861 00000 n 0000010662 00000 n 0000008041 00000 n 0000012865 00000 n 0000000000 00000 f 0000008190 00000 n 0000008567 00000 n 0000008364 00000 n 0000017172 00000 n 0000008513 00000 n 0000014952 00000 n 0000008536 00000 n 0000024039 00000 n 0000024012 00000 n 0000024179 00000 n 0000024229 00000 n trailer << /Size 44 /Root 42 0 R /Info 43 0 R /ID [<0F60B1F6BDE78144F30D92F656696D2C> <0F60B1F6BDE78144F30D92F656696D2C>] >> startxref 24416 %%EOF dot2tex-2.9.0/docs/img/consistent.png0000666000000000000000000002161512316606077015665 0ustar 00000000000000PNG  IHDRR\O IDATx]k\gP[@"jZDKWYֻvzRmjev7xVk5=j5Em %(5) J0bLfd2^B$i8ш!R !R !R `z۷O81""b8h>OJJ z\.h4 EEErL>cƌd2ϫTjL6eeeeddL:ucǎ]׋D &l۶~XlZnii!QKKZ^ll۶-666;;[$z?`ܸq555l6PVFFZ]XXfO<:nܸZZ% ZM8. xpjii 8SդhAR!C~D*i0L,;-J)BxxNxKR Hz{C]%$mz/ _2;AN' 7 oAP(PϨqKj)~ڑ'mDu$Iҫ=c g֊&G{ ;й%GP(5[ZZЊwY+XJvyWrrv@'bxc"$)}} /8jev0lE 6#'hrvxgY.8m-QQydÚ+,༾1'bm@-8rh4bF8_sn'ܑG q'A G@rɓ'^sVh4x=H덼#n}A,>͛mF?|{N?/ǢmR0+pĈo&nUH$ڼyJ"ިU_8_H[;hhMowرׯDB^SSaR] _jzmK5g eNʿihMM J$9s8Íퟧx<2zZ5ꄥq!MnK[\m=33S& ***8݊wڕUJm t] j!4=vX#iYGք)ꉙ~ wfVҒ?mƘ\JbTǽ7 !}Z-mۅ3nw=RΝ;G+MMMH?tԨ4Wէ͝TrAÙ=e2YddQcN}8ENK i&V'MT]]c~Ky%>8Q~n(3#>b${.|qyy,n4&inHO422R&z'!c>H+xϚ5ز?$TͻI#mucyx$FU}UmիYYY$ 9Ƞ*=MoN~V%$L>Alvii1w=1R{%}X|tv3&ziiiFFmގVٳgOEEűc[20aT:w\S"E?2~pSO*1,44~<&2}QNMk dϛ7O4iֶ"*++,Ԓ@ qRc7thh*&""B,?.;oxXdP(O^zIQӌy' )w,ijR`Yii#KvYY >'f+qcBnr# 箤#OYzIxlսsykKٰ/8>8CrWBP{qzv\]5guNV⏷2+mjCUhVBᐧ3eeeAxB@3蒋/\HxYYK_Ӊb 08rTj!rᶙ2 * <(BBB! \.ZBХEuU3ʊ˗/+ 1l6")z9s dIթTf@6F_8NSSacccdd &MFT_RLMM=w\GG`kbXƍTSn`t"-x<{'AN8Pm4DuuuG@'^/_n󼹹Y"R֒H/9ͨyD*~ eˑW^fffxL&H~zPxm8PkjHGI%urU>k4ӧz~ҥ:n̙111' w/a&w}̙3@Zk?G 5X~U(ylQhg#A{#oA#}?ʮ~ 9 !W<3ϱD";l`={ 8~5ZdrR)HV\9l!߻w gʒ_/ lnEW T^^Ngj 8x'`dͥ3y;ɸ! xJp{: =w@L39[vv6M3s3ur afklH-P J׬YH@1g<T__N2n95xjN2nX," ǎcjmm-**0$ߧw9ט/PUUC΀=e2Sט/О={,D jZL`hˑK人A0u8qkYBC!)66Ӑ3$1 74QGȎbynraAH$ 2<[됞Cx"SJ.wƍat=z%r 7o\V9=b*3.3#}Ϟ=ŀ#⸿BT*e28:!P/#_:\G qqq> 9JgQvk*;w4ΝkmmD_@ E"QNNO[;^jU||<ǕJ/m6Lj4}Df].Ɏ=;gW Q~Qnq;vwdTz~Q~BOGK],2䅅.KD Nİ ASN`܄\Ѵ˵*2l/B‰8p3e0Saaa0yd ( W*ϟ)**B4RšqC&0,;;;0rz\^QQQ]]X."E& d\.733ӽ\"WA8Yþ"$9P(tTjj!R3ULt:]ߊ8ZK`p)<{[z 6JCoZM:UBbۦ b_.uo+ $q1 4ZmdHi\Pf?f꽭>h'۽$I^;_?V69FX nnTQK-ʈtB;A?mGKb+q]>/޽^JbB8@Ns[]ڵނZ05Ѵ:_64]oL5%Wl*N/)|yuLBCnśd(W%$a9^u,`~g(+gVn4 fvr6JUw " .w,;gm)/H\#n鋷M?qt]oZʂ5 ][1 sr\CSsLQ(T3{tyQ۟_.^e{wrNJɚd`eRv:dŝ)-7WHsţ7?^\;3foge X _o-mbъװl.;V4]?~'|)ęL1ZuH^7*ufl̛._ۼ7־hw yyyr&+iËܠܵ vѮomof8*a9%u]z9[)'=1Ksi!dkڰfG5ͳdJg.H̙cK HHbzyv yDt6n=&&K. [SJ*S]&=@6+N]tdSۭM}yFc ;D\\lkhTӒGzߥE͛뵻 j{H6ɾ!M@O˹UO|Ŀ땯Ƃ{Wj? MKp!Sy1;}= R<7n!Š}lP3ק[ _#^11m/iK*>E>9!sk{wg} %S,x* Ƅ<H '{-O~mˏ% )=e zO{X}V^\q%x"Jf3sd.ޘ;~O{O4EMrx~e,ko4֢BYyևYx<9v4z$oز˻+Rm ]>U;z-$IZ.~3w( oW Ő/2bF!C6oCjBύy|x{:hNi.T@u6{o.P jSG* gCnnQXxoHI|n9oB;['쏷Nn=ZH VSnCMp[F x,S_o}GZ<+[ Ɣ|}-|N\;9 ۟疛sm Iш&I1;pݰaCRRҒ%Kp߹s'&877QSj5kVii[o+-[R'I^jrr[}UkZBLh uxhu:bUv X M&us+M}b}:??)$%%Ã<66,(Y\nNNyyyVp8NA˗/+͝ϟ={yl6U 1y_juSSS]]5"!=+WLHH/~AI3Illرc_~唔 3!i4ӧFL&M*tΛ7OQEgf\~E2roŗϝ;ð'Op͛7D" ?hPTr*rS'HdeeI$ZJf0bCDDAx { 1Fo|^ǎA˗/j̴yRHIII8@Y\j~EYYY2LT:j'1ʕ+%KcC_8&&毐GDDO-24~ 98Rm* r0|{ʹaÆ{#}ʲ-\P" fuScvUymd"de)//_Fe rrRDz䉕/!3CV&!GV@"FUKxRC*(([J&l?DJ255uԦϟ?}RP)#-~ 9k^jc"@Fs?M&Siiiss /%@Żv̙?< ^#_sBaEE0/^P(@P ݻ҆-aph;v T5^/,,aL=qw#|gs%b i֣nΝfB|BR?ŋ$Ig;G’N`Nڵk|MWWWGGGQQ \.7<E/ ፪JzN-6AuDH^Sr@ _cC%gg ,q:Xqb_f\уw)6h?[v;+DDUv}|OSSucYu@U逜8N䃲\.FՒX;rR3ݶ$_Ku}Ty⨂CҶۄ8AvVE@;g;lxqE~E}zv pXs\[.޾/޹c~Nx;!bz{,Dmo;ZEީܕ͂uǛWeApZ$IKÂmrtc2F.X,xohya\b _CZz |y?o~R%@ӫ>}=Woٯd߻!^k09;y^;wtb綯#Oi;qi_X=B={***2X81RIϢ?zT8BTG?CFOvуN{p mQ^l檘6+{SYvv gwx<ҡp%0L4ũou;Qy߰SZoBHIDATͬ\(zvoe+qm{p"CxmfJ!}x^*xd(`%Lk鷿6ڀ7  N;sJn7{OGE%{f4(@nё8G-CVhݝP-J bR~bꜬ䄬5oZFX,F}ȉe $q\=0P!áBKˈ1fZ'%^ku x*3b֫ZVp Cz\.}}l6 :u*JR`0T*丏~ꩧ:lETJҊ rL'Mj]v {d)A=ӆJ PF :EXcs ##@4Ԅ"rqG㍋0>ˇ =4"8Aȃ<($:sK+&wyh'ZCwIEGҮhMI<˂䧐h}UT)Wď|1i؝23ЖMq5 dGF<̌#Tu_5\:2 /s2)\GȌt:A}jol>7LUCcFFHa ];ݮt8 gLo07*nj^%6:Ǟ<LJoٻ`4jF3IJ?pS/tjfkpI˿GOsHB{C< WMI9႐; j߆?TDpIENDB`dot2tex-2.9.0/docs/img/dot2texiex1.pdf0000666000000000000000000015772212316606077015652 0ustar 00000000000000%PDF-1.6 % 4 0 obj <> endobj xref 4 44 0000000016 00000 n 0000001385 00000 n 0000001444 00000 n 0000001645 00000 n 0000001790 00000 n 0000002394 00000 n 0000002983 00000 n 0000003749 00000 n 0000004270 00000 n 0000004934 00000 n 0000005774 00000 n 0000006601 00000 n 0000007354 00000 n 0000007499 00000 n 0000007644 00000 n 0000007786 00000 n 0000007930 00000 n 0000008074 00000 n 0000008647 00000 n 0000008822 00000 n 0000009396 00000 n 0000009571 00000 n 0000010144 00000 n 0000010319 00000 n 0000018559 00000 n 0000018851 00000 n 0000019104 00000 n 0000019459 00000 n 0000031030 00000 n 0000031496 00000 n 0000031827 00000 n 0000032399 00000 n 0000035004 00000 n 0000035206 00000 n 0000035269 00000 n 0000035380 00000 n 0000049639 00000 n 0000050022 00000 n 0000050400 00000 n 0000050831 00000 n 0000053212 00000 n 0000053403 00000 n 0000053494 00000 n 0000001176 00000 n trailer <<7C2AD5BE8BBC5E4987CD4999D62DFA98>]>> startxref 0 %%EOF 47 0 obj<>stream xb``d``3f faXр$ |L N|\dLs h*  X:ct! y00.w`f=0 CwiF `= a endstream endobj 5 0 obj<> endobj 6 0 obj<> endobj 7 0 obj<>/Font<>/ProcSet[/PDF/Text]>> endobj 8 0 obj<>stream HTM[1 _crx^Kdw+=,e-=?K$-,1HMs Ck)gzLI?\ιՐe{!eS/% 5X>~F$=z9q:1 ,]tw-'.l'XS U`03I R#bs VHN4DTS+S'i#*]/:T@bW*UXJ>lR/&8vĽWPD2;1<piD[l$@$F8 c M,f!뎍7YZc/q>>Wa6;h7uDaژ'sr+Cg+:%hg 9)q1tk Ǚ<̶_3\]1/:&ˬeF) **=ov2EF"ي짬u\՞:(f CW%e_'nCtQq/ endstream endobj 9 0 obj<>stream HT;@ +\B9C;@(؂`OvaY$kPo|$D @ ,`!@H(0KΗ3l/C<^UXPM%@ywZ3s׷_N+dHʉQRӞ"?nqӴ1z mfĎSk'E/zRè \gX&ܝR lr^zxϽxp./W;v{z@y]-w~08_¸&!a\Y6a7 ^n4ma8¨r]I*d+FSY[y|1UקC5`Du~h뀛6>>&6 k >NXA#. ktS3S-va#péHF(X Z? =Pv!,Q~4N#u_k}{PR!!u2ȽWe/% endstream endobj 10 0 obj<>stream HTMo0+F9Rp[Jm*U4٥Y`I%d*7̳e9FK(Fp +ȉ2 hk?1L'R#* +$xkJΕ4H $$yk*|BC{*ŃWD(8Ehε7Hn jjXT3i@tcl6v]N;݆'/ X! B&P&o>i0+BHAPrf"mvFӺ+jѴeL-G[)o^MLl^?+rz89<:;м^t!#ԑ0'N{>%njTpﶇfzqiǸg䆸4&Ƿ+3ӻbJ@2(|cJ$1| PCD@&[y gxs[rJ2{^i0Ǽ.E^|Tt endstream endobj 11 0 obj<>stream HT;nA 6 vl4J7!g5 a@hWX<7-ɎDmdEd,"D;"IbU2$E eRj (g_Q݂b_Ip ߰{jpkv}_2n?OyUX~s~ϡ[SӠغuh@G*jܡU9llƼMEP,ToNUJ8 &6 wݝCtO$o:q}9ãWn%)5o,- $g+_C&X&5Oia&Oi|k[匿;v=$벍+/T,c:Cf=^aZiهt.ͼ_H, endstream endobj 12 0 obj<>stream HTr1 W",Ns*\ ;ܒ[rR0mA­eBdiܕzgv6FC_rx†Q_ >vm߰:>~tNcƊ:S9k #}xvݵ>* ?0v[?HRovg:6ZgIpBDxY@9NXe,9VB]ڋ+p +S+R^ Doo /) endstream endobj 13 0 obj<>stream H>/sJWa\ȹJRcTʄ5h0z*c5aq=<݇2öDHDVRƒ2Tɯ/pФ`StkccIrq)p7ڹA5,TrCEnV@| žRQ+7Y"UtE3a 戝&E:-Bo@WZݏޚ Q9R'oW(6KdW(B| = Lu 3ܧi ^{jᾹ#7̚3Mmd Ѝmj. ɸOz5+Ҕjͯx]p{xl[ȓG}3Y1j!~bZx`aFÚYWp:X}4 GD1iXr v'x kG[ 1j$@j q !2璠;UƽnGFSGwu]P8l;OAm} @Dy 0R2 endstream endobj 14 0 obj<>stream HT\1 ˧ U`c%8p |R@HnJ3SEjq~׏x};? 1HR ^hS8wΩPQvY`XO%UEL>Sȡ[e8gHtO9yuo0q)h9BފzF! %j*fΧH4I:Z;RiDDzⱧӗVFz $YHaC.&OĢeւBXnԖ<ҁ#vx._况JED$x(,'s.XUuU5*?z0Q*kAN *uDxM)Amy+]aVϾJ%)*Z}8T801~*sqB qG\G p۶QWbթw%Ӻ n'8y!8-i_^&2}\SzьXv(e AJHMd[jNc &Z`;iBX`3Ӯ%ϛ,b5 !o渜F vqbAѷPeX.\AL@BIa׌z :Yi7$qv#ZǶ١<gHZ=ӜzY{`.. =#֟i]H$:xA} tLtY(fû} 7+ޥALҏߑZ ;2S6޳qvcl_(?.Ha-[˅"˖'"- endstream endobj 15 0 obj<>stream HlSKoA W|G8d}E$n܀C TBTwƻ_SHUNƏnZ1 S/R)ZbZ<^[LזJ4l g#ٍo 7))sQùuT0"]8Z:i8EVyҺYT|+I!\dR{C p4γ\xŸ1M{Tnsp-i:nn՘^LeO}<1pٰ1XB8duk\Dk"T]5@MBb9&V+6Ճ7 3atEkxaxV*XR6D3UXxbɪÀܵ&4jFLǩ ʭwyTg9xn l?+"<˛Pާi@-HVZCjx&O.j4|}x2Ľ`؇ Nťx].ilhXhy@he\Ņ7'k[VnĂDaׅ 6_9O/>c><~_~{[ }&?.wG9~\Hv˫y;-NPie3ggQC$xxNZ~ 0)Q endstream endobj 16 0 obj<> endobj 17 0 obj<> endobj 18 0 obj<> endobj 19 0 obj<> endobj 20 0 obj<> endobj 21 0 obj<><><><>]/Bounds[9.00009 18.0002 25.0003]>>/Extend[true false]/Domain[0.0 50.0006]/ShadingType 3>>>>/ProcSet[/PDF]>> endobj 22 0 obj<>stream xP( endstream endobj 23 0 obj<><><><>]/Bounds[9.00009 18.0002 25.0003]>>/Extend[true false]/Domain[0.0 50.0006]/ShadingType 3>>>>/ProcSet[/PDF]>> endobj 24 0 obj<>stream xP( endstream endobj 25 0 obj<><><><>]/Bounds[9.00009 18.0002 25.0003]>>/Extend[true false]/Domain[0.0 50.0006]/ShadingType 3>>>>/ProcSet[/PDF]>> endobj 26 0 obj<>stream xP( endstream endobj 27 0 obj<>stream xe\TB!FJʁ;[R@RRABRR@yWsgw_aQQg3Bvl`v0?P\~ s&p; g(?X_r<\\8B$^-hlE03fPgv T' 5g@sk3g)HWߗ\N) $hy͡ 0!ť\`0%ۿ=Ju?p[{g#PnuTm pu6YY @ݡ*fV@ 8?HAG[NC*&v+of8Z898D߿  y&&@7 3cq 1$>@ #s7+@7l#%dwqD]Os# Ak>A&^ H7!%!^oB4MLYT~[7!5~?X ߄i9E@ kp@hj"ZoW@DhF0BDh@p_"DX+?aDXyg bD1"K4sqt9}!v޿OPw`qn&lZ+Y0YΌ lSj ZGw`^׹H')[uL$!.utVrtE{G3ߏF_g橼\AsmՑJi3rҨ:s$C[ zϲ|pyr[poj>e|-쁷{7zߠ4r%W1۪;SL<:c~ZuRLv23r9^<ȶBMF+c]+т9 +y釦pOoo>Sq5/28CcB$U5Q9HՄ[tЪɮ5-$-B%n<)`5# ?IqX G3Vhz (yoOqpŔ.rp*ZɆIg ?2*4#ϳ-8Wn91{XÖBO~N Pj%~n`i>c!w.=UlWR#ӝO ĩN"&YOmYvCZcF ͧZJ39K^ 2W}x9q*dO8\(Ҋwp*c^$KL5$HlubCMmxwxlRA^݂ԖJ'6fm@ ?YeCגAo(yA){[_4|y=cn30۪PsFwݭؘMݶ۶Hz!pdN1MD;:^rfE Ꙟb)<IڕJ0n4(JR)?'At<"4C7&Zkt!+Mexrcz9 `Kұ=Jr1OvKŁP(ĪW'>QP q?㿞B%O*8T-zOH)-N-}^kwM >ZudK}b*l|vc]SgzcP-EvR7wTpCH*6V9gSrrt(j)!6R"PsK"Zqʢ09Ev3)!dx♟RG_h;׆]p:'&}Tfͥɺ?{eהܒ񹧔އ.ߪmm\{Wv[cMOGW?Ƨj ~0Oh?dyos0mx~S;c*{ИeN(?Ы3P2ӥ䪹u;Ӛ_$]a^,_fXI,=޻PE˔.zµx< _:oӢGwk_G!'%m僢?"?!I_tt^n\e|1"SzGܷ3.t'7HD}e ÞSTjj_|Q1d˃bcM W^D,R/ G8#nGsvf%ӃGJo):- n5cO^S86z)p|Z*̰ Kݡp_}OӖ:sZ1:-v'7:! >xSL54=b;o8W3j7(;]ѸT9A^fC8XMx/n(xtX9۠:0(̻n0M?ySd:`4:uWI&~F+K}۔nX|t?V4wݬ`ܥP/qU%2YTHD<)<ʚ&h7 龜W"0}jCF@:l2TQ^.ܚ'DԊVOildW.Yn44}9ڷgI t uH&D$:XU[TVсd^wZ+J;%3amD}'-|ٝaYqQEbԌ=oW7_74Ӈ4,ׯ\mE?ݜ='.? pmz}ܼ:[:laW{1܍LeվgJSV1^JsZڝu5r9$l'}ỉQ; iio~LiIwĠɵ"+or"!8GNz-llkSe#i)(K=6h7xi>^; 6dhI0TWרUƟ֭Ir#ZEPG.Z-R]Uհe=Ă$76*_/[ˈϋNʦKXGԐ7#K,5̧zM5Wj}cZC\ 8n x56'!X?䠼P$[!l&01uqG6nDE+;B|W x2HvzZW36B-[]o4wձ+kʒ0*A'夸Ώ{՞9l\w)MOKYGd2Sr.,΢q`sҤ§ӓg&c .@SžJ$'-_%I]Jݳ=nxStd{ RX:qa|>2慑`s[N4|ھ(ՓE۶] n2__ʍJT`)`;B>X_"p$V l|b]0ie;&0_=GtDopdq=7( cg-wy;!^61gZXzɣ|iuA3lE-Or--h@7 +Xj8>9]xz_5P5,@`tbT̀cP6T[c1*l|@ꣽ ~ 9`_)+)&S9,$ s[YX -=-6$~M8]=-]8c[se{~pLWn߽H+GRۦV?}1EEYO~iIT}YVA Iw `^+Ș]Ξ5ٵ4UiiD?u?6f|^sY{BKP%& Slm𭴲mN^5Pee`X3~U<#"BEȿ̺>/F߇/(oDm$+w@/ɖ59nEq>*dyKڂ̂B1pSdp3R1)ssg7 T2L}~M0pOֱڔ˰ Nr~W{*A1sF)6 >e`~JDb~d6楐^y\RVNetfemj_qr|\Jrup3d&XB^[ :g=V7jҧTzJ>iv mͲ^8́LM$1q/m4L4%D kNY0ڎd*}X$oaGMy> }%!.+? ymL^d=ᴹ(;/1st~m(jKJ i-jS摒z(x4QgRxh;.Lu0&3G3asLVBSi'#j=4kWWt-=}UNӻ: *ӧ:uEpB& R:T|bTa㾬38%gT5VK\لܴ!'/ ķAg)rsn"Or. x}̉It6V ֞@Ύ̐ESy2#x9*ףhI -B2pC@~М ~+o ZѺvZ2:}Fڈ'-lqqbK*x.i^*h.˲5WJ|\jb d>QywǠGy[Z\ &/XjD=>@0!-jpEFu) 7|i3lB]/hF|k'a7A^$ oR+*!qLٌM}|R֢v cӝOB ml%- C{B}w7*e]8euEٝH/xzo c_9TGeEuK2C~d$MvMX*:a?{_uۧC1Nxw \˖4+ݸ)K/=5|FDZ<]X'ұVas%ap_mMn!2Ɉa91D܋Ld}HRj/F:@;]xn 2pCwK̔(p FԧI[evjxI:4#HY8q|LO1[r)P*ԏ@Z^8;6rۮ]pޡ `^]KR~ƂSKyUjdd١ ߱35l mIb;u ~t.|h/FKf2yG)/T?-^Ŗw> Qc1gA,'5{ņ:A1'Zե=iY-}-8䒠2c/#/Zޏ^݄r9_(<$iNX5*S8LQ69v3ˉ8<`r[ӌN^βWQ~h&5o UlO{M`Y{)ٳ#{(ٙ[n,PX1f}yt0ʬX٧>:Ia&|d :Hp3|>`Nb6|_v`}U.ZLSY7NQq!C>QmÖ 䖳7!cofbX2h3B/Kk*F>,?RfY+);F} L>jj0H a # xU-jw +Is=o}mgbb]lt"4.DDw1'NJbN]~dQ0KSU ' Si13;Keu_9lT7hgV?' &p[7(E endstream endobj 28 0 obj<> endobj 29 0 obj[313 0 0 563 563 563 563 563 563 563 563 0 0 0 0 0 0 0 0 850 0 813 0 738 0 884 0 419 0 0 0 0 0 845 769 0 839 0 782 865 0 0 0 0 0 0 0 0 0 0 0 547 0 500 625 513 344 563 625 313 0 594 313 938 625 563 625 594 459 444 438 625 594 813 594 594] endobj 30 0 obj<> endobj 31 0 obj<>stream xUX֮qNpw/V]ݡXw)Z܋+Rh˟[Ү} 3GxTdr8;Y98_$89l(n@s0I | y Z `d+ tY;@GHKs%a;84;@tZpr@`'y'kg?d+-y! d@LZ9;9(*ΐj@;_Z7w93 t(;[ݜ;Ts@+ʃ@N6@?$ h[ne{to*Rߋj '˿7sfH{@CH9!W1i'Kg+ `fy| 70;3'kg7& `,;;Cz8VE~  3S 5w:9P9W0onb t-]l[ݜ 3N3/:/> G5H]兴 gHYw#a>HqoRa|6no|&Hu, ۗ7C&H-# 9~$ʿI2 op3c";V$1Hi!RBz6fd9hGqSj`w-\J}-4.y̹)/!6K"gHd+Z11"So6MͶ^-d q!%IAwcJt UXաr\җb٪@P W/d䟱 '@!րQ},Uk)R*?1 *S%}Ʈ>LFzy-WyKAC/9~Ok {C;5Kzʹb؊aV)&}PON My,[>'/d.W KNxdn(BX߫{n&P ΙD.3 &`K#ZWQޛ#,pa.bqEtMư:(^̽D :cpfVX;|]ϼw(_d`msVNX;Lk,8=mux'B3{#Z(7F^Z^UUrtӮ"}SLfpe%C})g<ͮ3UzI؆֐Gr+F;eMCq,gf 3*dcfnhH 0<ȵ>Z~ކV)}L9hlT!a$Ε2liY XٮP^RճA哉an4BהN5PEwQ9wz((ypj!Ühbð^zR52f 2_JDFZmMoykE0Tsmln]n]kʁ|1j^s|%Y2QY?B ߺ,{bL$1Wq=6[a[`֋M8fY %%x&Zt3`1T= &CF>LO4jo-ޗM}rZ5S ~3УgLLο<ӛ*Cu]:69ф؋p(dUV~TSߴIމ2_f$|iGݞRJo@=).-8L'qw1ͦK]?ͥEWcXՒrQ(LbXz--MBo=${9 Ìbr:D+ռߟrUdz_#fx|`uy>Ơ1O*6_ ~_jU3\c Qsr WLIt &H~ hjQk:eȟ;X;\7wr{$(PTY邓ɀ5^.c-./*7eH+ƾ%h+EQo)SV!zS)7Oz'i> ֒׉:<~y^ nϒEI U܋!17} |L}:>)\Rہ6;&Wɗ9 !s/ۀ0=UoFˀj᧗ W= '>۴ΔϪv+/65f|n\& b<#5TK2t":Dv<$:CI=17-z / }"8\xlA[ˎ^~,ӢoFuA*e/Ύn[ǭJf|vt}4}EM) 5%-@\O?Sm-QeMtŃ81dsْ Ht҇{,achHG:Ι2s ޏ}k<" x0$c'm?P_I|DҬ_}he 2  `M`+Q \E J}}cd|Dl1Wj%\F)awPFe^3`r݄!\˸i{zqnawǫ'\k;tM#66auaj{=S9DWr#EO[pwC|[O"D|rԥAsORԿ*7vtx2+32kM9FJxjo'Ȃfpۂ$#S#.BFpF%J,G[,+ _Cţ-GEmd]+/%jIʣE^8V.8vsON^<#785!i!sMC xϻ+xp0KH(]Nj..<˧O_Ӱ,jÍˎ9YoDEwoqO%'a$Ed/ɚ;^AP!_֛>1ct~8bն%`k!}"v43FqXga'j E0j_*htRf)s^"n m WV9<9T&`2WU\{AhS[(xvMegna{ch_ yG !d%*L9;`+y-J̫S#jزdSTMBV}s1zc) jbco1*p1(?c5)!6>PѾ`ID)0zIh2ɯ~5m0tAü.}Ik)n-D=.1qkƇ ; pdz"G_CgR){QaHTƢݕ5f{:ۍLO\G4w)7=sȹR.u_1tm^FU p#bmup'Vx}z%5q6qn;E 62k0 mԥR<U w_l#M]6+5ClP817,qM7̯&!ڇgj>|ܿȰ[ӪuLvu"O kGMM})UmA.hG!GUh$IcXh+"3 ^z T{ =h(<2%/Ohy"I)3qrq~׉OcXcm/.T \̸$}!or  /!0h?C) 7p~x%@ _) zĪГpupBo;y+0OV[A| ,aP1x2.s)2J YIbN;|$7x]&+O`Xi*_3nJ1O!8ںEnj7zhzfЍ o\<8 ~" ]}MZG"j=&cU eԛfַ4JW^cޗoWt J9re? =ibׯLPo(SqzцɑV%R;,);@Une?c5.1 C4a2KbIoA)kZxO;;F#3Ffꨊ2 | Ѧ{&\7迠H1f[qSS`vJw챒ɽ_$0KEo2HH[j ɳ:MWveєࠟ _l}"RS @"8X!_'Y+B%D"|},:R.~N>.z{ײ*qM{˹,&! 7mÊ6x:R#RPp[8QH(vr,nOnMOlK{վe88?Fj j9_C<2MqVvO^9L"e ^jb9ԌE-SvX^b8{; Rvd;Y Ja Meu]oř,%~@˭imF ul^`)0k4?gqciɾ7̗|tM\D+d* ی?z"TSZDiĈtڢ`R8aw\KlPǰh ʶK88vFߋӝu&Ɋ9jV ۛ*E5[6~uu_rdȵޗk`DLaZ4{5ΥUD3њj+F,o߽n(hcf! \W*"aݞq,+ f]dm>tcP% ^A6L(X",* ;6YxS9Tfl,kDTkX|Mχ,}0 H$Qw ˝6_mAI@m>Vwơ"'T,V[D[fKNsi1y9mkS3SVԟIoֺ XRsi$oMKvݧ  =6nu{G#B{~K4FGSGŝP~N zn U(J| 7n93K)Do,ɿwgN<02"IW\$K|^6p ݰnl8*Ho0GF|18m0YFxn(kQ7BҶkMX~JCMR] bG ݹ}Uxלb5:Y`A1[ 棂|"HާdN/5lF3 Y&>NBVMxf];+qtptӾg~D~g@}*xq9B`"ljNDFiS0wΕneZ7ep, 2.=nE~9w<ҁH<=:&@V V6>𑫒:6]7KǸkomWK$bIF{֚rUk| 6{6bB+LO mWz-pgsjJߍڗtǏJ~=sve7'B鐰.aZۯٲ(:Kagd'KA9ķt ׃o5CLn(܄pvFEwu.W`q~aSz-GNcFt=OJFe 7z(  ]e&~T4@ReAӫ!d:y9TI)#~zE]>nEm}{1 ٤.-]nZؗ2ub?La ׄ0f:TXQ5Da^.Y|Fi:ȃo+x@&+QTwK$s^sSFԡBߙz9@i)R_R۵SQԜ#P%~g'T`w zқNu6:>ߗMs{T\An|X7}qR{x$a3aupo$ ى4?WhыX0U h'Ea3oHx+_:!zCf 5ʕ17νT.s֒Y:dc8Fxfh@ SWzLԫbKW h =Qv%o}r'5B iYb" u#RbV 8mM3%sgv"FWogk;A{>ˎ. PX2pM (vdU!(}[֖|:Z Of/*cNk[QUmsqSd+4o@4ޛ9Kg\\QiD89X|vXr p#uzo&g0mQm=3$\&)߂ ׈6N9T ^#z ;pwKC=񗿊 ZL,RIZ㊹~qy0哖т^ȃΒ;efjՌsUjPytգ8QV-̝|!^(—v12.6]@[FW+2Bp_cᒛj ,s"Gʍ׽)Nst͜";@e\vW T ֻ=y_x0:]t4Ж:(Àyk$;8El$r)?Z% C2}t4m}#O3sgdϾDuzմխmQY .jFå3+6kat'J-x% R1b[ -Ȟ K0~?*@Άڱ(C9BY e^?~PG8hH6zR|dtpX|]ZIH᣺>3ښIE?ZpNNx~4T\lc_7֞^)ldQ';^ƇZ V^]Qo IoZ 0Om-`1[!ezhMY5E:-y%rOASQ \TrJeo=Uz.\J1~O? MC}u戜f\ OzY3&ZMXˠ:2!|+q &$(@P@)(P>kT4>DK8)ړ@;L"YDLJBcMyEVj9Wo[A*'To$̅P,`f ճ0?aNy=p t,g1SS{騽_I8cb-p…Vk f" 4fa=pis~"yh>}@6%J%eW^Cdy_41ΕOv UʮJ: ]w?tb{%뽥gk4jF$v[rh& }P&8* }kMB o:I:^ϮohնbUhi9:bl$Mf6B@D6R}7XJ{7OO6qtefAjƶ9-nkoe}>Vf5859l#W۸}L.$Mʴ0Bf2zI;ےdFg VvOGݼ_s]REVcAF\6kh =TCʝ=ɩ '" hf?% endstream endobj 32 0 obj<> endobj 33 0 obj[525 525 0 0 525 0 525 525 525 0 0 525 525 525 0 525 525 525 525 525 525 0 0 525 525 0 525 525 525 525 0 0 525 525 525 525 0 525 525 525 0 0 0 525 0 525 0 0 0 0 0 525 525 0 0 0 0 0 525 525 525 0 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525] endobj 34 0 obj<> endobj 35 0 obj<>stream xR{<%TMʝ1Enʥ;yøΊE,>SC()HúD%!eΞi<9y>w `2MLtq  |G 0 HF!& yz%-.` R!< Xh^/#ga<m@J  @xzBdVK2tЄJt (qB*Lbд9@NFoH$k=gF|!u/R+RJ/Ѭ@mՒ#Ax#' _(  X8?̓d·!8cێt6KXDctKQ_1g6T(@"Q!M+S2&@dspT* BPD&AɫAi+g$a"4a2Encm$I b{QQM"@JhqU hmO QGhN+ ta&P 8 !&@0#`ڸpR^nc;5M/ӸI)*#Վe9rkR?4fnL'rJ9.X1~_e(p*xus|r5_j΍u4!>uN4RHS^veyFjD/`7ZfVoSo8O+Me$[+GҞ %0n~GFæ,ۚeЄQ}*f7Fޫ U-RZ|\),sB-Z{+Љ7L >N sĔʯsb¹}R3%^,!бo~w{Qx _MNjvhep-aYHH.ڴR8jkwfB& sJ~&2%٥aA7mަGy[]ޛbE,^Ú\bNi<9Q`yD_dZS`Zp#N{H'޴*s7%,6OKi'vT{Ÿ^ǽ"}͞?dBBH/[6T8[ˆ3GM_1e<+IY7 z q%9m '"+> ßbv uDeF$69P nKr;R62,3Nf%_I %ciA#%-qY{לj>{]:_pNs\Glulnc_'k4/Ӆ<۞\5dnNV$RlըC(õuMwN=AцfWtTٱXn"FqYRI)7.,KU+1IJK~(n EB~@{{_88pͅaҨdXL¾)޵kn+zR=VJtYdyY#7oQ&/!u._Ljyeeɾ!st7qHչ惣JXN`x~{z{$rt`TW~}HfVȨ6&PL ?bwP L$juW98ɗrq k%FL蓏feIJ(o-O@a%L+z*uUzV<-Fo $% .v!CBA\S:/ĔVM5{$$9 1G/sx4-ZjepJl~%;Bxkδ}jJ$i6>lDe",uQN[:`Txb˙%w쯼>}srPyRMXMlPn*FNښ}ݿ\I;P/1h>|Lߨ} IR}"@&Vƣo_!pLpмki'<{K3RwhSy7)n-*i%!pS *uəE}.I=ydΉju.t|i.[ñ*xW.7g5(c6EOwÄ)ku:jp}iݲDT #j-ۍpNRU _NVnœPgXlA7вp§I6ԗM?_< ZGnvZn8}nvzSw~OI J}qTğ/ endstream endobj 36 0 obj<> endobj 37 0 obj[569 569 569 569 569 0 0 0 0 0 0 0 0 0 0 0 843] endobj 38 0 obj<> endobj 39 0 obj<>stream xeT\  i\C`C.<[%}ޝ}>ݣլTZkQ*}1%AvYYxb ,FffQJJ1G%N `aH/;/+%@ dhin lj b t41(9[m{@&@gF @'* 4eD`aZ8vLH3m6u%WX_2i` ;) IkCo.bchd4[6_ [{g#@d toW-࿵)M-]l{UD`Ihllb03q3oK_kFv1w^#?WKdjig`9:y L/)t fb9C@(̙e7?`2:ٙ8 `7r͜XY#3;dkk v t1@v08۟up2g G_TrqcK׿dsriKfhR~qꆚ#* ~X5U+ͤMuSu_褴0 [pp&\:*Z/ygR"\]Sx3gBم"PE  '].ɏb%9/FSVŊGw #s ӓ:K_^(E8C_ħ rJWJ aNN\*#qhchU4u(.JU4ɚjIZHoN@{$ P^](F^l)2^[=]EE`ͨ'k)4Sd xsL B4|Ϋq&=bCL| r1y%ɧIEO@ Ty* 4/\2*\Y_ \t{a?f;4/_(e]xw Ď'E6}ɋuô00ah|pk %7ڱΎ v'L¯! ?QliR}Cg 5c>vmfn9cRj4K9=-H_{a5H31 my2IO]i޸kTI?4Z&r+Cp3}!)`$rZcJEqjU!E\07. XO"; pɴ7Z@ ]f{9]gAp髪`Ɇu+mڠ_ UXE=OZ<4G|pu~O)R7 =SfK0eZjlk4 9J0@FHfsSj6!j'kr<7wj=y*W7*6VZ8:[eeI̎AJنGQ{ 6k%z+ý%`lAzp]*dxĴ2L#>@M2i@RB)MbqGADgmFILLv!SSKlmKsY'3t1CBF,Z f}2 E/b|(Z] f/D'j&ʙ@&hi1VpXx7j(J -M 68cWK+e{r.o ~32 l9Pn̋NS7ho&˷K[G*n S/泐4/e^~t7|m>blu3v+Kih>&+pưZPAl ƵI3Ar>E:oϑ2PJ_9n4׺e HQw@#:M]E;lSbދj*/A$MME {/+q?Nw DKpZý$˔m "?b_okĥWQҗL߶[jS}#o9dxBv=JT)+o&X}<9 Bz TS آC;#yEs{`lQ,O~^*&Ή}mn*;%N\ԓBeJR έh>~O^{ ChI;=(,vmTeO啍rv'OmcxBEr/0L]k HfmjW8rO.k:++PC*CgV % /#iq}.__NwN 8PEqZǧ`O=FrO;9*QNi4/\mo ϙ %ʯ;]8.j )AmA薇0GhF;cP?nN(˜8xj8kɻql+ tK. J}~~:_((lv|0Wi߫_ޒ3&܌X$nu}"BOsڐ[=- d<3ݏ )w@FQ'}) /}k Kf.}$uwxPU'&cP^NH1]Qx?-4ߣi,L]i.`AjD҆Bּ˷m-)I8Oa 2^O('J'̌H/Іqu(`:_h&}׼9އnCL>m ^5v|:jhiG |o.civ^6-.@ƤfVȼWjRg$,o6 n̆4Jwy,8PZI#j_ڽiƼ5}4ر} ک{h[O.Ӽ q_pG< /T["QiRU jAAAwc?FUϔ'-kI)K{P0פ3 dOP8XHkҠ9˭ hd?-zC0ڙ49trԚy{KV7wxeX8Oޯxweqw͜aԕ,.5ɵ P6~ݗOXU%:yWT0.u<,.Oc˳+Cm]b]R BR|n Gמ388~/M:|p3X z$ VvrB+.bꆻ^tMc \H_S ;kzQX٬x\_Ow%{.km*!s?vb5Uأ36A\mqj}4ʙK^o:*w-.B%.R5](E>Ć`"$}&KQ R]x.ZL>՗n$ IVd^\)IZ\ɻ6z<݃Gx{A Z~l'|_INZlx 79s>/Bme]}"(ݥmQ-J#Ks`grԀXJR,mP1UY7-d]3lX,X7舣e55 )~*A&kU_s_ľXVH=[;(^VeqRUH٨DLч>x{kA#|H8B}?߭#?E^p3O[rrz쓲,ݛ^79שׂvHH٫޼ldKeasR:0%9 ]oKd¥9,wgDw)s5*q VX}nvŃ(|ꤧW$En,+O XO9 Tycnk =mS7Y$.2U^GzHk4cԄ#GĥGox߅B67dDDƺ{\PGʿ(|QuCHq!Iyãmj& {a8nױG l1—:Ǐ PNyf,^w1K[x1coTl?~`g>k+0{SH [2[)m{>ã˴1Ţ m0pqC63e۪^rIz&LAO2 _YR3r^N16-u /eehFfc43mƵyQ͆ ~fv9/Nhf Peݜ pg+uC`)~rbxS[{C uQ̘%OEJ`EIJCreqo%J4[t vl OQC~$zav5KÃZ:?7*~[+GD4%93Sǡo4S<(]|燎BkR}P&0)jDyIhs4%v(N, Ad;%#ZKmƄ`t.Eߛh"v+Zia~ӢtNkV!E j𚗍a!]NǘP1L>[cO^^k,9. bZ7kg&QY.o3W{3x`߾r!צqF3+qiNDq h.Re'S)V_S*U2J.sp2 b]-pѾ`W f)~ F KQ„ַxB ۘ麴 HwD;dh?O૞a)>Yzcq^HuW5G5kC/>AQKA^)|w!P%|7>}<үX,{toNj.9V\f[횼E#J~p-d G4+ˮI=v_:-90y'ޜ4>kЫQʻ/ixs-rW#hëV[J N&ڒo<уn$ܔ4:W#JSWլ+79"z {S*Q8xC1`SNtKD.4$OT{c@.4%L⚤%-GW3ݧ,б!eM!Kn̴( M!e[DyJVWI1tI 2H&\E8%)yI. >ʉlS0w!-uhHiH b4W't'= @n: ?@?bOv#!3v~ CSGe&&= _]PK jN[m)5rtVÈA41Zb2|->^"p)Լ-X,Fޘʧ{:2v/¨:2zsg- /ճ%eh;n&3G֤&TCL/hl!Nr",@$*_UoE1ުkV1~Gt`+ 5I<@s=t"sklNKяh:HbjI"HH!sY >RN?/} <7[TL~^`XNX?Q.㲇:.tG$h=#-Y9&(K 픵~ϭ{v}9/ɼ}׃k@> vwe'SFU"kC4' MZ0{" -Hzul|)H=dcJVIro @Ͱx13G4Z))>ZT=5*TVmLݺft=l'/_ƽ9£SԻ۠SF`9)a:‚7rX~:cj4%ER(PVbK#݃n;9("ANdVk>S+?EªRtdkU~mlCůYD/qquHBw0>2R $P3Ih 1C=--&Y+yQTِ1CI/vK@6Of'1 lCn*R:++v)<6\..yqzتyS}fJ9k suʭpMzqJ֕8~Iӓh*oc5\3Xn{0 v[`Nry~qꫮwwjXǴLdՐ| ֪@'K&Dm|D#/PaW-V̍=PEWze 7iy3\ks PY;InAHhSO66K{ '_?E)Q1 \9>TLq<&Gv:WIfIbn[g(Tv;bK(/3eTD%KЉH8k`&&%u.-7bTAR803wo2z@DM52[oV$^놮)&c # G/fl*_)ۯA* =z $.܎ߋѠqjѻ[KGA2wCfSS;;Cj+96w#mϚFF- Y=_!?v507_&0O`^w0b$eiIV.$^JXw$=ADSҴR\qd3A'[Ϝv3=mJJK*:9"x^.8_|6KᴻQ[}`&?6`EO\|0 .2c\q (Kt(^Q8R{PxlH jY\wk\Y-p 5>6p&g7(ZT a&r ,{k2 rw]ބ\棸sf'Ry0٠l:|}o+.FQ|V?3ۊIRANB.{2}|}ήxRo"FIaւٺ2# =fM 5mdݭEUXYhBp93l򄟙:Dw>:sS8dHWGRV%< 5I4-A}yj g2υ#i8*ArӞX)߳ 9#oƁ4Mx@l!uai#Vpw1n96!Bj' ԛD͌8629Q) -e9y d$) _>o`w9>ǗlulPŊ1Y~+>KN-Fk'z?5b,s7ymLUR 4?L䐧ldUIGSgG%Uqm>̠;W-m YȔ-HBwnsGcvhH-~r"w vi)AB$fK_Q!2ͯ" U;lRO8LĦ{,[%V &Se +x9 wng:ܬ|P֋ + Yc˛*! ~َpVf$kѥGeu"Lû(qܺ!#'= E|/44bH ivzXкqRL ;Lr`~%\`qGoGC%,U*'Qjmw>fXitՇ`4 5C:)i..gB{_|"KXuURLsu;a@!s8Ƙ ="+K<PaE]@#?g W9AGϮHep[B+si8;Pv"X.5kFFvI7\dZ.ۺyp#̄,prYw \w4n 5t驫ncc VnRoKdc;Ei5c.ܛ9D8| Z쵃OGx#r@U7WeC[Y!e@t캋gěU<0>FlΉ8q8mشV9w4{iJvJBVc.V8dGR"¹$vO_C-PQ~Ej}5}8(z#>wTEIZ(8h4Z"[1"ЖHWyJk n&P;2qM<#9܉O˫\7 <^G%2ѧbs(/sKtmc[˳¶@įH6+kկ135S7Q{4ÀZq?B <[*fveXu,t/n,SdbW' H;Fj5hU=>aCPvo>Nna;@ n;FT*V^iV2O3FkG\ m89c2[d"Ds_~őQ֞^t"r4x<'x::u J)m8D/a`p}:j!زz+ P|uə4k" /ƀ^оx\R]&I>KNn{dkoŻsr8Wbثܐ~*DK_qH+ j&ːS}@>Hvs~uw5|hu{tז ՙZ5b!D|䡽S- ƛEG?;'IXGi)U"mjךHa1,7~$G] -Y!.]~l̖ $,<`.!Ŋ8IJ Hlrhu|T [tMG7o NtBjnZGl[n'c4rCԵQ'׻oͦ:/1=7Nyitzr"8 _hRDorIuTҲ²/:S屑e?'XsʮՈwKD" ufJ.~VJS5G+R#zKXsO+$/6v$2C8b%#Ho!)CBwBSFXi19Ꜯ}5 [u0Qsh]ӤbxG19I\J;wN G.gtDb֋e7zovgFKvs/Ac'lK}ߛQ(}MghHrÌ'Bw8IyQ) UM֏$Z7euS| Ƃ؏;SsCTLrR@ rg,q9]k l#D/ݒ:I,bL:k=4;Uvd}9~~= b׫jv~nᾼWz<>>8kD&cm]=*Z f{˽(>'qpQUEH9puu6pT׍!sӽVE0.:PxZڡ+aarqdc$ʇ} _|8\, ) 7Ig 11 m9ķi ;5 ڐyfMG*m,k;"64~U(̲X DjVl n'Fނ~ S\ĊW6m:lѽӡL3)%z;awf?´9 >&&<lE:v((J]b.qݓu{("|7 jN^|{?(=<1 _3-Il7~, K].N谐I;gm_RM_郿,b}p;F~{$Me m3"uyLEVߙbֻΦ]DVH*{?_q%-:Y 8:vMˣaI Jx5BV1~1A>_9^ ,byD Ҏ, Gfņgf(o>mĬSW_98 ":wn/St!)Ơ59G1 EzEoxs/ӏ0 ٕ gp;~t-vٜ+a, K|It_pħV ?fԢզgŖ1s )| `ΐ _:ZmG6TrMe6pW4yجW|D||zuGW6 נHf>2A\%S:jiyYbMWmN%kQf7c*VK|}톬wECmS6`yAj!lcuoրچr {CƱ0TWK.VХZ4D T%RWC)|Bʎq-K5aɂ| 7!JzJcN9,'%QH{9vno(VfCִԹp=.1La%;OĎ1sG=ex6v&Q~@)wc풡n` `bs> endobj 41 0 obj[583 556 556 0 0 0 0 0 0 0 0 0 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 389 389 0 0 278 0 278 0 500 500 500 500 500 500 500 500 0 0 278 0 0 778 0 0 0 750 0 722 764 681 653 785 750 361 514 778 625 917 750 778 681 0 736 556 722 750 750 1028 750 750 611 0 0 0 0 0 0 500 556 444 556 444 306 500 556 278 306 528 278 833 556 500 556 528 392 394 389 556 528 722 528 528 444] endobj 42 0 obj<> endobj 43 0 obj<>stream xRy<BJJ㐘̄,Yb2$[;yG,5:dd -%-2htԇ9N9y뾯羯  :p CH$g hi.S 8`[$ hs 80#$ |#6lfP)@pCA<9Tȍ6lX,ۍ(f`@} 90-2G* #$D$HGs$@_;DX)oKfdp\HCRwő@#k֙Ka16P 0hqF\j(@"8~U"oA.$( KO`C Q~irh ( SO$Af@ `@4gh*#r= zIors4N}jv3,Sϓd_ ,g xVs'͓{#VY|j]H bR8NgE˩YZ{l+r˙mX0UAs?6Ey>U5FGJNCsQ-h-:(\k''}5S$ɺB,akxV~#hs_:n; JnϷW+9"P_ZZlcM\bOBO҇B.7^SLe={W yx1]6k+I#g2 ] c%ٜ;6up:Pr`bc1Jۗ cx{ _ޱیݪŘ#ckF^Z['LvTTZ'ݍ 8H]KR={ZeNmq7ª1h.$&]7RB$P}MxjyiZ>8Tsdm閛쟀e=w2sf&w2wƲLA֮[&$:it}OuVZ!TUɓzڐkCZ!약n/ɕǵļi-͈ΎĸGSnK̥ _ +j&LV+6ߝPXAF _Eaˡ]G >;RN8a?r|JQfQD:@j`hȳVndkٺo\]dd}̝[ +WsXٓ]mݺ}+'Bq9VP>:J?MZo\gxʟȗ&C,Mk}k%t/)v@dP}& 夋dBF7f;NYtO-C@:c .EQN2vLƝmA2ɥYdm.P䂡EmrފYvb^sIm5W6yG]3u0qW5W&Z}=]Kh2?u7ȡ@lXۭ9c'5dw=}*>{\+Tfk/:Y 5x%w!(\rг_6t" VWUs7psO~yZbGYAS.kupϰR 8LQZ`t->rZyFЗ~tUϯ0XӉū54Ox{|]VŦ|١+k踲SM0sZac9Qn/+-LS;GRl)ٺŽoK7Xʋmt}9 r9iR]W-zjKZV^^"\,`l/ ySl|U ߧqR-\Δ][?ʯqo*9 n+LZ=fH|8Ȓ> endobj 45 0 obj[750 758 715 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 529] endobj 46 0 obj<> endobj 1 0 obj<> endobj 2 0 obj<>stream 2007-12-06T21:12:47+01:00 2007-12-06T21:10:57+01:00 2007-12-06T21:12:47+01:00 LaTeX with hyperref package application/pdf uuid:a4191be4-f38c-49a9-aedf-d918482d6aec uuid:40ca8aea-bdb9-41f9-b5cd-8938bca75b89 pdfeTeX-1.30.6 endstream endobj 3 0 obj<> endobj xref 0 4 0000000000 65535 f 0000053587 00000 n 0000053637 00000 n 0000057010 00000 n trailer <> startxref 116 %%EOF dot2tex-2.9.0/docs/img/dot2texiex1.png0000666000000000000000000001232012316606077015645 0ustar 00000000000000PNG  IHDR]0IDATx]}PSg ս~6ZNh'ؤ =̥-)wރkkXˉvKפk$^R4`5g;~$1[8ǩ19o_9O>y t  sA@悀 2t  sAH4[0)<ϩS:::[[[}?q<''gժUȻ ۭj|~GGT*h4޻iZTT*\.L;E&I$r&~'I8>;d.Aav=t:HG@b+JP?H$%V-])]AQTiii[[[FFF؋~FNFi (@Z(*,,pxSS2a6ʢD"9~!rb80k^?ӲGo'q՛K^ğ<0jZV Dwa#C*N_cK7_<9p A_ӽټpA}h~>۲x Ι3ghh p:f;.=)YknN^`k n5_[w8B3FFFiӦQGK o=ƹC~_}>?00N,\fA=M7e_߽VMkd2dw ]!ޑ2wʻ^fX ȝy׶楎%C(-Akk J S(?DӧOX]E]]T*H$QYM.kZȄvȻ܃T*ݻwoT'Drt2O:B޽q] /iӦ̸0N3Z.,h_|yl"#++nCYϸMќ?^ՆB IR4 p_QZIiXD"I߫.nѣv]P~R0DnNTnܸJʂeDN%0 04VOӴb!@M8teHRR__OQF ,ZD!Iw<(yf͚|F(c6׮]aX+#v0 #<@Ӵ.\.ߍtΈàiZVD"߂a-)Y.EQ%%%"XuՊ6#&kZe:͛7GXl*z'}]fsVVֺu4Mm,zn)j:SSSCQTbs7;v(**Zb4jKooT*9p@bs7v*--0@]<OKKVmll'$hZGCx())Q9TSe6A]Ye˳Jq޻xVrERaaX,޵kڌbb1MEwq8,d۷p ?YVs<ΚȻjsV[P(---Ȼ\h~u\b]\GqiS8= @BElV(R h4"]m3?8.V+:RiZZZqHpLN]-LvR8.!ڊ6j#Gyy 7H {bBObOo.Ij` d7#F ղ*|t{@QdF~gXݫ,!4Lb]|UO]n`b "A jd 2Ic$$1iNb.V ,ev$V[j:1jZ, @6$0=\Cq 9/DžBqGN%TP }BrJPZ@qq1zq Xm.40$&c9#TVV BJ6}HvvvAAEx<:D"(-- <8'#Na2ݼ:tJu3r1"J%:"Ÿ~ "wz@&8qm%Ž;ZmTf-Em3b)bal5OBa@oyGqU/9I077v bR؈f߿ro=SVVҲ?hAm<:2,dfQ\\X=s;wXBX9)>Z0ej>+V8wzQǫaҴ 6Ͷp1o\ɥ3Swd]vJr˖#3[k2rʴԌi;j?u2[ HryBde֬YNsxw*?a>VG,XX*zh EUUUwwwi;-^ʕ+cߑ2G{0>{T*E6F$F_yϻ<#]]]~n:flݗG?:F-~衇У1 $1R4PTF5;*n۶SSSB=јJ$ H F+U/@.Ge`0|$6mڔKUUV fx0֭C2n_#B]@x&$9I>ħ`; XA(-X,~8zl ZV^`0`T* j j2J%P'$n"I˽].1 #IIHs@4]XX(ɂ\P簃`$IZ `LRVY$Iǀ1_ ;ցrY"AJඕ#Ca?g$fҫ?nwQQQcccnn.⭓Қ Y#G8q 02/ ŪUBmTxsnذ-3X .˿oD2M8XDb&&,>%_u(`X#5>i kciڗwtty|̈8wΝSXuLjrrrc+ڌAղyD;`5%-ubm󲒰X-P,'dKBXmuuѣGv{]#Q3Xսo/֚ri3Eb`5ab6Z6#hڸqFV@r/V*I$Eer02Mm0:7pB9]kTLI䳖j+++٢@H͈S7ŭ/OW pr9H. i(`׳?V+J8lV8@jaGBo߾֦o޼Ϊ9SǪs5d€=B4pYp´AEBrCff` ݌qV8FBEB0gRܹsb8v3#wjjjg*qΝ )0LЅ xꫯ~ӧOǂI, "222LBx:;;ryz}}l+lFqUtj$ "].bta6qMjuR0aڇ1΁$I4;V+aj\Ub$?*0K}%c1S sLw7_;ZH@n.Qi֬Y 9#o"x̙׮]]((*V<&d0lw\x'?ve@bŁ;~{i٣θz%/ t5V+Xޖy0p8ϟܰVqJ\K^ʿl5=oϿ|(yyy===24qh5ݫHw,˞{Gk핚K`̙344,Nsq:f;.=)YknN^`U?Q0U †3|>?8/`IKK @ʦ3N F/tx7lUwߥZe``Ye…6-3[/~~[\;OZ|Ij ˟έp05e]&ɐe]/+_'V}OvjTi?ꌩc2qC" SEw̯?_ΞہS,0]Ri:rR޽{Too/ "HN'#ݻ/q|۶m2f A;c0 #++nw UUUϟjيB I iIR UϴGD*$R1x Ys 6466"ʒta0Ug&il M[#%Wn I1EQ5kp"aL|>\A 203QgIENDB`dot2tex-2.9.0/docs/img/dot2texiex2.pdf0000666000000000000000000006467212316606077015654 0ustar 00000000000000%PDF-1.6 % 4 0 obj <> endobj xref 4 28 0000000016 00000 n 0000001037 00000 n 0000001096 00000 n 0000001286 00000 n 0000001364 00000 n 0000001890 00000 n 0000002312 00000 n 0000002756 00000 n 0000003179 00000 n 0000003580 00000 n 0000003881 00000 n 0000004283 00000 n 0000004683 00000 n 0000004826 00000 n 0000004970 00000 n 0000005115 00000 n 0000009210 00000 n 0000009446 00000 n 0000009639 00000 n 0000009847 00000 n 0000018117 00000 n 0000018396 00000 n 0000018635 00000 n 0000018928 00000 n 0000022733 00000 n 0000022942 00000 n 0000023201 00000 n 0000000856 00000 n trailer <<5D6B316EB708DA4F960162CC746E9101>]>> startxref 0 %%EOF 31 0 obj<>stream xb``d`` Y8t4 JB1gQppb-P`䰐9[A*!;f6| endstream endobj 5 0 obj<> endobj 6 0 obj<> endobj 7 0 obj<>/ProcSet[/PDF/Text]>> endobj 8 0 obj<>stream H|S=oA W"pH$RCT B퍼YR*ݝ2-c/ wvc DxPtBnQ#!]K4J҇!/:ZV?74s$yXyY̮ACÙc+#NGZPVT5PϴSp6h\em&|yn!-ȠѶ endstream endobj 9 0 obj<>stream HS1n0 `(Z4Vtrd(ؒ°-ǣ|vGpPFꑈ9 '8Aè2 0X~=urh &`P{,mv̐1,1>lߦ:cV)FrpvT>2&wx>?j>Ś;ա,0[1IqbehnlQGlvJj9{h*XaۊfUUMvF+=ݘ0 4e.):)W2WQYKV4bL1^UZpȫ\&%ٞi.?rX\BmGf1WISt`U endstream endobj 10 0 obj<>stream HRn0  5ES[oE'M  &a'x ǀxD```>uHCJ3:`9FB:usT I] Ed?݁2`~(u~"fmSI!DCJqbtLq0i]_c ѱ艬-Aa``=:ufY/Kx$aJb8Q_M#RVI(fQYЪOZUژi>hF<0Q(JxE%ec?[?qrԝ5)#G԰:Q6thQ,hFfxWGQ5ԑ\~*V;*Woy endstream endobj 11 0 obj<>stream HSn0 !Hz)x+:hdh(X@ 0dg\*Ȟnn ׇ @)LGGT᥾ŠȫF cCٌn%% 83ex{xz|_K a(DJqϣNnj1b> B!աjK(z(BF1+?6`:!PX)RBdufɗMIIB5LFMڠVMnL $fd>&rs4/ zџTj\t'(e:Qic5l)ݰ80Մ endstream endobj 12 0 obj<>stream HRR@ +TBa{ C (p7H$@}]Ikop$la&Z1 DXbׇ=,10'H0cD@PrsOfW hĪQbCDCqIu:z/ù}뗼"9ifF!3# fP= P[rPj{˜a B6&u/H,Yw$AlIJ1tVeAtw.HxuݖI0&IfԱSV'^X"7rdSKi!izHzxOTJ endstream endobj 13 0 obj<>stream HԒˍ0 Dﮂ "Y"%is/NA#`C-5 ͡3FX*<``Gfa6D 0 U#표3(IU*KQ&یKt/MuFU0%ۻt+1ǵ&M14ϗ)5l &n2-Y/ &P 1$K:Bֳ.#$T5~'\w endstream endobj 14 0 obj<>stream HR=O@ WxL^ TdCLC~?4 jbCINlK_2dF1C=gpGpz 9{=T cPFEѦz$UNTIK=YcTΘnZ7Oi^[M [|Qf/"( JNR oe˔c! < r/ OZz|S}w7;85yzlYf kv22qܹ[.M! ]j5e0K`Km޼O3R0`" endstream endobj 15 0 obj<>stream HS;O0 +> endobj 17 0 obj<> endobj 18 0 obj<> endobj 19 0 obj<>stream xSiifH5򖝭ٯb]fX&dozk`i9;Af+Iy%9Κ*l_u⎼;fEZZsm bk$E-oyǩ_O?:3X/7Il/b,8o͕* xRȒ2g12u@anxլn˩D+۾3pB] Xqv.pk}^`+nR@M̖VUG9)BĽ}KUP9ݩWg\g L\Y_' 9*ᖚ<=g)uJM>n8-\qe+cLmTvpݘRc?7YM#;oh]<ťNI~6ÂWdl\LXpD&ܒj., .C1 a,MPl֩m>vSF%Jm=eS7$b}xLm;\M6eITw`c$0-s%".t0ra%qxWpwЮ|z'sCJs%KEigM}কٽ̸X-SLy !ۦg%1TF_mt%(x[c!;֘DGm7?ψ{l||RJboB*~D)/ezT+>*8*30 o˚ΝbNh(dVFө L:O T_BVPa Ᏽ RTKϪ VlM -M7jwIڝ|"{>,ܚ+PvVzB›5w*FOr ݄x#9)_9X Xjݭ]ǺºǸk <;vyޔ\fkNk6{2>VCI1R!z=9 |PHW𲉬_.coc Z *;sBW*_ԋoF(9Ɠ8g-ryF46A܄Zжc+__0gwFBs Opn%I FvHVc=CHpӓz$Z%ovt=ٿ!p`QąH&*1EUJ~޹3=ן)ĠP(2~ Bi]`qSQ$SÝ12Dc!)2.aB!x%ƠY0|;&KcI'`b3tOB(5(7X/M\ΔZaJLI2Ίg}1;/D <3JД˨stqT87:(iJ%jt﨨PMǹQ#*UCH8р΂Cb)Elת2rQ<Ƒr9vRXɫFwD܂zm6_6-[{#>c\!r5a>z1g#߸^. zN\ЎHXd(IGL]*I={a͗- mO0aNqXkh8 ˏ.kS1:qml QF7fg?n5>",l7*=qUkɯ1>vH^h\.=/Ӵ؈.ISy6 LUnԞVo>s*1JLєfF5q٬Iڡs40mWm?ru1Taf\ܱؗrUe[U}^`6cv =u?T׾DpO'/oJQ.Xs!1^XׯKcc ~HU])eÇuPS3Ws͡Yw{Y;BǷosb=/k:HN/+p.9;}Va};LC=sߣc|:Q5g`.%%_ϚNQv.^$y]<[AkaNɺtp)ZӒǖܒˍbEfMKo%4\!_`dS133՞ )Ȇ/@Rgs=߸jL gA#PMo fa S]" GXRyP,. Xvc٭+D%-o>~<`TM}lF<TCwXZ> endobj 21 0 obj[877 0 0 0 0 0 569 569 569 569 569 569 569 569 569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 508 0 0 0 0 0 323 0 0 0 0 631 569 0 0 0 453] endobj 22 0 obj<> endobj 23 0 obj<>stream xeT[N%i5-Xp'$@N.݃w7?g~͚Zg׻߳ϩZMG*a6ɀl)e N'$d ;6\v rN+k(A$>bcnP6Z`M h @,896P/K`?a W .0Sm2`&- % V ˸۫:%WaS{vpr eߩ:),l\{Tjjoc.hepqY@ͭ. G6e$5tTYӿLmZN7sfXw 6X{9a9 B h#^7'y 9G,dW`;"`;e^;9al `B~`U,mȀUq_1 ;@a9 6.R7KK|02 ]74%veoiK0Q? jkk+kaBN L?6Y+7{YR[h؅ K+raK yfBAM!e~҅HLpVq*Sg? *:3-Vdam!mQߓDsKv+ëL,CsӉ*pS/PY^Qoɷ|5Z(TϺ 2|2oB蹩4pҜxBqlCQ[N/n Q bq)5~2kl`>Wg4!-yTAl/RiQ0ecv]: nf"bBW7^{kvDՀcDh~!>f- ~oF8'ER ?4j''oW # .h68~f=߄vsr){4 1k1lիjSQZ>t/p%M~6%yZ1`x q٪B.R"BvsA]fKTP`Aˠ'ǘ0"; *NE to !I :\L2L.DŢ.9D)#YbHbG ;/e)2+"WCa>v*SE ri5qsEZ^iOGp|pb$)NwB7> M/qX]P4j;޳{o q~&;בz*D=X$[R*Sͩw)Tٌmj4| 4mXxKϣۑ-ADKrhND,DbF#;pUIU-}D8cEz Ns,c A7d=aǟ2J*$"}r+driB֨^k 2J#.{}M5 <e:2mv6^dr?{H]s[BT\[e,6g"(X^[XUKQ%lD<`papLINIʶմƳb<0[a]N-Fk=irNVV@;OsToDrk⧋ܓpQi)çUe H;;I戃~Co`s v*(.˙g?6;EY!^ybQ |UTe/;"s&>'2' =StI6ܔi}7iTu|+! #LJIQMk2߸\EOԽ=ǣ-snxTw>86\t%ʌ-fHUi uf٩M "Yp s5rQS ^Ӆ(:ʨUI}cc={vN)/@'Z(w['l1n1C$.*BҸ7v_-'ȩ\ɔr]D("hʍw#yĩbXꔈMV MZ~jSzUPW94sȋrRFKt7Px1h/ Hn;Ϛ>rxavJiϕf9rD,Q)jy[kj>| pS\I5kY~ ը\{D7b~*Xx^JP‘SI$d0 3&Ķ\tZƻk%Ƨi//(Li_f! ̘uKK5hkzs2GwFJ-20l(yPNvDmȁmվ&9?wFŜbF4_ݣ$:mD!Vpj7[{)N?IڍlDe<>uQ LT~2³_t%ckR U)rΕO_5o"ren%;#W'xܐ@"(& \\}E'`QT8rV[ $'v% ˌom}~2z<47_O>+̙F4V;iBW{VxmVzΫ<5^Q$K>Ie~"{l}1za5 e2$!-_8Yn+Yv'|9|-D{$^^6*MYŝϲ4\$@$5ty>VpI}W*J,ujqn -a[/Uzb`S8Z.zB]C 2'7e`MOấ4#^Y}JrvG@A9V2uD26t+, l|0>9KMIתfN(,:xZz<[r5/ FiGRy\X~ɿ8 t#nB:.!l"߳mbbDo+HشSW%rQhiɗIP["й`vH;.w%j99KPB,6}VtU}MjI)*}}p5gKdab,T'!g )=U-}2/Ш,|Gԣ4OKSK <x s'd? >UW4#DL>cr*1RhVq0H lb= - Ncxlh!pw< 9_˂[9K: /Kz0h59ds E#<ݻ=E.b4yN蒕S';ܼ(: 1%Vi;JށTJnvfoN0>m2bd{r5ڒ\+3$a4L#E66%KvfHso )k87hnP r葓l>V~h~$~t8Sѐmwr@Db2#CXW*-NqsE+QN!# Jfy\̕cu.}T&2L]lvWt'a_{EZr7"S؝̱s 56K'ɇv\sB3{v$_:\&J; WoԀ⢝˪Kq|tCߖWAOӧljz#$Xq[ݦ| \|}4¢'Ub^|>Zk|&ʺ?|oH_!H<x]ԫ.K7{Kv| xGg>@h g J%{awwOg16JKyR,Ž"jNG+>rAnh}QC  /k2/_HiIMhlMUP֌Ho0v+$x;ߣ$}e9wƖ`H9Xnv^{v--͕C"gp]e$ehubrwǧ1Q%pl͎=#\وU%w.8?Kx淬!IjeTȆ(S+I2׵[A±M2+S/RBG(JhܸY7C/wJHvȒ"c ,]Ԛ9Qw!.i"$'DùZدaڄ3}k_y=~NX<ǯ"խXe.oW!7,̞teYx&'0>4֦/n)"2*'a q z(CzBmZk s"A]cG=AیL;;e 6=EDBZ|#%}W99ɶ)PE1._Я,eYAO9}dzL-6LIVV$t#Yrt#wcb:cuȵ8֛UnM* ӦM4 )ƨV,ZT,-Y*u|hJ'93[nf'vސHxرx *J|ni6;Rj'r2:uqD9m?[Uۚx^ȏ8/-dh_Ԯ\|cr?S`sq-^lYP"<;O3=2D])Ǵ3340$!q>S_mch.ߨH?>[ ܯ֑k͕n-&YgBh[D(gi*{^?~2]\'׉a_/¾b+7eMj_D9)Nx>ٞDZY}Xmp#/ETd ־l3 H)!1!`׉tݙSұ5r)Tф:mݳR[zq81^:Dg1RKxߒ:3pϧ#8;dMH2GzNåHm'$Dnjǚ|7/e4NfNl;vv)07 ?|sC*x]NJ.RlYcoln.8>nVe2?ٱHRQVcXQP{Usqs};Tfp)/:]+NCDg|ʜpD [.!d/R1c@c4oN| 刿yk0\'|J4[Xn.4B_y6+|&`}q J+U"6C}QRSNvmVk hVO=R>-!od^}k YQp/RLͱ obD/S0^ctS <~*sϡ,p1DV4VʌEu$S?к\ 0ŕ%^MWksa6. m 3ߍ ǁmZ /ľ+5O LfjYK!TA.ŗSzd*7)6ec{L@n6IB[\?lAhw%tk|\ [f7S. X<2y[7v5Os )s_ܚي!M`lZ:rqh48S2]ݚWW4?B= }@"|}ŵ.d:i 9vl%wR/=sSssz;[ff]ed: .1Lvdb6Œ%_p!qܹij(cHbp@u!Rn3->"g{F>"F \#j3o\I/%q,e:NU>T^yP׋!sjBY &c+VPQPk6.5]^06?u +̛ՙY8)3<-qE 13.XFxH!]قr O9r^Ґ95CP&;yɬC5P o*yǹ7ɏ%a坯xƒrWc 1s(cZJpۏlCE9^C8/=;BR endstream endobj 24 0 obj<> endobj 25 0 obj[778 278 0 0 0 0 500 500 500 500 500 500 500 500 0 0 0 0 0 0 0 0 750 708 722 764 681 653 785 0 0 0 0 625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 556 444 556 444 306 500 556 278 0 0 278 0 556 500 556 0 392 394 389 0 528] endobj 26 0 obj<> endobj 27 0 obj<>stream xyl0 a۾"QB'JL󹖼G"^A6vߎ\}7j/GhrT;s!fq7ET?K#F}4bF*>Ād zEN% VOJ5A[ Fle:lԫ^Sh /HՋN?= ZwJ=Xkqܽ֯ū]n7@On!ƃzJW{)[0%XI6a,P\E&Ph8I1_Qn!:thӬxKXDFp=Sb~\9䞽àxUڵsJDԇ2Ll26џ6=·u V*v k# 3<𶸅ϑR߆oYLKS߉-V^re=w+h\6CUMguA]T/t(ҶJ`(Mj(<~pz1</*ffcdPLXcTeEnYwQ]g->|đ>-X̳CsN~etDbA!ޙQ-U/{),\ 7CԸLk)45x^Mؾk­eq҅7:@<[Er38 e;a+(x6$FNǹ×pA^,uMLk[hP2ec1чwH៻vO[E&ϴ|9mYEn-MIP؆QNwLUSEw”xe/>3cpY˴Gog%,S^~* Ke݉VQQ}r* # מ yd,dxԢo 羶;jX8}RZ;XT[A[ @W-4CV.,RX=s5X&Qۓ'&Vk.6I(3ٗdCJ?9,À&Hz%A?aMӿߪ"ʲ`Cm"=5֯&w߅WB[;GE[B^u_mR#'lay*EA]PvC|٘f=ɽo}oޣJeギpMRݑ!)>1Ɐ솶A>5Q#'^׹I-(P'\Buuέ^V_u? `l^Mm*}%z\)Cp [♠caǩ1W\R/\:;/E&#ngV6Pnn_HY*˺h:*|'15? ⒪7{d6*K$r/Io6T % *,t?'Mxn^4y1#GQfThk>vI:W7»^o\Grߺ_EB#X&b 1ŢYGMZ^Ta]@1N~w?pQ@nhvG%u.ŔHwN`[qIbQ7_:\8Rmi e6ĸ\ވ`t W>|,@ :}SE&W5 R" !߱%H݊l|geBPg J FH ףnUF,4 I?7߿QЇ27=mO-ua_dWXgQKNsiJӸ#c,Ms70yߟQl4k.ֽ¼JJA)i`W>v~~ۄ}:\;u|e*wn4 ;O?u}˜ͿWE2H f#<wT!嗢 Ś|^ER A¬b"reUu޴InT4<~̥.r.7V@X#0s@74&Q4\VnǞ "" &fپFZTXܾ4 u7)N{x5Q,VQ|Zuq9[#ȕ̋]=akU8o Yn*Nԫ庭[v"y,|Qs-x\Fh2[V~ ֠y/APZ|=qf> / rrV웝?k0VBJ/=i,Hx5|^:ͦkb>Zcg6;K[%Vx+ ۲vǺ$> endobj 29 0 obj[518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 750 758 715 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 529 429 433 0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 0 485 0 572 0 465] endobj 30 0 obj<> endobj 1 0 obj<> endobj 2 0 obj<>stream 2007-12-06T21:30:57+01:00 2007-12-06T21:30:45+01:00 2007-12-06T21:30:57+01:00 TeX application/pdf uuid:fae35670-4607-462e-9163-ff1c74563d62 uuid:d0de8dba-6378-43b6-9d68-1aee99916882 MiKTeX pdfTeX-1.30.6 endstream endobj 3 0 obj<> endobj xref 0 4 0000000000 65535 f 0000023391 00000 n 0000023441 00000 n 0000026796 00000 n trailer <> startxref 116 %%EOF dot2tex-2.9.0/docs/img/dot2texiex2.png0000666000000000000000000003367712316606077015670 0ustar 00000000000000PNG  IHDRC< IDATx]y\?aGV ""X@)[Z[\=kk\ڪںTчu!BdD@A @$0EHBH& ?23ɝ;=̹D"CI@O =;B$qhz-8xҧJ:dj@m0u, iNGni) }¥OyxI#48'0:@n&f'O{3BE0uBX6ay8==Lơ2)O\0{BGH_"d܋2bSz7+u=[{:cA_ACHTgz8 q,ښϩ>ֆgp9xG.v1T}}ืyD|f~'K+B4f0ʦz3YQ۽?rS |H{jL1u*NCY9cARQ Aum9)^QC΍U||L<\#,A|ӕXhN.郌n VNuukmj|:r~6@F!>ݺ'>Oo~ur";h552w[8խF!+r[d2'>'=lA:{^rϣd4+>/ >2ꁢ+(Dm9קxuAYi?F~SڹF`heys/uif?Fwy!? s8dN֛fgFQ=h@'#G.!o)К&wVԲocAv:Ӳ<93IWX滗i4ZZS, ]AMz<9uVl6΍͹JӢ&=NKm&yF@L9y>9Po{AW-4Fƨ8&K&ZZR i`hC![2g*4Y[]kjmbIiMxZ;~Q?L0[׭\1WI{aW.L6Q6H<^c"piO1fxpWBșK?>ngL!cآ~1A] itM/\L!EcTA8OCGf磖KO3`/tj*{7nM,LgHdY҂lndϡHUPZ[1eϾ_>3"\J\,۶-FЩ[ 5n$}Gv]x0Usϔq8Y _?Ў 8836mRN':<|9>LzsYYU H~Adde29qq&@hhi ovp怛8_fpoI8>X$OCݬxUO::gK 5a*NcimujOg5koWټy3Nf/%Em5]SV&>"?$Pc8_Rk:L-ue()8q&\ajp4ģMH$ps*Nf/ R-@0Ie)ۦ1\ '3uU @McM:޲>rKajY]󮱈ѧĠTNNJxqqq111, z\ Zˌ181n ꂋ P(h~ 8jkو4,O4.LgKGc-1W\[ 5q2LB4VJML\m[Idƙ<4ZX>ܧH66`l :j-ShB)[LR(1ESh6cZHT .kv\q& hZ +"i-Nfܺ:|1Gc #$Ekuq3dBkajei,YyKpeƙ<>jh #C\-'3ک!KW Ɍ3%(h Y2Y4L8<4M bmiA& C09x] EFK,*zvY9~DƋ;*ގo3|3Z(48 V5T PEN[`!Q^058~}yc>ٸ h3L`w3`;9-3LV-@u C7B8V-@uUq62+D\:;aj8Gک#wTږdƙ<4L؄6ff0iأ1Nf֪`v7%Ɍ3Y=rZ-4&#ZMœgHc0 | KNf<[e1׎E/g2s⚬o<iL"CG`ƌ7(/2LF .w셸` p*Čסy9Ɍ3 dpYxqcKHfJGQ.g򨣮n,eqtfV_2KEfʡE{|Bc `cZ Ɍ3kjKu Iüwf,ɬJV{v4()?e=3dEioɱ4vrU˅a̗p=q&+AcM~TV״f0Ͻo dƙ\,n"Ri{ZWQROP-@Qk*:yG&&&HmpMƊ Hc3~ܻ۷=jf }f/ 3 ilc#(.p~OOM61 2JL|f9??UE(V#>fR777#;@檪 OhmUbat  }."4(Sk׳٬}>pvsxxG\\܌7HvwS.Thg<)Y^vL" }"{~Ԁ':M}; jk+oN\M(4v{ղ '%9n\13|}%+Wb d>+59e]M3<(X.3+{YB/xR]FaLFLǎ0(j[@|@p1=}iQo`0Ν;f:,04%df-Y2cɘFM%|gIͲ}'Sf(aPfӦ* 4طouH2S{oLuIIIEI zE2a;w#"F/yqSN~ei ;V.1P^IO޽.4Wra..G43>y9:Z)@b妥L(x.(ʈ_,9'Rrqb@}ޭL ?V?>>yy,-ב 䯗,O=Yź6Ӧii}|x)/Dc}ĉw,QŋQݻqDC l\<}!Q {g/5m}|~3Oؔsdש#H$CCTra8tMԩ?>4olmoǏ}+肻]Z~QIqL!ltfkobî|Tr.RspgC gwD`CU׷ {+Jf΃1w' l`jt|ygk+sdiX7)O0sʔ”a0*ox>j'~^ތJLutSRtz;;`|6[V0OȮex jar_.?&𓠏6^7fߎ< ^;,EKq2VQgMFv M CmȮ,Q;QW}Ud+}H>Kefxx/,ĢiNU`MsF^qa~?SyӪk{/%~u϶>#\q ͍d}5.SH3$b?l#@(Z8~Tt%Ⴚz3QYrm9}vd}} 2lg'KjZʋxڐD]9)?_d+w,GɏP<[_ͱ y 3OeڧVy1Ǫ'9ԧ?ᶲAobǙ0T)lki@ed"IĮexI+^ǑC<5Vڄ&J>..a`Mh?ʘ>oQ hhtq71~Yrzmk7ߛd^ɉZ'Ɋ%utˉ3wN37ϯI=lBԺ Y|ՈBdQ[)^]be'hoVڏoߔv!Z9wp'k]tٸ7}F2!SiN9]H:`PY{e0_#Q1ϯNZx?~CEC66j1#Hc¯#_5YGn4)ە3C>O_E D3(# foqxxkk١]/z%j̄9?\J*@d##ZםX|7F|rc!8*8A,hLR{$eVK8 ^z悩0L2ή d[z#N[[uCEoz X ֢nAK}w$H}lLL=uxv8-5ҳ11lB}Mh]l(0p׮_ kΆXekH0ssYg.eMy&#LD423S-R-;w .GT*Uص](>w9bԹUI=J/[Hv/bVr5wxμr9o9_rw#5Xdccl2Y[]Jk$qN[nX2yj|,7ҚgRuDmy',7D'1?rzs{<-M]3 Hi208-Y˲itu7Ԑ>߫SH#ZFTf0ɐI JL-׷(Q'<0g+ !w]#eZ7͛V>Jo= 1p9*{4 |J3oMR\7oP4d/BNiE\h+|ʁDt=i_~?ڌO$WWNv p]m9~Hl'yo䖦ܸbgCJ]x->)>4f!28xADy.Vmxqm3-^kRZzUNB_Zvӓֹl {_]0)]NP'C4Y~FAcBٚSW}ͻƕL_ܥ؅ G#Fٸ{W0Ҿ[Y,N-5X╠_*#~)#o-썓@'y3-9_|58|XoV'`sSg)K؜62m2^cYYqU?b"bK &bbJٿA#BLm'O@5K:uӧd9MV)M^.ҳHDniiT_ ӃVb#ҧm&U<,[.5?_FajH$;9Ɋ`+ty8QL[Z:]by mPNl6~VVDl,ǬYs)/Qꉔwm.LFwt:SbZHjoWӏr_-&'fniʹiToo]\̇/] 8,j(%tzba+QHjk!)EQp8}!:p >3SY2޹^JQL~NܸXP:ڵQصl0JZUD\`'"\ɽ&I U|>M( `8;z+PtR9wAN8@P"X `2Sߏ^A kp&k#VՔ|v[=qT!A2K¢ʺEL)qrRy!`g׃Q_¼Cf̐9mkko1N;V[VDʜJ?-ƢvodDRiɮS/ݘ0]Qt$񿭈x=56"BQN0"j&OOϢ& $|pqWqu#Zǎ={D \sCI{{ϙsqM"Y/]"=uĪ[uĩS̞ 4uWQcǎ$? ƚ5kVCZ~~}F277wI*êxK6Û7v8Hj~'IIG T Aݛ?~|bT*5$$cQٳIEb5ř](msA޷ ^xmlY,XT7`0 -M6ٳqq!۷߿g24YYYZT? Խ"GqA cMq&T.2JؠLscYDŽ kBq&kD5gc'˺db~ &QW Φ%cE./5Y, d , tz>Qouz r\vqV2eX|d ,ؔ䮮;wj[(G|?|2q-WU=|xCOO,R,Y;vP1$g]]ݤ$\cΝsMHHPpG JKsؿ%N (1o$+٪x ޴U-`0.]jkk۽{l]]oF0ߺfee$''5zƍ4Ej+imR,gy;<|@|;7"**n`XT*u֭bI@lllLL .b]9::n1,\M6y\($vf+2WWqhrɒD' fl#,CC)`pڵ!H$Eq[rE"D_ق hQD|.ijzaB9޽{qqqcqeXDb6qnޯCÉ.. CMFF  JT'g.JAAgCCkS8tzZ ӶʰNRrϸy-dћdf}UUÇ,}vpy<څ ZwKM]8pd ;9ŬY35 Ս 1Ѳ2Fs9,lEE&Xy, ecƦ:EP ^G&-4F>L楼vNɹ%%1f5yﷷǽXS.[aԧKg){{8{_ƅ:X[+kVrOa~.Wϟ >.MwPݬFe+#Ld9$=ˡ2_/Lz69<8å,䔦ߺ_/s{}W+c5tS2\uU_8zdƪ/>v&?->Vݎڡ:9^5&7mmhP:_+G@)$ <3AxTjRפ:S~:ٿLj1֨\`6eeW{|~E O7n&x]qG,uvfSNz> gwDhUi qoEJ>*<;]P!uϗ{aS }nwfm[6d&24uOucOg ח)kc+4Y5=¥b7g;%1 5j*+Y??l9o餥TkoLLd>#=*YEL[ Bbݣd8i D.J0V-9~FC{;U%МBkrp6hl MK365!i5w RN^ؘhtzNh}, _kK u7F60P} nx7vw?:sN~D-_mTbVp 5$J^>RU?mn؄I͆RNҳ~G+;aB$@6 K qrnC?S/Dy}C8~Y nv>ḘM%쎞k =ʔώȳ/argmE-14M.ߨh\}X:A n=-33^|5Ei{FU<_}iX+"z|k;5Juuvf0CQ|v !7&6H"Wn,S#h7Em5oܪ u4JX!1Z8ҋtJKL'X嵵Bs)2oGn=CGϵM3}0)1qZj]OoO7;4:&&&&f̪m~z:V^*z`>zW-۰*ٶ:ɄF<ɓ̭4$s.tIKVLN,}!uU-"rB7:oڪCJr-m$Ͻ(n}sAuU5QO-sҊ/,8ޫF^UYq#eԔUUc.% y//l>Fzc:Bb\a6P dzru}/z[iM"Nމ| K&O`x][F W35UM U fyyX՘fѡhn3#Ysœ{ލRbn\y %woy|gl$ i;6׿6+B/lN?M6s/1vb/2sKK̡N͇6o"#5VfWlY4ɇi_|A$ûvm^TFhYY!kך[Yn_zzd|^K3*.~A30Qo^<))wKqp0Wmx ? Zpy<05u SV=p n4[ƖX)2?NW1Nf&dfHBfƭ[Y3̹ڊ)G۷Z  \;r.wfz Cm'Tثd%f1/b崬,-޹d@Ho ݴ`r2 2kDkȦBA7"I _N 3"3o?Oc(Uu׮,ί E663f>x&6TZjbTשcUU2y-E7xU Eo|%mWkNV8NniiuwJչq+;L18wM;{d*PW%5??v&̮G6")pwΧ#Dakd^ܖ}7cKHO /[`=~o#*ɼlFia|V綴$8a?Y,쌢::qoJ~!NQ1=M!(Uv2]T*ַzc&&R%D TVM(6v~&iiY7ntvisyzᦪqųNxdCCmfQGվ A!ÄH4q.ӜCW0ڥV޻W]YI62d eƧc޽&ld]]@";;':8x͜)L/dF]]a8p&d&1d3WWNT ff0i}c89\`2Q3HƁ3 J#3&V66Ppg21\o`̼^¡?C|U5<IENDB`dot2tex-2.9.0/docs/img/ex1.png0000666000000000000000000002374312316606077014175 0ustar 00000000000000PNG  IHDR$d[ pHYsnu>tEXtSoftwareAFPL Ghostscript 8.53٩q IDATx흱998rzO`~6tb `yH,9%N,G>m._/9` f.sM(ສ*AH)aBawkߨi뺮 /GJ!\!iX4MUU]5M6&QQ. JP>!"w!R =TR&?X-:NUUNDŠ.q~t'@sޓ0 8(?}X=~=i0L$c~u-9Ngg}mQ"$I܌,J۶i>K!Du]\HdRfYX,FgICp=;>Knky u,5? -x!eY=Cy>L6DQdYwR%pOӴm[CG]IMdbm ڰ)fi a@۶6 -.M5 J:45VQkh:B,mk,,~2 qe^,K/h'p.R>!b"˲ ۦm[}7! G6GX}0dz7i}uIBjb8QԿu]끂;\X'NmX.,ݵb'u= v}f svRaμ,|ZI@]רW!Ĝ{Z>ܟs&ۦ|RIeJFEm?X{?]UT%Iz8E߂گX#5}ߣ5ةX۶ť(/}@\z";]`\֌%\C}_9m[ B vba2mGv'־٬̄)ٝX'9q5XZ`)P5B|4߹zf5 CWy$}YVݬr[ߟ2fʲDbYV3Y(и|#ba1C1aVY$T݉[pn5IᔸbNw|dt uwb8!a۰J) P)$ l]>د5-gc kƕ:hVT:@bk4M[FJĚ)W<zQ`wb bEE5]M$u8D/~e0`x{ |䣱6 m'i:;B`05اWPTAH)qiAP(nSg9랉_<&pM]p=}q`މ8>|ܒYA!ttfcrGes8:XR[#s]`~"s=n$ .H۶q!M+ A*dvjEX]إ0f^e>NXS.lD]׏8,+.lidҶ=}jb>8m n'Հ:%Is ~ZXol0(X|(fe[\{6[Q 8"%.C~׿63buoFx_WCZ),VgfuieYXXiU}+h4 Ck,S.Ɨ=nFE,OݲteaqѣT`:@Oql`:BZVqj;iV趲een`4Kb 6kfзl~XڲXѸXY><^Xb]/sXcq=N b;ajk֗XjiPX-a'z̘a2Sj=,auX>Ӭ.a,O:/N:Wź:[ b4QHb4QHb4K]cXa%в|je^< 6ZGwiWZ:&XL:'b]}7hlY7,nf5 {,O.Ssdk*lY)9P`.[C( XNǡ`.f@ ֒(}eYzBU  e]\Z^W~TVx^5LXQUA7A.CźY+oë:c˺/`yr2z r,e o@˪" X@?HH5b]?΁V+ ZcXx<ҊPKga> r;9p"C4M  V: [ևЫSj9bVC`ޏkEniZcXB+TUEt,B.!RYy)@l=gJ9z1-,֛Xiv0@fތ^2a˺M|k¶T^9m*c1*X7GTڸXo9e .6$ XB:MHdE7T!QJ:&lnlYU)f"V`^_ٞ X/%]`&$B,֋4M~6LÖ?O87ﶲX ~o.M*5`˺ 6ԀBV+u!m+5`JCin[X,$IeQ'X8I<lY~~ xn\YٛR/$M0!^ !FPDŽ,^LHzbZ]/_RӒRWO]V eEhWJ7bQ:oq BoOTJ]UUU8E )yӿA]NG8(̩,~nb!L'6& (*pLi'F SmE t0ݳڞ58ۥm4MG"MӺ-nTEJeYx((\eKb>˲YТ(dqq8k2 fY6j~A3?x!eY,\MsXwLyg|S|.:(ֲ,0 4mvOYI|%ֶminؔNC=|k۶ 5.M5I}n=e}*f/*\onmk, -~0 q쉉ݲX˲ov[s҇ ͊8F9m a:iv$CkZ* C6wct)rFj8B/E]Xz1(9',6N?JrX &ij,Re.c4[y?Z k>,bOг6 ͻsJ,uJRr|u]^b*C3NEQuuRqEU%E=Ȧi܎=ӆW ~NpϺ黩IXc-l+:L/ bbmWQ=8V JR%ȋ񥺮{.K9XŘ9u~=Qa22HPOwcwTf-Z =W11}cO=#ї'^b)OE{ B NN4x_kfATb2! UEQx(kq^!śkcGPwIЮi@H^joB_!Ѯ(,Un^uRʶm0Q91Ve;Y`^ƳT;Ainks_Avaay>,tc_Å]؛I5 xtpaI1K*mӮTo+\|8_Wf Gm=/"Vp `R\<%d  aDQ׶OFlz˸^ }?<nñeY}}ϷVX۶Ixx #iioe 8=9eYHqY,?h]dc!̲7/˹wEQ\ W=wжme5bgЬ뱌`{L}ߏzr8QEABm^"x3xLÔZVB@**:)(Z4MӌMqApt=gbENRvִ캮iFgI{._\,t:8cfhҎ6n(ɴ:q`J7S$>-A Vg&ЮuNw:16X0 uWuZ*Cy(VC`nAhtx!`T:@'`jº ]wF-\xncb803|Ԍz[HLg랞zKd[ۀpaV bt[, ukIX0,{fVg5`ұId,X:Zl)źqtO3ClmxTjb}mcXwM&!6;@ȲrCl D!'a+5`>iOXcb}}땜'@4 b][$ " X0@"u(nJ XKAq땖X+su1\obb] 4!b7`kBDP+b]Bvu:JXB9 `..VBuq("pX2,ˣuC43\[Bxn\)Jx̢u@aW*e XkzD-+/e>0ZO-ZxB1 XWϘFXY~p%T̀ź"~V5{E>wVJ} fu]F>x!AZJ X*J4 XWǫe;$wb]YtWW/nVlYmf9WXC ݍVj$I' X` p88Ub}IWuXfZqlYIYD X1N=Wkb^璫s=j}esLku"*;7,V'H)- NBXnڀX]$CX[f++sv kkbu~49.[4 hUUzE*`eXt:'VCU/GUbu[uz_?h3,˂ xzzzyyӟ??|Β~Az% cUU_~?e3-[<+}Ė,+Wdqۛ)C>`weK y1MoXaY( Xu)m2 # jaqV^:;uݦiךѫX !?haЕw)BԥRj=- H)zsX]5Mc簫NE(<_Xuޚj-Ė@h0=T6! CvYUU]=q+t >@9 eh=[ajҲɡ=i㡊Ln}\Z4Ms:.OѷٶĬ~*gfQڶMtYai]׮8(2mź }gY6:KZ1I6qyng$,|l~cBeXpƗRfYDQdYwR$ .i۶ft.$J7z3ms$ٰ)fi a@۶CC%.M5 J:45VQkh:B,mk=b_IDAT,,~ebqe^,K/h'p.R>!bꦬh6m a>9b{}-!ԻʞXG0T! }?16saY&EOP׵(Åe~b褺Ѧ^²X?]+vRpag%;v]0 gm|>uRZkԫb=c-R [9mSU \zk^>H)ǤʲdZ#"\6MvoF Ū$q=oLdWEQ욾TmExx=8ptu8pl*c8e PdCi>/7ÿݣXq9zGLۑ݉{6>3aJv'鉆qn\}-Rox!߹zf5 CWy$˲fU"_ `*U)%ovdY1f(Bĺћ6ّX1iJa彈[pn5IᔸbNmݝX9@|X6,R 2qYk$J)'*~ߗnIu8#gŰφ#pDXpdJOk@| ؀2DAx:BA֏kKo=EX6ʇ A#!MS=<0 :?!}n0bG j06޺NJi7*PJ#: c̈́1[Ǘz61ՈBXs!?ZO^*"-#:5-:p8 gޢ(kb4fEbhǣµ ;Ӊdak\/,0 ]f`xԳ,8*/rD>a gGń|t:h>,Q)'Էo߄'3ݱ n (/ՐK_q ?ًhk,A9t][pMpF?nX\ky_E#5O`NNB7"ʥH }|>yƕ:hVT-nQ24 b)+w m0ev'0 Ѹ~*x@uS5I]%ы_gYz8=>Zr1ȭG+(7@g.b0|V@<0c^__rFmb @JN4x"R ?zqm' z0b2in2,sL1A.V'`ϟ[2CRm7٘=rl, ~+:}dX\$Ii Ҷ~d\q jePJ)م]#Eѭ:ev)t'6"F/1tR#X0\X(3T  IdҶ=}jb>8m n'Հ:%Is ~ZXol0(X|( e[\{6[Qv%Ϟz'mk&I++z PCe9|ZB4M7jXe$|jX(ўR,6u}[E^NbEq)JEyζmeh"bma.LNEQPm۶W!nSt#RB OR+(Z4MӌMZPY4 v+]TguML4궝UUAW-9AФm"Quiu0zM&m1\ !`ڜX3Y\ ] XTFA !EѰX"h uoa:W$CIENDB`dot2tex-2.9.0/docs/img/ex1bcomb.png0000666000000000000000000005574712316606077015211 0ustar 00000000000000PNG  IHDR@*$ pHYsnu> IDATxy\Wg'*XEA*֥.UUkV>mmJ7ZZMP\EM !lyW2<iܛs( Dioooiiioo BgO>~4@744477D"HT*Q5 mll\\\bbbH$\ID"X,kjjmmmD(:99l777WWW'''qƱlUP9s&==]$A,"AږX,njj 1&&f'O}AQw^zzs t:`0 `T윜Ba}}=]*D@"##M舕J@ӧOr6y3gFEE q X,j5ɌILL3g Eׯ?ɓ555Z'...22ŅH$DV}auuuFFFzzzSSF3fLbbb||ÍBJ򂃃D"[`)Jz}ZR?\`#yyy ȕ+WNJRA?쳻wTG)|gFDT^tw9r$ cѢE;466L& ;wvuu!UtuuܹS(ҁ ( wޝ;w.F裏j5&www.[J2>@$S+jT*foذ{nذfS˗WUU <@Dk֬at:}ժUח^_TTO BP(z9>O&/^\UUe=UUU/&|>ܹs P^GGG2|P(,YB$Nfhkk:u*H\dB^@H$ ,P(&=6R|I/D@CBB`^nJ2èTu0h"RUUH$?Riʅz>}t4|ThG<<< P4tP/Ƭ?PG$)((moo1b2|Odee#F[ 69//P/.JRbccI$ӧ-3>}4Dt( AAAvvvfZ`0ݻ@ ,^vZmfQ1ݶm k׮|@Jy(/ fge˖/iߴ@O$_}U ;᏾D"q ^߾};Dzzb>, PEJi ٳgh^^ |;b!T* N3=JPfΜT*e{(Xxlh&F3vK.[E8UMMͤI슊TEE3 &pt@`l<SNr @hd:Z:tdKӠ:wޡh/^4]ޱc@8ycYvvv>ƍD"ъbR lnn j0JKKã=qyCR]~`|N0޽eǎE'AD"qǎ---wﶨ۵kVa6;:cǎR`K-"+44̙3{ aX9`0EFF!KjCCCwɌnܛoI"n޼ZܼyD":HEDGGsJ^Xϟ'[llb6geΜ94M,PV{5"$}EFFrn٬@FFZ^|]|Z0c .@`jOĥKJҋ/yt)@0i$ktҤIԩS} ^:vaÆYIP(gϞ5'J233[; :33STqʨ(7L,,+"""%%%gϞ ={\.2L9//;>>9qqq"l؄knܸUk666)))'O/|RRHAn<ã(Z__y+W# AN~]@A&8N[[0۷oO2%22r tttUaB0 TG= ÷n CQa:{۝f4mmmƴp9Lcl +ikk32OAB))))>>b.&uuu5r8^zݺu .T(-]ݻ,`/H,(pAVl[vqqa0(|BQVVPg :99d2JN85lذ_~Yjĉ[n8qb宮Ǐ///ǤS*J&:o|~WWZƼu5449;;GDDܾ};((jkk!fp\\\+NK/K<x=]3xxxtuu?MB; ЄBD& P(*H`xf̷~Ǐ?^~ N=$hPA\J`$ ݃V=vJ:zhHHHdd$f!m駟nܸiѓ Yʁ0, I$Ree#LpG 2gΜ^z a?z}0d3`0ϟml6Hvv66 /9{lRRin߶*A… ǏRf$N<9--,8ٴ4sZPPP~~~gg83gB:1k֬k׮ @]2k,3>CBBBMM Vp3::lT=GKzX,_e탉hjjP(0aϒc%N0a3aÆ5Vm四 l+++߿ot޿2>>޼̙3ݻܹs1cv@>3$d2y߾}{2IC 7WŌ_|޾z3555ۿ⋏6cvW^yֶHY]0A>L cv(޸qD"Zz]jDq%_twp8gjÆ @ ܹsTSԹs>V\%fq/ 'Nx*31cbccn2{촴6̕a ci= bs׮]}c _'q̘1`;*TREFFVUU2C2lJ2--$(z…YfEFFߏggn޽0 XZ+V0w^< t,,;xzz>-PNrJ"wY>}H\rjP~ e*ʌgw^rW\/[J1YJAΜ9ct9sFEDDT*JaEZ~T-[ZRt#GM *TQQatVTT899yyy566W+2z}gg3lll>͢GQyƍ$?jOdQpQF577[ͣFrN\.ED.oڴNϛ7OT>c4 K ׷rח`?~jKKKCBBt~(MG]kkٳT bsppx'NG:qspp8|oZ@655͙3JΙ3Ŕ>ֵ@:yf\aqu֘1c zCo߾`3֭[, >AAAw11sy{{xU j%&&&HEutt:::-ZD"thFU*\?,Licc֭[Y,˗u:]/GrEQTT]D"54h45jDZv-H)c^xXcǎ) \-~GG?---88J=رcZn \]vyxx؋/je(ʣGN0`L0᯿kyYKT*ݹsNvwvZ||t(o6-- =zt|||XXK"r˗/={Ν;-66v͚5FX А{RiccrY,N'D"DFjLZ[[{BF# L2eʔǃTƌ^\\<}tBd2AJWWWGGGfAFٶ6L&J[[[E"Q}}߿/G0If]>Mׯ_/^r%;;$'0 dp(Fŝj\]]"""ƌf籷J@?رcҲ$ a*JP@ !Zj5 pkaggmĤ*J'L /=zC$uttD"Bpy<e evvv=:e˖\%A B#E"Qss3󝜜ʖ.]}5ߏm^p!!!~{ xG ,; d2Jnݺ})K#%Y)FDD-ӃSRR/^ =G|ɓQD"^n:tqJKqX,kR~iggs.{xbHHP(|#[YVVֶcX+'BILLU|Auuuw~fܼynƌ} A{(zر[n*}}MhorY6ҧryuu5JOлwN>>ZO?}& "77wܸq...}ZhJ#F~:Z%N"_*f;w(APZZ`G, ͛Ze|֬YdxT`=zFy(AЉ'^xÇCEEEǠ4++BDDD/F (:;;+ By5A~݊+555`^?}EtTyxxF-䃞9sjI$h˥KJeBBCd/&%%(4=uꔋѣ_@䱍s4ٳ1i ǥ A$ݼy3,,xEQccc#^ӧ|~pp0V :::f zƍVL 0LΎľ O[ Ik DAfddsbئP(lmmwLvʕqauҚL& AA?p"""0l㵷N@ڄaX d2nPZIR1lip.30|6=qD uvvj Q4''G"`k!{l'HjkڶAY,ԩSm,6%hYYك4qssttOנȹsT)SUuz~i~?C\ Ԡ:… ~~~DQEQD2?Nq_LU`x{2$lmvvv$hJJɓV@HGGǠtiӦaNP8Nmm 27oD}MKF0&HL&S& IOtΝ;SLa0JP$`ѠO8D 2x4( 2 @ 솆hiiiUUUBB~pttT'O=SSGVcrMII!;{7thPr͐{{{:=>x`…?ý{ É'<==#<@,KgXZ1 :4_9rȑ#eYYo LtGR OX>M J(VJڂ4( X|%pС={ܿ;:;;K& 80 ;99t:lE/3IUVM:U.c>J EѢ$AvvvA.LNJ$r3 h`+Q433sܸqiPEi4Bd 1cƜ9shl (TUUbJPlmmR)XݻqYP Ν#HQQQxװ#$D$A~A8 T~OOOp!A,>30?+M v޽{Ѹw ^۠zT(ڵ a2dA Áґ IDATju\\\II yzarئP@q'T*` IRss}{@x~vuuED*b/%ܹs \.g0,`p\;;;.ꊊT*UWWJb2?'N* hof[r/`H$jnnnoo9Ỻ,K(~С,/7M]Ez=iHpYZZ{…wbww)Sl*blmmD" `d5Rd555999D"|ƌӦM 9r$Kwd2j^z…bHD ɴe2BP.⎎bLhT*B>|P(Ja1`sRL|QQW_}%}||^z_|qرilD;;;;;O&Oh"X\TTydFEE{cǎg o;wKKKw^ggkDDDtt3dٶ4@ E x% KW\9{O@@3&LR(TVJee5kx<}7\Vh+W\.YGnj +zb|>f;ZP{充{uqq'O>uRD`܉D^>4'mD"_|1dp¢"A0GA 2!C|V>S`^@ݴiݫz%TFR޽&!!ŋ= a(~ӦM==v옟Li*PP(PSB8}ȑ#mmmwءVjСCfT_~}ĉ4-<<<%%EPՔIt:]iiUx<@ عsB@j*S*H/^L"f饹911D"-^d RSSS]]]/qGZcbbToގU oΜ9&ATu뺺PIWW׺uTjTT&j/-- LR;6GHT"HV\Ibbb1wh~~JNNh4E$''X,//|#[41UV'`2QTvp8yyyƻJrĈ3f0B5==$IOOwuu FZg({&$$0KJ$ؔjSRR\]]RRRԣ:.<<<$$mkk rIAA 0fΝ;kܹt:RTOSk׮5ʕ+F2!OH^tiiiirrr``S&''.]{k`?SN_~͚5 ILF&kظl=Hm۶bmۈD߿笮 СCxkP^o1s>MwQ9}4z;:: YfhZM(-aVsS(Fv܉7vVkk΢%:￧hK.UTk78z5qDP5򥣣cĉ,Ν;mݺW@>|Y,tww^J~=P“46mVf[E`9` o' )0 6lD$ɟ|ɓwQVV?\ceϓrJwww+:r~\{k׮K.ab}W$ip\^UH(1mf׭[gut֭[fmõL&S$7s裏|kvL1bĂ Ο?W%JJ}z 6x<mذ˩}t`EєW^(8o Nh43>U՛7oZ|9d|r//͛7[H8Jm۶aÆ[5ۊ+.]t…>)QA-_7ok(7o.//믿:y~Rp|e˖| w// c 믿zxx 2w\_PT< k׮Ç/XGa:ƥX,.((P(V (B-z?qYYYUUoaQ[}OrSSS5?@4 UL& &++˼qiqd%*BCC/^Pls3?~\(@CCCBΝõΓiDn꥕g2=ETRFGG[}ѹfL>℄T- %##7}anjAPNNNgg'NU-]]]?cbbb\\ܗ_~UҩΜ^ yA .z=4~srAIRFFN7qU*oO?I 6,X@Prxx8N͗J%];uꔛ9QLfd28TRRb-++>|hL#ə:u 9b|vvvÇ/++͗Kx֭02  j< ?rMmX~z;;;sNnܸI\.\iU*T*hgMSS]je*2Ff;jʕ$1 @I\]]޽k Ct]mmm/l O6r4߿xʕo&117J&fY__@ᴴ;AAg\]]i3ȍo%0aVFӛZp+Sʩ'i6xt:e aPfh\266 fĀKKKKVV_zdz@S|ojjl}}}$0  W[[ ȳk( a6I3 #'I...cǎ-(((((GZϿ[''':zdyRss3Hİ/=b0_wjڅ *Jh@vp{wwwošHC*//_p!}Zv׮]cG_oc«V׮]dbt:ݞ={rss7-c{DDR|5%Kt:___>?vXL>1cΜ9؇kjj)$0 >bzyy,kϞ=ӦMaX666-HFalȒ>|H:88@k4W>G/\>|J俚x1:uj7JsNJ5jԨE1 l qwwT*փ` hcX\QzO1117oƏDbp|aƩhyi0L&FQTRd277^rO @0l?t:srrzUuL&  S>>>_}U;jk4ggg"X_˔쮮|<ӄ0Lmqٳg FDDDoS*+ILLv횵$Hpy???oooӇyʔ)8mBXIMM2eJ/ M:N5 eZSSsΝ^w h"pZXX(OngrAAAiii8e}20I "##{y D"8qbz d^@!9sfMM۷Z}aÆ (0Մn8~[GǏ7{@iӈD{ 7nӑtAH$&3/++v)55lD*|hEoj:..Fg ^ڲeyA#f˖-^^^ZRxl0~d+~4iRppYfH7n,--=xzҍ7ZH興]%t~bb . رc8Uc]"JwpB y$2uVR}vN>~ODBP:P@xl@?䓆{Z{mhhO.ุVVVZ`;v0aÆ~wI$Ɠ$ 111vjhh]{I/lO>~Tw0?}E{ @ l۶MрZcV1*jҥ -\ĉ﷊lll\vիD"@! ٶm[vv|k!LD}۶m 'axƍ.]dS.۵;w:th?Ud2\t)H,?@$.]jL1d\K!"WWJ-V~m k4 D&( 3##D-d`jdeeXgד5z~Ϟ=t:wEPp.S [ ӳߍTUUPP;99F-\ۢ{vvvSLH$HLLNå|ZdիWj#G^%xO +V8~իEJ={F޿y9RN*---3f H HczxWH$Ҍ3@JMz)S݁j2::F[혴P(̙cj@ZnF4iRnnF1&77wҤI4mݺujCAT]]mb@o YvmUU9`0dǏڵKR;(X]\\lllϟm+ϷqqqiE"… Y,_|Q__+O3SLRF:y$ `Y }w\.^f (@%ݻkootl6ds8T!e2Ykk+Lx [lǤ\odѢE`Gr? eeeٵr\ :;;e2YggJ2 |>? ...33D"cA]WW}-YPUUU]]&ښ;::j5Fwrr|>ӓ@ ̞=;//4=***L?c 0H&J+(ZZZ3qvvr $z~:taÆ ( ÅAAAG={6&xPbWWŢhOvܹ'NGl|?\Y{?1QFG'KcOIJJڳgOVVҥKMJD"a{ :!6mMH`Y &{=9d LIIu}}=HJ@{#L&3,,,334'xۭ1MѦMVXXXWWgXVDLf9s466 w!0KSz ]]]&)d2uJ-и8f+A-5ޅ5jӧMxL&c$'N<{, By<a6uUHSm-L&9IIIx^T*|2V`0tuua[r%x[yPdOzh@@ٳgq'iZH0| ,!C߸(t`x( ooot:Lp (!!޽{ãnʌ3oܸ* Μ9H$⚕+%((oh:;;\.Jr3f V_1!NNN.]©; í0 a>5))Ν;b -_^z饺:p@;::H$P(&xdEd}ĉlvjj*n("E$ ѣG> CD" !+?t1cdeeT*<(FrERaaQ P(<&ḸR<"EB HFF Ay O:J?s+i4 ҠǏ6l[JMMM FzL><==]cD!YD"111ҥK`QCH`PJPJJJݻ-Z Uz+3fht<T>(0đzŋؒj% y &̷@ oJJ ь:}iP m˦&A(4-""=IEe2(AfNKKðM >AQt̙2 О}Nkkc$C?4b77T Xuppt& :yRuqq숈Pofd2נA3g$w޲eKdddpppDDDZ V>&&F\xјFt:N9qT2 JimmA#~/頻9rĈ'O\bE5&j4hfffdd mۦhi&Xy:Z^^^__?T*Ucc 3gܺu HC>ٳ;::._?-02@~mR󗕕Q(hsuu rĎV1yGkjjG p8ׯ_okk뇕P(x<5WX VĈ7o{QT[D"dXF:q7(T*>|8b2[D"199߆\ `mhұcDzXݻw>0^P#GlkP//~ +嫯2dȏ?XZZ˱aAwwwtLz^huus(_>|xeeZ%dJdIV:`F?nܸo]R!j@{{{WWWB1l0^Sof͚7o9si=敂UVVqɺ~۶m?Cnnnmm\.oooP($ liZ^jL&@ؿ۷cccB!xN'۽{wii)`EQ`aFD_AQ@ d2L"ڜi4^fLEQ\^[[{̙["`0B|;cQ[[L&kooinnnkkhiiA$88xԩÆ c2fzINN޿]]]yyH$H$b A2(NG$$$$ N009V(KII)//g0CMHH2eJHHH׵ZիWsrrRSS>|RVXa|v!k`0 BQVVw^HTRR4(Dr<t:]"vuuh|:>vذC2 PLvС/R"O6-::zȑƤPD.\v}_}UcZի999(92,,lԩB֖NSTF$zZhjT*mllLOOvZUUB󋈈hF1Z(?חL&ٳgCBBdT*׎8AL%:NTfffFEE1LW_wuu|M_y'?Jyyy[l cً-yFAa"F"FyZj#GFI"²xٳgںl߾,,C.߽{wgԢh49D2dȷ~evuu}`?h4 PV{޽˗q8wyu[n͛7|z~*^u"+L"(66H$2l`Rd2-Zt]l|R322NJrssu:ZWWJP֯_MW~z ZWWgՀt:\qF:VؠGJÆ p8V@ lllg o>77ׯP4T544̚5J$&@О~7*޸hff&rqq͵uqqaXVN{q G}P(LFc">o< 2{޸hEEOuu9 ѱŠtC tI B裏tzpppUUճ*HY,VQQezEEE,_"X:lȐ!/^D!G^oXg0j)j43fGZѣGd3d!ts8ikOÇI$Ҽy@؁^7oD:|h6oLR?VOYRCO8_6?⛿?(7aqjڃR(^zIRQ}f!I,x'o~@7nH$P,"qFKTUVV &s`0sܠ FcYձX8 %..b=d^@Z5kh4ڥK̫;{( | @8vc%KHkD"-YrtofsU(R(۷TkZkT*F?ݭ[n`?7|Ut֬Y za0fͲ@u:˗ Ɗ+,>hBBBA{{)h}]w߅ j4h>_[[k ƽ L0la?؝?> } A,YS6nHDDĤIm"'N;v:vX'N`3g >&@Xl\.t9(((Y @sNp /SNɴi mN@Ϝ9VgϞ=0={Z \"66JZ5vvvaaaiii`p8'N45k|혴9qDcF@ajk{2}tHTXXh@Zmzzz||1 '/20Ǜ6m k"j(zÇXG$Ϟ=k@ʔJILСCC~?'MT*L)XRR`0C ?~|JJy`Y`AЬY:Ǥq|z޽@'SLP(fH AP(EQ*J{cGϒ&j;k9% A..."CEQ ZFzر1c444\v?Oddd=UV}... fb!"NmL[}T(}/m lX9yq٪bbV/i:}0,15&˴s13m 1p1)A8(-Wnoɟ2r{w;;(e8\.b6OaɜG1t:v=.zI$l,+q `BNgCBׯ#W`0(666Z6v\$Ѕ6k&̤h`6h "//L&/,,`A0bX,...޴fH(kTKTurŞEQNfkjj~N{.M8#jZ T 8Ouuu1δP%Hqn OE`+WLMMUVVHrn3g qM0Lb,(Njzj$ ^,mZR8|p8`8tЖ-[52xǘ222233AGG3< H8)--+'''ueDB"(F@222_VVG.//'knn.D# @ k. @NN/" ;w>|8JafȄ 2n *j```ppp۶mUUU}]QQѮ]9]~TUrݡP@v P( 555w(((X,l61 F){qHD 6n6 (Akf:3gϞ={$(vZ-(^ZZ BL&3q~7+++TBY@jkklFym|>LHwSt.\xзoN>۴d2A? @?gff.^ԔnT'Pc ` 5Ւfp8Ph sύNNN*ʲD@N*0I*,,!),,$uGPܹw;vPT jqttD"b%q^FCHeAoߞ %%H Z9իW) 1K#OH0 x}f!0ݟ8xL j`U7^`0j5PUUu۷o?+@jR*&8L&RE=0\^^<Ү.\. 7Z֡tCCCV#\P`0֌_7o\TR!hDDR{0 Ս?4H_&PXp9ŒOb;wA,i<4?O_ 3g$III#J&'' VMvZ`LNNH7x` cv;ǿkTɰ  #{Mj ?h4d{^X,WWW>$PpJCi FJ%q:)(`w%H/_N;@z= *z{n+ ^7-HjD}|T`tZ\..SOSx@D"Ϗ)JϗH$ :FO< pz2|ʕ{NIJsT*r#pM( H411A݈=FT)&annnNqg46770=.#:88[TTp8e_rB帛 :uT*z)bE +SKp@].\.ǃS`0w^2|ڵԤڵkd2y޽p= (|DztF4 T**#"n [nn v=^DkZd4f$tuR7or8&NJd2AE$4/0v?䓙gϞ%Ď>v:+:8OOOrZ[[ g4B$˓S/|`fZKJJiiip]ZZz kʊFau~aF.wF^믿NPjJp]PPǏo;SPQmii^ 9=={n[ZZPMN`vq cǎ@G.ݽ:SP mmmT*N;vr%Qu1:NRڒT$H"HgggNN?}4E$?##c˖-###RP-ˁr'NHO8r9pb!M`6<߇~p`j===@ .6`Pmv… zi(< RIR!r@`4F. AJU*!!b]qQ: Ū=&c633s銊  ?ydo`7xn7B)//D\.W*⌌ Jܡ]XXqSSS===+ R^Q*Oc@$ L1c+ BP(* l=^tҥKV b$IVV[Dᢢ"Z]]] Fo7~D"sss;xRIDQ6;;xjyl6@ԓ1RK=4IENDB`dot2tex-2.9.0/docs/img/ex1comb.pdf0000666000000000000000000004751312316606077015024 0ustar 00000000000000%PDF-1.6 % 1 0 obj<> endobj 2 0 obj<> endobj 3 0 obj<> endobj 5 0 obj<> endobj 6 0 obj<>/ProcSet[/PDF/Text]>> endobj 7 0 obj<> endobj 8 0 obj<> endobj 9 0 obj[518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 529 429 433 0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 0 485 0 572 0 465] endobj 10 0 obj<> endobj 11 0 obj<>stream xRy<ߖI4֘EGY3c14 ʖ%Q,MuKQJZH Eߟy~0eGg,yb2:H]`G 09 $L H f?`LPzBgևsf@(Je?HDؾ A$g& Cu,888A +$BHD% ʀx1L@2)8V 46lj|$& @2noY*F'o$}J 7If,$,T7OsxD ű 4*ˠ@@O:5ȊIT6 hAFd~von4 T%470oE]'_?]f 2IT@ ?">B\$@e@r &',ȏ"8@~7*a# 'B sC(~a?23cr:z(@G;H f@{E3 1 $BDX3呖%[4yWb5 ug^Jjz*~AIdKFlx7ضC(Yx8%Y~;=?Ͱd@܈Xȝ-5vŲIBO"O&NeBܴp59\ڹ3gIj}Xhm+kO{ -ŗɲsDL\ n7l G-x3pz`Y0 `ULZsG%Gsa4^>ݧ 1XeF~uIswr+ؗ ,LJр0.>,b qt _N5[uNL . Zt[WTァQci铷NmӍeg͙mMeg%t5ƍv7Iji}b{yֱ?~Ӌ`*1nˊ6^\)}OshyMRRsL/ [=&e.I%JDxZB+LO[F?U=T4Y+2jzY!PݶūݎgJVUq'FT;Z8uؼtXʾ^ `YyRt@N3f-L$NťcGxģfJJĹ룶KEVHҔoeN3X,A5$ %Ⴄ]HeXcw@Y|9eܯme4>Yن5~[qMŧcd+u1][rnVj˖,9k'jitv!] ^ģmy% ?a:K5./ȽGb"2j.:6V^WXҵjC6x t F-,uJwW.}"\EJ̈K thR`' {%;!6HĴ%<~Czsڶ`)1;?ߧ LzU!'&<.nvET/,H΂b&)о_z^:/b enu摈|4PY=aڢn'4b3?_C2 endstream endobj 12 0 obj<> endobj 13 0 obj<> endobj 14 0 obj[778 0 0 0 0 0 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 556 0 556 444 306 500 556 278 0 0 278 0 556 500 0 0 392 0 389] endobj 15 0 obj<> endobj 16 0 obj<>stream xgXS[%t@z@B)RB$БB(*"MAH"UtDu|4ϜsjGDBZ àr2rWcs9Y, "x$ïzpW鹢xEI `8$ Rj{qH 4=^0( h!@6 44q~p7 ]$)evD~DaШ@2Vogq=_F77 1npݐ^($L@>z)CQ>_v8"H%mgi!LLH42?L%WHt0+)84@:=$Rh7x@ Ac '@ ,/AJ@7ˑ;4VoR\Mrtߐ ߐ$*A I FRAߐ7$ʤM>80,-O'%sj@5e%_ibw$p`tS>,T 9"끗 Q#Q% %&km .$}ۈN|@j&cVXwVoOul]7ӱ\$kkˊVV#bj/+fx+MRM| G 9ie?*K;uLf\T00_\}\Rs]DX _D型 u&mH5Qv,sVt(>R,ZyzO.t@0-tFK>Mq;jA[v^ 9l+>PV3,W}e=? \F8@WpRLմ]s6~cKW"l*ؤyiEvAh\Dz@4Qɝ߀S3?  XylM\'AAꧏo}8muzF[nܤaAV?~*AmN9Iy\ kt>\ J/5"íw}Y l,*#h8 ̦} d>S}PM&/'ǻalOӦƐW]$}HKfo.\[=|s'6:B8¹L6w#,פ#)\'<6ACXtTixctVx^ſ]c&sdk"nn7QBw*o'<Ɩ"rz<Z5):M*KVBnAN)r*ˌ`솭џ)k1fAi%<Tbu;]ۻr^ȫw|2/z`sjE7Va6!׶RG;3ןr&@LTb5 V['9I2jZX9*hlk =hJ/6 RGW]rb 4;0yRd~wMbaMٝ6XMqWQӨ8SD霉Kлl#3vgCsU)~r%e6n+x '>{.GVdCnWn`>YmO5/+Gi%X b n8#.Vd^Gmabzj2& B&_댂A*Tt6+7A[g(&ޥF,4}W@kN9]#=Sےjn[[*[$\ @v n_ڈbtQ1G\ay#Ȥz"#8v׎ث;~Pr@_vM%+[7rue^Nq| XciOGd4hƗ2hy&W`U~򱱃V6l|#Z+O O]l?\Q2 &&џEOUpdݐx6 ~ePxv' U-ٯ݊1RlQO3O|&U>0%Kb2J3_^-V R樂._C8˘=fP<>9'I $vF\ϛZx@uO*xjrWk&c3tfOeǠrxTCq:wes E e5.ijѲN,?zZK߀\o81ͽZmXޛ~PKHBI=&;[c~n*usu 62LNC:D ēB`lKXQt3b]퍭wkW951[JGM+;B̓}uC*01/xXx틢Qɉ3.g3Rc:00' xK?e seI?ҋ=Mҹw @n7ZĮ(ޞ(0BS+6c s~|ɍ*G8&ާm>ͺN-+׵%@I!$U*XnEO|+rY˞LdDnq_<HC![ pB\Mr.d|pI1֮yo\+%eZ^&ep':QdKWZ΋U5Ux.~'.*Όgͭ.#O!崺JmM6+29J#"qҢ<׫jq,c!WCKZevSjtNcclu}\l}Fl<>i5Vd4ybO3$L&=Q~D~fYNI2v~ޣѳ@lC\ %}چ4z+MFb=K J@d`^R֬{MDX{z@c*TYx:ׅlϚz\'%vr{*-gxLԠ't(Vc^6DcUmBEݻ^EKD/P,LKZ-LRmQ! n_x4v]3ctq[~6=vePg]kb8 DZiF.۵c~/JvSj:ZBM9cxYl@)[wl?;zkkoŹv,C.FD??f,:^(:8' N>+q +`7=7O'X )3\#ذL]G:Qij3-GT]b2h}Kg.O)lt iS?"Gu TV\?a3B1@Q=̩.XJgCdVԒpK /('6D;SjuH)[s󉖛WVx^%3Ʀ8Aq+xe!AՕ5k%+wt|7aĵ4pNӪ"ˁ.nn"z#0;=i (M~uvlO-Qu&Q)KЄᘘ-1VxLe*<*b-=+x>2آk~qc쓴~ޘ~voʑ4o(GENeh60<͒" ?^ AS~|u8h ZqB1 z%~u3^BPZ |#B[G8:~wgtK}LrkM=4rVE&Ҙ>x!j ƒΝ0JX9}lEhOR1&bmn|)󏜪ޖ nF~eT6 cVĻLg!fkE vZm pL=xfg~1\ٞMwn";%WoX[xzƒC/KM׽S3?di+(G9^0/V]DŽ Ҟdzy߽PwgѸl" U@)+0eu37DQ *9}P>̓nj#%e@ s[JʴHVg0ݱZ[tEHÍNQWȱ,^l]p8 LT~KJ]UL4giW>mȊO:USx+^*B2mLWcz'MZ|BZyIRdhu&>MGwú]#pd^KʣD:ˣYgZL 9aduчў y/?QCqx yH endstream endobj 17 0 obj<> endobj 18 0 obj<> endobj 19 0 obj[877 0 0 0 0 0 569 569 569 569 569 569 569 569 569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 508 0 0 0 0 0 323 0 0 0 0 631 569 0 0 0 453] endobj 20 0 obj<> endobj 21 0 obj<>stream xSi'xE(@ig@P@]h? C hhw Ġ&7V K>N3{65Ng#;Wk_ź°"M79|p3'JNPv[SɣuUzӑkv%ͤ~͈ҵ9׷F/J*ZW `qtv(*#Anzǹ_XypcCߓ[[mA"Aա,%uR%+=gA=9I(w&uSf 2Eu{B6\6"R%<}ܸmqM^esR>EmV8&zr,sݯ: O |F9F}W;ert(==-?d#4fHEF0:;647ZЦHE 32[}ib;Hm2^au0꺵eyK+PM "|>[شL>-RTQS#b^Y1tʡ؞Sr6"VJ\H}54K:F.( H+9A{㕳 ˨%\PԥV/TwCi*lU xza y"-W oJm) f}~h%"c7釤Bz5y)Kj)m(5q8;^.Ɯ·K9%8F/+%хS1gr7ή\1[ ,+"jVe2p~cB[#[3FST; 뻳]0r؞uUꥺ]ǑMgAw^q禮tnċ{mռk^O@wmָS&NL%k&|4̲g#w\Qў!~F\؁DTl(IGL].I9 n×# @4aIuol< +)oW1:q}lQFS{d?j3.2<|/5;Ⓑ_c;})35ʻFSv^zi{}/om %2o50Ź()}fc*Gs:ĝ1lQ/iνȴSЍ HӺaJJR>Vi܆q_Wzk|oyyMdۭ3Ax8NPԽ0Y^c//|‡CBr!%I٭ƻHYL[bH*ke֞g㿡ωҿx %Imú,<ZsaW##2Ε; 39teJt= s--{y4՗>Z4v;n{=zb=ar 3ej OJYqK4'4/~pڦ\Z@&mM|GyKc, 6 'e]]jzpB'  ~xŦxrvﺪW5Ws_TI~6;Mg$eJ>~9tpV_bJǠg558q/u !2s<ى݃@ŎCw~mwl:ή=i~c'oF^PAS>Co)WqJ6y$O'܍4F>N/y :|Þz-/p$^ۈЏ%~ U\CX3% wI˜AZAOyv$jKG"OFDX뼠+"*&K|`Z11߻/?nf[)eTit!>q{Mk8_t :2PLdz}f95h,Ųe/ݦRT# F - qj%_O.*@tiuXh7Yz%KB)Ǒq[mш>ܦ>/[T_#_MI-fOT # x D&zHLm` endstream endobj 22 0 obj<>stream xVn9 W9"juݷ A28@mR"WOBq.@0dXa||D 駃aAc!km,!F'A3AS(EBgr[ 6 };׆?hژx^Iǿ\ L틳\(32ZGsmI 4,䂜P0.O$Xe<M)WD9 ^vii7H:@aCR")!(ȃRV )9<7sɜt $EA*9E8E"k9@uT yb3${'tsJAף]lw V=]w8-BZf4D'^[/V!w )ՀzM9(:~[9i*!YZGZ+rxƣl V&qzXqO[&U[5p+&v"y\^a jL 9~|o_aY b " up:uͦIHuՇ/製w@K%t紫!L/ ʲEQCGžHRDr6E:cz3 TTs>~R~\2k ]Ԑq9r:uB.M?'s d,0LcKz.l9qG6;.Rk:wi}|[~Z>,5uweԹ+:0qDǏz;ގlɛOj ֱקyUTZL ʼg8H{o#|=|]$1sT}YtR=ՒDO'-]>6։\O4M!5D1'H TS?o vx5IZ'=rI&=B?ˎZ endstream endobj 23 0 obj<>stream 2007-11-05T19:19:59+01:00 2007-11-05T19:19:59+01:00 2007-11-05T19:19:59+01:00 TeX application/pdf uuid:a12f793c-0b85-42d7-919c-24311cd1b932 uuid:a14ad1ff-2bb3-4e4d-9800-b58819ce74db MiKTeX pdfTeX-1.30.6 endstream endobj xref 0 24 0000000004 65535 f 0000000016 00000 n 0000000076 00000 n 0000000160 00000 n 0000000000 00000 f 0000000294 00000 n 0000000398 00000 n 0000000475 00000 n 0000000617 00000 n 0000000786 00000 n 0000001038 00000 n 0000001241 00000 n 0000004448 00000 n 0000004592 00000 n 0000004816 00000 n 0000005015 00000 n 0000005238 00000 n 0000010390 00000 n 0000010533 00000 n 0000010741 00000 n 0000010934 00000 n 0000011170 00000 n 0000015265 00000 n 0000016308 00000 n trailer <<375ACAD24476E348A1A9D7849A609BDF>]>> startxref 19664 %%EOF dot2tex-2.9.0/docs/img/ex1comb.png0000666000000000000000000005311312316606077015030 0ustar 00000000000000PNG  IHDR, pHYsnu> IDATxw@>>; `a*M@ŠQ1Mn㽩7hbc  "aA@Ez[~Mb(;3>s=gLbߛBJr\V X5H$ruuAr8,Y,  {{{. BH$jZ"X,4`1@hG"r$D"w^MMMmmL&S*j@H$$bQ(:NiZF@ ( g0SN g0T*LJ0LRT"B IRJ5ڑH$LL&+...444,,Nh44m"=1 ޽{555}}}( Ǔ䈈(F9B FQT*JPd2D244JKKjJ"ɾ3gLMMuwwp*7 bܹsuuu]]] 1ڝ b1*))~ ў<|;^]]}s544@bbbÃ@kkkmmjjj L={ŋ-[FP&+++SH￧;99@$/_~IXl0 ~iPP(*22wmm-| ƒ.Z\H$ҪU%3WUU=s4 B/^]Ruuuܹs֬Y$ Å>|X*:׮]KRArڕ+WD"`kѨT*;::v1sL"L#SFk͙֭3'''t)$lΝ{EJ`*7[lqss;~ieee?94WjǑhػwoPP=xH${uuK/DPVZuFB۵kW@@?rȘCBחoܸiڵ%%%Zn0ܹ3m44gg(**7ou1dmSh gϞL'|"[ D"g&$$ Ȕ~}T*Blp~ySNƢPEHlT b\.7??Zh!yn߾m4KRBΝڇ֮] ````iihE 8{lh۾sNpgG,XB444b/ __mN gӐ`0z{{O?Tp8܆ lCRi )ShǏPy<ٳ {N}vHHϷik4W^yBmܸ1nݺf]\\mvG"lW^eXuuu+;wby yyyx<>88x``6Gm64xba9rLJ Bh,(( 111&N۵k Z`cyyy &!!h߾}; Zdɣ_lBb822ť6 b 650>z]ǣ]"Yݶ~A}zzzh4ZBBАL?eY]]]!))Wa}xxxƌT*x7h'lgjh_|F9sV䞛 /s &9{l9Qsa_{5CiЉ+].ϙ3B4446lOHRiRRljjrx׬YC .\`2MknnHMMrd=@8}GP[[pB644tttņ 0̙3g܇bSO=@ ^~~~, .RivZvvzz b0V{mm-L&`r뎤@ xxxXwg޸q#B1LѺe2N leQ ^-(*((HT[v2 _ٖh42 dV+*577C6Hן|ڵ  hQ(4M{{;HM&Sgg'xxxl߾֭[СCϟ7 PlcI  {g h׃Μ9rʸիW=6ܽ{7&&F,gf\… kjj._l ӧ[[[:$ a]?/ cʕV_TTTܸqphT_~b-[ l𺢢L&pY"3Hsqq1DZ`}Ɍyyy8nӦMPT*W\BJKKtdvm\.@P0~ϟ`0l%d2b {+%K 38{ېޠM]Ѥ#oޭx<ȦT*,X@ ~'Knoo "F 3Oa(f+7뢳ӓd:<o…(j׮]&ڐ9qqcR{= f._|=Ǡ]P[X,g}lն<"8䔘:nϞ=$i̙|>ߖߓ^}ǎD"qܹ-k4w}Yfٵu:޽{ SAVC ϷktJ766lZ. cEh ܼٛy.,J_z%޽{vTa |?[,gR~g''':w^&kllR-ZfGQ*}Ba0﷯ӧOG ]]]E1 W\  ]kP4yfzŋ>>>^nApwy>6]:%%&$$>|f+ _`ٳǮ?TTT̚5 ͘1ѣ#hg-ڡBt:7Ux3-~M0<>pwwK.?L&Yx۷mvﻹAkFrT6555= "k֬BYFQ.߿@fgg{E$UQQn:(vMMM@T*\.;|B-`0x<>+++77W,[e$Oܑ;wqh,++7o&+W˓JVLii~ڵkWTgΜIMM%X,^:t;sL2 Uzzz -iB"Xkv% t~mRRD?裾1z!LpLv̙F啖fl6F3K֣Nkhh8w\II gӦMʚ:u+ &RiKKٳg P(ŋgΜ NRE{___}}}aaaYY@ `IIIYYYqqq...c.BŅfFDDyxxDBj`0rHTWWWQQQ[[קRtzdddFFٳ\.D@ <}+Wzzzt:D{XXXDDDll;HH$ɴt:F pmmmEEE]]DZf0QQQO=8'C򚚚:VZ-qqqa0h4F{yyaX&D" H$H$<ORbZ=88۫jX,  zVMahhݻ<O@X,:`L&db bX,Gi,K$CBBÃhy\Ch4vvvVWWTTTtwwr>/Hpl6p8Hh`0ttt<]Px/!@P hpJP\]]… EEEzr9'@T (byOB:u$xJJJGO[[sss'U;fTVV'''{yyӧOXl( .H *j`Wk8wR%}}} br+ɓ3gU]]]477o۶!3pCPq^[[chr}v[[۬YF+JH$Hxbqq|Gׯwuu͙3bD"B9{lYY٤J52>}:ٷnz$F3g +V*LHH:u*ݿ7t:ݤGLVPP4*w_H믧Bճ^u,;C*={6<<< `W o޼y޼y `0PP7o[f ?BxѨhSSS'<*\vmhhW_U0"(HJe]]ݜ9s,0TǑhG"/ d7Cӝ:u v''']\\,;T0P(N:34ݽbRX,>{l||.g2nnnq~ePARp9 v&1B\tixx8++L&rgR#ZɁ+HBBdT*;6~u:]MMͤG7oΜ9s<5ÍF#d8)呠ݻO?xhgD/_/ytooo77F l;L$#Ǔuw5iJ*((9A|||jGɜ9sL&dMMͤGYf^)@ lkkœj[466VTT<㬊L&e2٤gΜJhԩSz}}}JrTh4:662۽ܥRS\]]ZHHUUUj~2$I~~v{uuukkܹs9[ Aq])))ٓyv v/ӧO+qBpfH4' //O-Z,h4۷ܥRiaa_BBYD <OTNj ̹s炃ccc pٷoܸյpBЁD MpҥE1 s=00O/qQ,tR3`&eW!Hj@Ƃ I9|sbcc,AѵS ]p!11嚱Y$ 7v,|LX7q8e>)`2rssU*UFFy CF8)ǡhNݝ"4b|\.r?uT__߲e˘L<OPL\Tl vZE >>>:2δ \~A''5kXvF{ssSRRF^sp8:n"i}… 8e5^T*ճ>kCxyytuv^~z8>vFӇU;{ooo^^^`` _R^L{{3gBCC-7(Zv 'Oc`0...<_@AGd2aJ6u7773<dvwwO@ ?~\>a#D0]WUU k׮/[2:99Mؽ\,_x9++ C2P(0ncǎH+WF$Ң'HdX][---MMM4-++d&Y\\ G׶+TݻwL6 FY~vp8jM1ۄRܹsgyy̙3 CAAlRcsvUUU%J}޽{?0q B$''Vb M&U۝%I||}5OOO;;;a5.YF*N>}߾}c+nxyy!Ȯ.o[zgF NF`@H$"H4 E2Lnnn}Y``~<bZ%/MhA!FozY ťGӍPEn0FcwwwUUUL&Dr\"d2ZRh4fX yxx0e˖yyyz exi4{;D{ggguu@\.V(bX.jZM IDATR1 hwwwg2+Wd֥F3̞^or7 ------eeeݫp8 2LD"jD" R&ѡqqqaaax<ޒ# czcX,fhA"FH$ొHNNNQQQaaa!!!~}5Kx$J޽{ԩ/ f\n@@@TTTTT@pssCP "$@ n5Lд$ Baݻw꺻 !IIIK.PݳL~h7w9uԥKZ`p8~~~ёD" D>v@  JJJjkk{zzڌF#D{rrҥK-m[.wvvVVV׼\r嵵W\9vXww7 MHHruuR> :RSSS]]]RR$JlW\;W>3w-//K҇Ph4rL&xUUUMMM2=)))+++66 JZzj0 ;v5kFpAAAok 6(?NNNX,622߯tpj׭[G"M6/򩧞Rx<>88Ǎ7B!|{}'qqq M2e֭0Ѯh/_N&mT޽;00Z_.[,//o``z3Z ouqqy zw+h4]vq\4bŊAKC&]re^^^X,u֭.z709 txX,W_}gNP?~<22;v(J8d{tǏ*of``9roj5rN_[Zz… fB 4m֭-R_Q?\.7W=vKן={6)) @0?P$r|fgg+ s5_p]K]&{NNNt:kll)b}Ǟ8.==\"wTyf `06mlC>C-[%{챴܍Fcoooff&1cƵk26l@ """._<6srrįjɻXd EEE6N`[n~رc`(--Κ]d'd۶m z~wJ5Ν;D"gh43{ $L܎=:GԩSo`8z(OƩ,Μ9l"H?`f8nǎck2ry󦓓-//wy""dY7out:޵&88bY|r iiiX,V59 \fF{RDP+VoxCCCX,v68U> g}.k4@+f6i] l"7e+rW՛7oF oo8~@ L6mZ-rhf?c P.)RԩSd2ǣ]TСC6$w /`0v~28.55XvZ<?.>}IV `FFyx;]WWWXXpBG;fX/RcccaahU*4ߘ/_:u͍-  6]paTyd ¼'_~exxxӦM{pJ؆ dFUB4K^xiGP6m?X,e~ 9y/YphxxxXikk;cQ!x{{geeݾ}S}}}t:pt[^re 9_Iyye˨T ޳gSHh7ܻFc\\0H F Bׂwww8p`ɒ%oVVVUU`J^WWGm08;;XCH@Ѡt}󎤮ٺoÇ8pr={v``0aX|<n JZw\H$*?6˽HH$D"Nx>^OѸ\5$%%D"ȽB!>>dT{ߙ Q444ܺu "ɺ8~\.Oꫯvww}ϝ$i L`0 G;>sLccc~~~cccnh4{03?"c0=p8@IIIPPLh4n݂^CCCFR-_dQ`ࡡ!@GOKKC111OӧO' &wﶶ6&i2 b1Lpܹ133`. =777h4ԥx.<w?>={#%%E tttG;`0Vf3f_~ZwbXN8}v']H񜝝G%R?|y󆇇+++kjjRgii)BӦM+--ݴiW_}5cƌzJPvi D śOg,룏> f̙4dL?X|XfB8U("H ((J1cosʕ?ƍ,XR|||BBBotWApF0ud&]7<$K~HzYY֭[ÿ;Xk*Ǐ+*F}*((`YD"yGB !d:rV- ü;WHBCC eˇS`ѢE^^^L&366֪c|>СCQQQ}A];痗߼yph 9rdԩO=i?UTT0xGʕc.@ F,H>whd]oٲGNKII1oŋWWW÷0:BCBBBlstt߿_\\S{NNNDDŋ>Foڴ B}rHtokk[nh~0  _4χZ}Q}3LX,' bÆ v<*0nXSe2ٺuG='')$$d;L&<J˹\۷p9>3}}}111x?榠/cmܡ?>((ý<^HWgXd2o:8n˖-L5wAg;gբ;911D.ZI8"w!f1,,,F"##ƷkFoA \Y wh /@Y7oRwmsRsQ歼w ˯y ƻ;V(ʽ{BRRR[yٳ*Ł bviSR|_pܹx} |?Z_]\\0^ Ӟ^NBP]]os\<O$!Fi:p@ZZ3a6l(**N[~= 2{02J.߾};777??xx}llldd3\]]xdUTTܼyshh=SW7oł@3x޽{UUU=@HHHXdVjjjlJ!Ο?ĉ7oxyz!!!SNxH PHҞƲ6^HLLL\tizz:Ͷ})̦&;F#ɺKJJ O@H$A @H$L& d>j5 J %x<&?}Μ9Zڵkֵa[;:: 655|4FҎx,رc}pp͖1~`?~JR>3ȝ̜9Ν;g4T*uwwr6m͛7-ٯZdrO cLјgBPx<8"H[tV=s%id]P?c 6}iWjD"R;III...yyyb BJ,crg0 ,w%_===P(0Q:wܒ T|v(qgLNkN;::@|Djii/?^^^gϞBC 8>>ӧO Bю``ʖCq Lh B@@D;_`AMMMSSeh H0SBI lxA,;D"333![/ >00`ݞ䞘sU"D"9sŋK(J$h'C݃/@0<<>)w,tJaaar7oD:r544 G+Nd,\Q}}=%ؙcccJKK>PPWWG&9Τ֡0244Ν;pNR+%mgrG<… v2)hzkk|:vGܹslǍF#|ԞW}!55V!ggO&&&EooT* POF@@@\\ܽ{`ꢫKPJ,Z @ PT~~~*4YlL&/jX7Hiӂrrr HI*NQ̜9:tطܧMwysyj777X#H{̙3 ͕x ¤ܟrZbEww7Ҡ\.oii h+P(˗ݾ}, J ¤-rvv>xY.t:;Nc-,YJZNw5({pppRRReeeqqYXVVf2)S=l; zZo6ӽ{P(dHhߴiRٔ^>pB:ܡ8***??a)ݱARL#AlllXXةSU.wttp\ Tu3+W=zt'""bRXtcƐj300g%w2~vtiT<111 -(뛚\b2FE{CCd7S[IDATXb &믿xSNr8)1`ڵ %;;{hh`VTTdy8ܹ\… kkkO81r ONWUU5Y`HMMW'v2l1Y{KK_|B꫑Ci۶maaa&iǎ#?;44iLL̡Cjuwwyx'Ɔȃj4Q% -I;`ԧ _~Wd2 @uT,\`0꫽#YPX5OMMꫯTBNpee%N ǃŋNNNr|;;;[ҋgffD"o$]*:>N^zx<~we0\ :$H$2++ >:(aJ%ZJP( ŢhFL 5k֐GiW("]h42 q-YaNhhh(++D<`0h4jF`@H$(J4d2}||drhh)S|||8nF{ww@]]!|^jюBhB*{{{S(Ш(oooS#d2D{ LFh4! zyyh7774@ T*J<O,jhZŅbM2}2eQڇHBRt:F4 ͆8FD"dCCC]TBD?Tr8snrW*UUUjD"dhHh=% T*訮>ǓZkڴiV$B8{3g5 DP(F)S|}}9RKL&S*!|>_PhZӧZ*::`$]h4D܂7nj*dɒsTVV;w\{{{^:**  b4ɓ' 4 NȘ>}zxx> ª*^㓞f͚n7gffBvS4mٲeǏH$pk0?Ӱ0됐/]!t+N<)JWWTT|Gzܹsl]ۓkjjVZEPDbJJʞ={4%`4R͛7_{5Bpppvv6x0UUU˖-#$)55 ׯ_W ~MT: CkkSRR.]dyogO>Ϛ5̙32an0yE ,XpUߠ^ooo׿̙s5.wH_PCT`0yA&-[VVVf4]B/ A011ѣ6$g}FQ(+Wv{OOʕ+X_mQ͛7322D#Gt:jkҥX,6 `V>ׯ_OKK#Ǐ[mWuuu(*33UjO8b@V1R,_VZoX,O>jv&wNw1:N"o>uQYY YdffvvvȵZCh4LU* ,::@ZnP(>c6'Hb }L&۲e @<cF?33FO:O*nݺBĴhu:ݧ~+**vDD"%&&4??F677FϰX lyWh4;vBDEE9ڷn݊b.] %<بܫ]]]_nrdB;6TTTp8c/qH5k֠-[ [;Nj Ɂ  g͚?mmx$ sx3f믿>xN[~=۷o?E{{/J-))իWP]v9<镕% ,:< Xxc``{֭fuL6ᔖZ}$+b];::ܹ#!_pԚLJJrqqvYYdMMMH$a^cՕJzꬱBYW^yeoD"yꩧtoi^8Sss^r0r'~~~2l U.̋V2f;(///p8 pB$}}}%Ioogv`4󋊊0 bVxbOOuL$ >F%6w\"m6࠹Y,X>ڋ9kZ===/rLL̢Emۖm[P*]]]V]@;L&j:##gҥ}nݛ7o޿?|5ry{{5gw\y]ZVoٲeƌ( É'DbGG|6 suu5 Šd2Vb`ut$cǎ琐^/HII÷M) k4b|X wZSS3}tV.h4۷o駟~'N}x<޺Vt:2} 5'Nڻ7|Ι)mnMݜŏ>$LAaYA?VZYoPHsYimSۇ-__iw<.o?ĺ,x #""RRRzhr w \.wB*jb@ J*JEDBn QlC>77;堣СCbkKZ/= X5kh4[ocp ,,b,g#,JGxY,DN.kttL&{N <nFa0nRs^>|h\ÿEaasn߾ ܹ&99 t:#t:]rrrQQ |?:N2Lយ7o{dƼq`n:"a>y䢱AP[fddf'&&d0 }hhNoڴivv**&&&00+4V l<ի8ԔH$Zv^\\ B{r]r*&888&&?.˗/ BVũT*;Qp8544H VVVjc333l6;88xlllnZ= ŋ~pǔ}`[Bp8HMMGt655 2IQSS-[״RAzɓ'O'N HIFxE'TČF={P=qoBq޼y# q XhYY R4""butt,z _ "99B\t#~dd$--B|?󫯯JLLR w׽|>D">}K\.D"D{Euww3gx˗/|>%%%?vIIINLLx]PT R]]Eo߾`׮]^Wk׮anuuu?K pjVc0ð@ x?APhhhGGgQ[j> AZvz3WTT0̪*RE"l߾AQ/l6??88vffϻl/_ܶm cccK<>|M"6lp]]]t:B9xwx^ v=P HllqxGt:߽{@R9VFX&:ufČO⤖r: EѴrZ?~,..f2D"1++ٳg8ykNS.tEnֶ;L92L&w ꩄpLOOWUUCoܸg>44޽{ܷoɄaFegg766~[Rp:իW>RBTTTvvvNNNHHıV1NZ~ww퉉(vJ555511ӃN"D"ю;rrr\.vPK}CPH$Ǐk49DY,Vlllhh(FQtڵQ(Apl6fX R4L2lppP.+JNpRRR233=>Xv\622ю Ng111ׯgX"v;6lX~:33c4e2BP*zBq̨(_=>}P(޿=<66P(RL&0@b1EQ..0ʪ EX,>|lTMZNt Aaaa0 s\ADbPPPXXtzfytttzzz~~^FL(Nb0  H #""`>%4IENDB`dot2tex-2.9.0/docs/img/ex1def.png0000666000000000000000000002412712316606077014651 0ustar 00000000000000PNG  IHDR$d[ pHYsnu>tEXtSoftwareAFPL Ghostscript 8.53٩q IDATx?ǹ"'0ssNHsChB'ԁ>BRbRnÑ jCnDzf9WbXr0=Xʯ@A40uUUcB(s97;̭BnkTU4Mu]1yQ\}뺦iFDJvIQ:| RJw0 !aK? $VC PEUUEQ&*u3; ^DQDZ2'}H=N~=[h(J$c~u+)t:k-jy_q$1_Ui6Mg9OӴkc\|NdBdYXס,&gIC1>Hy_s[8HH+e٤il 9/rX"oe45WGJdIR%pOӴm[C3G]IhMd@bm5ڱ)gi !A۶& _\jV,u}ߧiv|ds XoӶ6qx$M,eY}E;os Ymh7m۪ Q=9Bb{u-EԇIT{9hCMp{fm[\'x<_۶&,Lw:mO*-(V\~N"v$8}OfefLIpbhU cKOU.9Gs<??[/ЬFQD*gQTeU*EɸZ| dVݧ,K( Ȳb̪H)Ѹ|Xׯr X@1i5N'O838SPtι /_0_ .ZYq!'(#7 Zti>>>򊾼gqމM sJmW_Hܷ `>#. by~kEݕĚ$ H CXh3N+` CuVvh` Z]: naYVd\ݤi4ZĊCaekEW+*n&-"jka /ROo-5v1dPit]݅ԶX4g8xI5Lw_ T1!;Dgwʲ:LB6pQŨ+M`|=XX/}czLKfbub3$sKf6l{DGM6&'~΍}ˁEb:+1چyq$Ic֊mVߵB uB ZUJy! N"y㏅IW2Ʌ}::qL.]uAbFQ)I&mj8$h.s^vR5HK\(@c1Wpb%sL'|z7^c˲gXm[5H$(+v PSL眧iTIM ɞB,vu_*4rXW|>|y{m6˲P1Bb]'=9 j۶C$1 n+(ɖs!\J)pj0 UU5?<.8c+&nN4ڙrBЮXad_uM4jUUEM.4FAp`^8 0t'Z`ID9Wgp~ϛ}TVUepP$VWl$[XѽYM,Cbui^__23ohá2b̌YR.wp:v7Xqp8!ڧ( ,E_!t[n%X-v8Z]5 2TXXx|`)HOۙUYmu \mzȗ/__~c,MSGe Uؑ}1v<MEpM6]Z_T5|-«gz]0E 5TEBIUUsT4B,=HhU}+h4"OX$V;\ Z'@qVP7"VͧjYt%DQqɣ@bfe` Z@ZVO4fҬ4m%JiV/R!z4hیU@0+Bb5 kbEJb%k zEb5 u̕k`E:&m۟,9Z_wj[K+fR+1֩K J,VeP}"|5S~Ab5j~V樧IB:Wĺ9]y"n4I>EbiVx}ĺ-Ӭĺ-Ӭ' ]C$ Q#!7ɪQ]g+u+b{$V1Xx X7Abuͬ2%,+ar ~Ye˦ӭc~ 뿺Z Y~u >n X-1> XWL1 @b]VG7Xk2 ׯ_,KV EdYVnWUԕ/n+uMjed!$ըz.CĺY+gë*#Vzo\I XGݵnix">Vc<^X*OwAb-%^ãl#8^.gu?Y+K9Fb}ݘU-$ֻQXijw0Mb:e,Cuքm|yHQr^zjj*K7xu dYwx,_IK:]x(Hb]jV} L.NjRB$Et]6a;- ˺Ь !vUPyUP^WXVU?uW!=UU9V(Vcxj%u7UUUooo +*~.V ~o~]yK2;۷o+Jbf|~JedYEkV*$6IdYf{I,4"N$s1YV_-WUBS*s޸j{k4 Nߪm3)Q5| qQ]P^9 Xdu`Nj%pJY :F_]!Dhu  uE ιڞE9 MWUcqW ΐ7%Nπ(x=AnRݜ&>XQLpcў-p`k2HdI)˲=kbm( <1k-jWm(=X,mۦi:,9iumxHs>fBdY1 TJi{,kYMΒ0g3#Y֥ȮJp0;r]|>.Ee}`W9Ru{ju8.ocQooon&Z>Ƿ7LKT[`#(]ƦiZ[qaյ"'u;4}EYKŪ''ukT6"wEb*Fr΍szg:@rR 8pu>!VP*ʲtH)уlp8}  ?u/sRwS$16&BC cزO01'}/ڶ-hjp`'XXyN)K vc~۶K*-v2 L  ?]}ߓYu> >x{O>@uy&|~0 Xz&K>U XZ8>U5r7m!SX*q|@`S譓Yu)%p<ןbUZz}}}{{{yyyc Ѳbj8b=)˲˲ᠦ: kkEe8էө:Cp8ygOj;I~v%֪*5>u+]^hq졢~fFnKo:H6;3|YөixZM!Ռ\-pnw ܢ(V9| EGEurܽ^c=/z<(,OT/G8xu>RBa'l%pacSw-ƴ2#u٨x,"s_2B+c:_rXc"x<Lh ,)%^(pUWICoO=Qt:GQiv>+J N2/kIqSsX]sBoi<"g~bM~1p Ij;>e  D-K*|+Fڇaԇ_࣑RUբ_d\i4^y]x8N$1zjQ@Ū$O5 &8β|엸pm{hz[Y}k#gq7?c2u+VTbV\B}W˗/p1 Lck0Oup Yvc]84M)g1axYn'^s-'p3͞j<糁1yc]NPg%3ՓV7.ϊBTUu` =beoD?5#0QgcEbeqz`mn0 m*(54h$qq״mqͯhvW|u]/N?OPV /KXׇiȅ}Ieit wGW\g;y/{"Ϙeͅ\ػpIp xvBsaI1I&mjӶT g+\\G)\'gQ>J2/wS.ƸdcO?>-L6gq?nrN!wW۳hXW=_.5!P+Bb]vkxt;Xţĺ:X]z `$ՑRzp+9 ,JdYK]i^__#e]ιP#n, $MpT!C=ePkőe%n& ^fyzHPj8q 62yԂ&׻:cHQY&7HDQd޸v].2X2S}+#ZAa8Ud+j18j$ILư 2K]]XGyiuH|Fbu(ʲDI/#׵ocIH'AU ف6M4ZŒs9?#7N.aXkO cBιڜ H뚦1sUEJ ڕR:#ZD 7Z-.FQzxmXBEB5X 5yJU |'>.K8 h^Hlhx"DZ]ĺMEq,xͶgƿ%fsFҶm24M뺶=ƥg-78Xq9yGۑ=U1%u~!W-'+0 o|pιYjEr5I@#˲fU"X| dVݧ,K( Ȳb̪H)Ѹ|PӶ^Hu[j1ƤRH"6?ص&`{ Z ӫvBOByr^;mC'WI(>+N%AGK fqQuϴx(bŽLtxB BUzYaEh+8jYa#gr'c/W`LRIUU Dγ:lkLyXY,C]@y0^Mр g(a,ǃ9pb" @ vL~>ĊIqI(.k$>P+> stream xڵUMO1 ϯ=LTz+ qK~m3 "fγ<%Q= Za|h\p9{Y=*8ȷ"[laDK=JJE 4**u/F^BR 7_c qWI}c;LJy25)CTʶ0'$'U"ҥYΡDUAQȼ|!%G Tʑ~%gŴu[ko%l`\ MZе<˭:~!s2<8LeFK|rA(7=J$ó6S}^oNFaBbR~Ө79O> endobj 1 0 obj << /Font << /F11 6 0 R /F7 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 8 0 obj << /Length1 769 /Length2 1402 /Length3 532 /Length 1967 /Filter /FlateDecode >> stream xUiTѲ/ Pd' RB 0d L ,V.(E{rT@ZPD,", \_=3>=|9>҅ dXX'[0FFnB@`7<\DamI<p$B(,LLIv Bd# y/́@Dbx}y"10Zax q   ޗXPLPj x b^0:X,ey4?u|'D(|e7WZ46$@.sW0f#@ ãDR̅q l-ED @.(@1k%t@#IBa!fy3mHLX$Q.38ޒ`XQ<@숸"rDB!(@V ɂ`߅9҈K5Sr Utq}ZQ%޹vhjEYqEo.'tKɿ4<^pNS8`!mJBߋgD%[C%Y׾n:C3x@Us@lm)?UơtL8kӒ"2T.2_mTU):R{C" ¬TR(5J-ې6fXTZyTSAw]m7(C.G;9̶92'w92N1"!35] KC\ 3BEϸ8{8?mhL\>kh2[!mӘ]2jiA0&HFU:+[=Ť3iUikdxN޶ޗCïgO8e!nngP%ߺbB=}FEvSf{<]7i>js/Dx>u\AleL@jԏ榎DvөYF,d`jN\Q]8iuqgJraMy5$jͫ>?b9ʼ@QJ غݤguT%Kw}>N O!%;6 >_pվyǑF]^=jS"PV25@TN9Jg23Ha%){y4•R_?(w髏` Պ\nuIYq4F=kxpsNѥq3 3gOw_<bn6jQ]<>rC_bbm6F|RƬU*Đ\|ߚbWE1Xw깙D6 8lIgy6,؜ɂ9,~54{zR+e1=;%ogi>qjgXsJu Jy͙t̹Q;9 <C.QT*EiɎQ'yԏP>g{W3A@Sb>?`prZ#,dss_cHZiG/ϭq1tƘqV}nLjX\H愿nӓ=i6[1{tsn~֗~vRʀ44EZ]/'(~{ua^Vhj"T{`o׋Զ -?Sou]nkl&+7(7vF19@tչ;L_ן% 9V>\$Z:Z$f_ft_M)V=xÆLYz#Tie3nj+&2?pуٹO!4+[.ҊC }{7i%uNiSm~)ڡwr2"Y50̬u7FzƯ-@la$o endstream endobj 9 0 obj << /Type /Font /Subtype /Type1 /Encoding 11 0 R /FirstChar 49 /LastChar 51 /Widths 12 0 R /BaseFont /NZWOQP+CMR7 /FontDescriptor 7 0 R >> endobj 7 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /NZWOQP+CMR7 /ItalicAngle 0 /StemV 79 /XHeight 431 /FontBBox [-27 -250 1122 750] /Flags 4 /CharSet (/one/two/three) /FontFile 8 0 R >> endobj 12 0 obj [569 569 569 ] endobj 11 0 obj << /Type /Encoding /Differences [ 0 /.notdef 49/one/two/three 52/.notdef] >> endobj 5 0 obj << /Length1 748 /Length2 1127 /Length3 532 /Length 1678 /Filter /FlateDecode >> stream xRkTSWUFBlj6BG@3H(rKrozA*XqXU`ZC>Z5hT .lWG)sso=J!MC .+ARi3Ca0pXA VABA^x#{ >t8&[sZG H֒J0%, h@tG:a<X.@T5* JCzRیL& EBam0ϐ5\h)3N"V'`H1X8) !zj J1׋zG%B*&(4[ ߌv<\no)F)g`=sIp8,K4`TA x|oqE&DdY\lTfAҙ-@鹒a+S?!03dyxOrr>gzQb某NUi `%܉)E;/9W\yچxtG[ί"`hm;9g#5GcC*~8۔%cr0sdxL|Ϫ{uOrAF͉>ǻvNIzlZTv6A3iuJ,j]ߞvoQPP&s˛A{=wH.]}{a#XK7n>w)}Kqhl*o%\wac=_}AZM>26XLT2n|*} 7AffӱDWbnۀ٧G NpgcVycڒoK7`$1`![짋-xISw[k9WZodjH*ju:KD @|P8n^[Z#>wMz/ͱyK֐|u֚'s#jS2otek $.If>YT-{Ɲs8饸ᒪ /'"f^f$_}N/Ha-P?>k|7/JLhgG^K?Nm{4]✩#]!z[3:Pm}~oܱU~-~ 9YMnqtB[Ȁ[nfgmKgtZW'!O~UY7Ua4-[(vsv|sxXW%K'5;ymk#e9w'! 7M՚]?,iOCﶵNv sT2>vŔ}7Ϲ;qQO Pj`N`ZFUz endstream endobj 6 0 obj << /Type /Font /Subtype /Type1 /Encoding 13 0 R /FirstChar 97 /LastChar 97 /Widths 14 0 R /BaseFont /RTJSNN+CMMI10 /FontDescriptor 4 0 R >> endobj 4 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /RTJSNN+CMMI10 /ItalicAngle -14.04 /StemV 72 /XHeight 431 /FontBBox [-32 -250 1048 750] /Flags 4 /CharSet (/a) /FontFile 5 0 R >> endobj 14 0 obj [529 ] endobj 13 0 obj << /Type /Encoding /Differences [ 0 /.notdef 97/a 98/.notdef] >> endobj 10 0 obj << /Type /Pages /Count 1 /Kids [2 0 R] >> endobj 15 0 obj << /Type /Catalog /Pages 10 0 R >> endobj 16 0 obj << /Producer (MiKTeX pdfTeX-1.30.6) /Creator (TeX) /CreationDate (D:20061009212631+02'00') /PTEX.Fullbanner (This is pdfTeX, Version 3.141592-1.30.6 (MiKTeX 2.5.2329)) >> endobj xref 0 17 0000000000 65535 f 0000000953 00000 n 0000000849 00000 n 0000000015 00000 n 0000005550 00000 n 0000003598 00000 n 0000005395 00000 n 0000003270 00000 n 0000001031 00000 n 0000003117 00000 n 0000005853 00000 n 0000003505 00000 n 0000003474 00000 n 0000005772 00000 n 0000005749 00000 n 0000005911 00000 n 0000005962 00000 n trailer << /Size 17 /Root 15 0 R /Info 16 0 R /ID [ ] >> startxref 6149 %%EOF dot2tex-2.9.0/docs/img/ex1gstyle.png0000666000000000000000000002202212316606077015412 0ustar 00000000000000PNG  IHDRr9W: pHYsnu> IDATxy\L2I AI PTкJbmZ^[k֭h]BQ[ @ @c˵nE89'sΜ,^毚X\QQ]UU&H?8 jĈt:fh4>O"0>Ν;R=444((ˋbYXXP(Я';;ƍiii0 -^xܹnnn}iWo*))H"cbbnݺ֦N.]v B'Oh^Z[[_tKK%K;wEwL&6lrdIRSSkGGݻYhQNNJ2't۷og2f5))ՕH$N<Ν;JIh4uuuu VFm62,rI} <<J3ظdpz*VVV...iii&A͛7 }MHII>|;}Lknn3g^wcDl߾666 &}>}ڄ*0"x5yÇO? ~ЛJJJD"1>ǏhZ7sݼyL& X?1ctvv;\bLǏP('C 5hj>c@0|77ԧ] Уu!dvvvx/:(,, A_vڽ{?7mmmm{L} `FQN3CvVr\.ϟѣG0 muΜ9VVVRt DGGS(ja{.o0L+**H$;cNoۋ⁁F,#RTOOOLfLoAЦML@_fҥK0 Ϛ5i[#{ 2-,,qwwokk{u#cts΅axǎŅ`<_wmkoo hժU.أD:`0RRR_pT*1A_085!5>|;wLT*7oAoV{{.3؁L6 A_^^nRMV8p`-[:B2V\I$---7nj < ooDh\VQQbkkg#Ne)))9;;?~2(۷ou]UU7ߠ c׮]՚zp^ߖ,Ybii pvv^~}~~>N}9rdҤI|||Cd6ڝϟ?y$Nx7( A}EOD"P(D yٲe}>x7|555)))Bݱ%^^^ `P(CPD"N.Ԩ꺺:FSXXֆ{xxO8\4Ņ6mBg >=_t?ntZ D>G4#Gnذaǎ555 B"Y[[3KңGl 9vAPnn_^s(fkjjpTf;7WO;`YYYbx役… O O>!Hwi͚5 m3ƪROޛO:Q3duIII/|'';3z ++y3gawŋ̙CR{s}tt4E;͞={hΜ9xbG=o0f̘u4waÆfZx-[OMMM eʕFL6u 5:tAH yyy\\\^`.WTT@5fzz;FZ__߇4?'OawO#G3gƎYAAA X3*{~ReffaG ooo f4'J211qʔ)lbX,H4\|!::<<: 5ރ`쬭ɹ~~~~UUUyy9Jhd2M;r?zdL" VP(~۷o|WWW`{{{s8TjX EUUE"N;zh>d2{ٚ\.///B0777--2yK,;v,N +/J 6-nhV=v،3oߞZ[[UL&>u… Y,@;v_~G'Nʌbqllu޽_&T e0$)44ʕ+ئx`!oٲdhg@999۶mrD"qܹҢ?&kRvqq1cZԈݼy3ŢR|AIIɫs~Foo*  tūVa2?BOk'pǪVL&>riV̜6m ˗/QB39r_]]]_~%D7n\^^)www %$$ύn݊#ֆ%KĥK655~F7o#\dKK˯ڌ4WWW[[۾%H}.Xj+D1πX,rʹ\.ӫݻwV^7[eddX[[7uX.S KW^>}yZ ~~~'Nkcc#rsskhhЛ>3ZJ1ƺi&з2&(\opnaJL&sڴi$4ѣG{y===ŵ|g`i…`Ϟ=Fav*8;mڴA5k<|ݝ2ԊO?ԐgGQTTÇ5770e0dee^^҂֒;;;***j_^iiialCy^_]]ېX===U*~ȯ4:{I 6iȑ:ʭGI/_NNNNLLDooΜ9ˍ7b1JBW5̝zꟿcǎV-(( ܼysĈ|IRRҥKuvpp04VWWR:7nz\<|p"V\\ ð@ Gx{]h4~WPPV{ЪYMYhnHP8}t55`aZ^ZV&Mb0{ .6n܈S/ׯ_/++۰aC/F?+׮] HNN@jl6/QQQɷXgϞؚ'2Ѫ}KK˗6ǡ:o<Q__˷̚5 !Zvqǯ\-,{޽իWkZ666AAAn#Bb U^^XQQZo 4i.^-4-99h7n%""/ .d2TVVΙ3D":towvvYGYYY>>>4mΝr]www?m4 vZڹs"lٲ_K:ud:;;VUgAߊcÆ $)88X(AhhhXnL s;~;Vt >|xذat:?,..6h)lOOO lٲ~72ǎ3VT?a۶m{&L@$Ǎ045>>pXa>o< "~ǒÛYfd77Cafŋ'L@"8ŋW 2_uyyy!rkl _xp#`nܸrJG$|~x֭jl4sssw9a+++;;VUUa͡1b!tm=ygΜhiiqtt6lט1c8z}uJKKE"H$*--mhhP*^^^͛5kk5{ݻ766cEJKKBH$jhhH$0 aÆ|ALFS  D"AOd2L\YYpx<ߛoݛè諯ںuVʿXJjhhD]]]r\.T*4c; ƆH$:;;d'Np8\њ5k~g Ca"HNNNNNNhJեP( EVF^LP0 h4ATڵkgiiiHr]{L ]?ڵbؠi :u Pmm-ꭅIaaw{:uuu+ ""@ ={`=~ZV:|𠠠3gLnx ud+ 22&%%0I$… T sce0ӦMtRggal/&hHʗ:hXQgXo  ɽ[ LTNdd$zPU(G.V4(? VA-Zt])'\0/aQّ* l^^%ZzCa-;Z㡉'vvvbG+AvXAN N>G㭭CBBJ%0zA-HnܸyhTQ#ٳg/xV G33J,XpʕFl[.((@=#Ve E||<͖E)ǻZoG3 a{nmm]fͻVNN,YzT*MZUUU\0)s~~~oJ xh@/KPܛҙg닧߬,>wYb}Y;+փ_d(..nnnb988/5Z 0_`bگ%NٳT"ʔ7 Wn۶m߾}#FT6\nccC tzJJȑ# kXr~999UUU...:NTjZZj5ZFaA:;; ' #00] `[Iä_ݻD=BPTWWWG"D"F }T*J2N.TVVYYYQT__LJkcjr݆,ѣGS(oVј:ÇtGG[nt:SH~m",Ǫh֭[G"KKKb;B.oڴ A__Zcݸq#@X|T*5F`0<==FƊ# 6 .\ fzkff&F2 dwAƍMk]]+.**қjuDD G5>֨(2܇6&kkkDbL?F$&&F?P /5&&L& :.,,=1VDbaaxbc_q]?uTnb=|УfJCW\p8h!;w ?7XUU5|pCcEwQSbqիWW*9VN +:$)IDAT~HHLt-XブoRYYYMMMbWC{z8pu:]rr2 ,U.Tٳg+ ~FwBYYY rww}FT eeeg.))AN[nwh'BdNsrrN>} m>/B1bĈqt:#`U(,mYϞ=kTVxJussö&yfla}.^H$y<Ǐ\.axoZXz˗tjLƏAi"wwwuVg5b"xt7T*;w.Af°=?ݻwS(6+M+v@nݺBP(Xǎ?r! ~Ŧ@T\\ Aܶm3n޼A?wy`:N$@cǎ x`f{}dNX{^p 0eʔcǎΝ;+W/fͯhit:ݣG֭[AUxxxBBBII ͛77n8rH-,,-ZՇ)]ק> endobj xref 4 16 0000000016 00000 n 0000000769 00000 n 0000000828 00000 n 0000000951 00000 n 0000001019 00000 n 0000001823 00000 n 0000001965 00000 n 0000002109 00000 n 0000004346 00000 n 0000004538 00000 n 0000004663 00000 n 0000004764 00000 n 0000006943 00000 n 0000007128 00000 n 0000007149 00000 n 0000000616 00000 n trailer <<08BCA62F6366534B9314EBC90913EC12>]>> startxref 0 %%EOF 19 0 obj<>stream xb``e``ZP0p4t B1([J+6drq900;4^iF n0 q endstream endobj 5 0 obj<> endobj 6 0 obj<> endobj 7 0 obj<>/ProcSet[/PDF/Text]>> endobj 8 0 obj<>stream xU=1+"oHD%@AB*>of&=.{<0YX_v>7 |Чcc C6XCt> V;hY"v&g*iw gj}f-"81!,$7WjĆcb.53fCϖsߒ.<4,dPP0$E!*3@!Rl2SiIKX}YD?;ReؐXDPR %%e$?Kp),)2AeQy2an+y: 9hif-eu];VZxAmM'Wbы!䎀8ts*D@#Pv-9iehd+"/'&ͳgR@EܰBXI Wm)k===޼B.{~zyQ[s՗ןO ʱPeb9]IJh4N|gqYFAZ{ZAoW+_t˻~U BoX:E{"Ҷ:iZ 2Hؤ#`?pOu_$Ul8*bivmk%֌u̵G1wY p!lf Zzߒ0|# XwixLpi> endobj 10 0 obj<> endobj 11 0 obj<>stream xRy>y8- 1"I=͋DHx"G!B`Y$ rCc"@2446{$B8P "D x# [6Z8 xA1 `  e‚!8LnV FL"kE&y ]ԯT.F,/6bI@""hB_[hō,-ʆ+ʊ,# bh`i+n={ "@^ĤXʊx"$"_rQaD!Bf@< `L(D xሎL,<) 0P\fDE~bO /?odb(fٔo<E!8O~(gUjx^Acq{]hAʺKSzO7F]9[0$=*vN+:zg+=߆b vh?xRFUuzg&w_WrxI}2ϰb1 Stj7= K)?J4yRn)IW ~@sU˞L5t- _ܖ+Y[R3βԟAw&%O*n:4 UBg}iW^΅Krg֗xDڔW>{npTrVўɏX*%\jf2V;hW/~.~HRsj,?U-…f}r%AGˆG$k]yn7wQ:W.>~gT5,յuKn|Cz79U+"v悠)Uіƭa{KbvaiuS;Tݔب)%ʾnuG-}84NR+ϙd^mJ,IyT|QqKT30ػ:3Y<2%<:6u""ꓰ+c;]$]Omi-˔=?c"rīzT =9<:I*S 1['sچF<мD07$C#+d~ݙo*[Fp)7t2UJ~֘(h2|2m8xߪI#(^|V\Q0Y2O'b'3j{w4:/ ڨGbd+Qݳ6s%'xg&LXܸ?og0`Y/Юz k9Kږ|~M=!=MjTnxD.p@֭rC}kMc^Id6ᝃV0}&y}o J3oi6)Q^jB$GNR@a[ֿ -g)>uor^5I|p8Mar}{yE^+ƯhwL]gH;]jU%SnC9]&ʊ[/Pao$[RS7Qox-w:Œ\)jYwܵӃ> endobj 13 0 obj[459 459 459 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 511] endobj 14 0 obj<> endobj 15 0 obj<>stream xiXSg+k EQPd3!$a-Z!RhIAPMTA jP7Ъ( `YYlzs\sΟ}{XEAaj J&`ܽCk! Xj *O, &dD  _4R Ux (e+pL؞~ioIW36B̢fEbe#XPkhQv0s&5斔I|ftKoͩ4!F۹7 x=k~ڥ, gF֙{ϕL4Dx>Ұcfve.ig4Č,07}cϿ4cL1\xf%9Y(;q)w<6xJjmoI=sS6(rNNZUqQ`ԓ1Fg7j>[ e#gsktmGbV;c ʼ)?&o۳,+Kt-@G7[]O5HS`RhI9'ˆ3+=u)xLaHP`X0fFORzJ6s#91.ݽ0 ׻v ߮$];U~vkwvM'7,6`;On{bކ;L 7I%zn, 0v15, ^=cB78{d I^j{O]k[\ 8CxA~zQ 7j/!L6!m#9}p7h2RSePJ"ծ\j,VVdO< @2^6Ӧ uS; 6ɽr4cNKp%>)irK[}7.n_LzxuluYt߸~aԴ*c)wx;m]AGpI{KG]GwdNiw_^\2԰:0'iDS$zyhE驩'iVy銳ŗC1yy㠟o)9 +5Zs/Oc=p ;R(Lo*oZ5vͬ#!txJ$l֩}:{xu8O'nd4n,y ֍Ks'LX#,9w#F)pSڈQE"}4 59y9Jqo_'[2PnΑ@#bTR=7y'e6t$g?= <xe I AcJ;fO@V'ͦ]ih,߂unKh+rB?1 +;QIht-vmmkgՋxkQI†›y ͍yI:N^&rNg>ҭ*my7ZηGfo2>3_)(cVt}v,•m0*$GktxtgOھJ.^?^1; wT>B նY@{]{)vb뾕 ,JXYgm'CrՓ^{HOMgKM: OOVk%pك# rlV?q[W$/P .Cqd LٓͱWi:9r .H`]F endstream endobj 16 0 obj<> endobj 17 0 obj[514] endobj 18 0 obj<> endobj 1 0 obj<> endobj 2 0 obj<>stream 2007-11-05T19:54:39+01:00 2007-11-05T19:54:26+01:00 2007-11-05T19:54:39+01:00 TeX application/pdf uuid:9bc986e1-13d6-4c5e-b41f-60f1bd58df31 uuid:ea127781-de57-4e34-875c-cc04951dc587 MiKTeX pdfTeX-1.30.6 endstream endobj 3 0 obj<> endobj xref 0 4 0000000000 65535 f 0000007222 00000 n 0000007272 00000 n 0000010627 00000 n trailer <> startxref 116 %%EOF dot2tex-2.9.0/docs/img/ex1huge.png0000666000000000000000000002525412316606077015045 0ustar 00000000000000PNG  IHDRs pHYsnu> IDATx}yXS$91@ C@PDQ "DqTZuTsuhvPYg<)AB @B |qjLas^v^{ޅQTÅT*XXXi̒ʶ6H$Jkkkz^immM$Lp8t:bU(iiieeeJ@ Dhd2dD`e2@ hmmd5556sԨQ>>>D"b+??ٳgΜXZZzzz;חfھW999YYYp\p wp8X,Ǐ7СCeee(>={vpuvv駟JKKК3[TTx޵kWeeZSS7j(N4)//}_fcbbD"A|MNN=TͿMx_|Q^^n̶l۶.Y| AXl``ӧO 'Obi498G177OJJo_|8FN:3f uŋWWW++^\]]5i><vi]]]CC1} ]\\tlGGGyyE^qL& ǧשׯ_ƍ~cggWYYf[ZZ|СC#  cȐ!innn\.WTjYL&,--Qimν>|kggҢtqqQ*fH$R(&]$''UUUZ =xpЂ ~<?JO89s&|$>>~ʔ)Z@.kggG$ugjjjb1v"##JKKŽ~:""HQQQ{{;Ѧ⢛97o A!ig֭"hʕ˗/ݽ{[l!HC IHH{nZZBpK,l٢?2F366>r\. `0y>jjjH$l6}_ڵ?ڵk/_,ὣx"99844W0cd) M\ʊb B>RTַo6,Z򜜜 zE߳z3o(aHgϞP(t:^/&L+VxK>@Plڴ zxx2=H$_5 zH 3gΜ\ ;߿ 2?ϻܹ o޼N}̭)((bVVVG-CT=zNnuvv޻w0lذӧO# ڒ<<<0۵kԟ`:QP>}vR(K޻wT}dff0LM\\>nRiRRRTTLXM6i>+--ݶm;166?s<+pҥSN={LT2 OOѣG{{{>}a455efffgggggù#G?~TTT߸p Pߠ0#eee< L$B 4544H$V@ ˫ Y, wuuE!2Hf{B$޽ŋC )//ohhD+BXXX8::hHU(!!!$%%BtͰP(b&Ht:}޽v266 999չX& 6֭[Zx1,0p$''wttL>]Zl٢0/f… GP('O۫,JxO3X?xaEE /1>1X,رcp/255s>1xzQ@@nwttɁ@?1??s8ÃJ$OJŋCp#Z Y.=qD$z]]] ٔS"i f/__h@$f`GDD L'Mbț'1ة3pՑ#G6 yk,~bddd̞=yk$Is!1{Jky^fϟ?b P666D"QCZ`V(^vmԨQ=cҐIkfffϚ5 3'TjII&άRQ^^.{M---dAX,χOdd aӧiiimmmt:AC511tL&mnnIZZZҚa oooc:Tk\SSS^0+SSSO8qMLbY,?V39R|UvvvVVVvvS9bϟ?sL mD"Ucbb .LJJ]v[5x<~'Nxonno&x_N\xɓϟ?J?477wp555ݰaC_b;v]]]iiiƉ}-Q߽{wʔ)x<_~AK,Q(hcΞ=Ǜ=ƃXСCϜ9E&l21T*wibbbbb?.\z a,k(oW7o [8VO(wmjjjgg&m5by72[QQ1b,a">}JR՗޾};Gqa G(WWסC"7 BCCbq/tڴiV̜9S;=wϞ=!11Q9FE|rqqʮ|2""L&>|ܼ|r---)))D"qѾ ΝUݵ,Hܷo %bbb׬Yk500`ll7Wd8ncǎ) 90/"999++} غu+>|x_e֭HUUU㙙=Ϫ*CR?~}x<ͼyzU/^$(E@R-[L嚛 .{D U][[└cc㐐˗[XXʛ7o,VR >a4ʵkrrrBNX{Ly\ ;`...yyy^B nll8񜝝6g̓H$aaa=755>|xʔ)=&B!\c[[[4-cSSP(twwGҊD"sÅ =[YYyyyxkQPxDB=P-f0 >P(~0`G477K$&immzHTSSCѐ$077JZIpt#Za)3f>uԩGϟ/&A@`EKN$jlw@YY[ a|>&&&\%YR#d6""KGuǎ666 /}SSׯ_oJF@ H$NNN8N+}lՂ X,ŋ{Һjժ-W^ |Sayy͛ׯ_O}}T*uqq pvvFKAR?lٲ ޑv?x4… R/bʕ+7n܈V W}}}kkNb0GG| QEEEL&Ν;jYxxիW dff7sذag}?nllҥK FJr?3ꜝ =Au YVVf͚> .#HK055EQ!ְLKKKNNNOOɁox"f=<<\]]\d̢n5ӦM\o\.pttT3C`0uT,{ =\*zzz:99q8˗/777knPkfI$RTTTiiR\n[[[J!2 t9 _TTnQm`7%%Wv$1Νr􋎎/^X,8b`oo9]_RhB yr^KiH̚5!55fR& aܹs @ha0knn t m0 fᕮ{ϟ?wppЄa`H̺9֭["-àyju|y敖ZZ[[54}q1ϣbvuuHe2AAACŰχk|bΝtuMN__#F$$$ x/CeL&/\ÇHr- p{{Rd(H$u6?4f Fxx{󝜜t'f<ӧO#adjhezzz'%% LW(VUUyxx6q1K /^nݺ50@" XCf~IT1JΛ7/++F:̴ѴX2 2ey|| QИ6lXhh۷8vUujnn~JkkkWZ j%%%bX@=;Tk8qbII~N_g8 `W]EPPݻw]jz 4F0xfNNNW\U'Q(r\69,Ld2YzY ׇ,رc|>勇6X3r%/ j':GKKKVVS]]&RimmmEHloo&) RIDATL&gĈPS1Hf EnnnVV֓'O`/8\DD":L&H$2 S]]-AkkkmmL&JEQFJ813g,--===}}}Gplmm߫ڜ촴Zudd… }||Ejeeݻ@W<?nܸC[={vp:O?TZZ:0I?}ghƌpޱc ō5 &M{_~oH$Bjժ,t{WX%̶n߾.Y|9 (66  |XaaɓX,F~;=bرc.]o_ٹA8)**5vnذ… W\ F\\\JeeeG"HPf]$''UUUνŋ ;;;d#GRAkkkm[]2,888 a;T*߿w^8¥̙3߾>yĉ{.?ׁE$jjjb1(ȼqqq_>RTTpTtt4Ԇg}6W ;vhEEExO>v'N=z׮]r9rϟ JJJzgSD"qȫ噙ĨT*سMMM%%%Hڡ鉉IIIyyyÝ`$&&޹s>|BxD$%):UUUSNr\PPRR\ؐET*) 3gf̘ :"P hφܺu`z##S"ـ*ʯŋ|]N:ϭT*#""H$ғ'OrSSEXXXw:ۭ%ɓ'OF}_kzժU6ld}yBB%KzzulWWׯJ ֭[-WFEE{zzΟ??''I;w`0k׮宸L&[`I||`lll+C12  :ZCii N>ۆEk^^A~1R={ % ٳ N߿ %~b„ x<~ŊF ŦMXGqq.ӣoD_pʵ&jkk###1̜9s_y { L&uuun;wl6oN>DFFbX++?yѣG⌌ uzٙ2f8)\u-))i ڵkOzèP(N> q-,,/_~=iuŽs V*&&&FFF%,kӦMyyyJKKm`ZZZД!744\tԩSϞ=S* s>>>h)333===+++;;9r󣢢AyyҞ={kXƆL&tDP dddT__/bP(H$bl??pWWW!`/^444S kkkGGDZcǎ9ᠮ!;n477JDkkkt:B !sUIENDB`dot2tex-2.9.0/docs/img/ex2.pdf0000666000000000000000000004106012316606077014153 0ustar 00000000000000%PDF-1.6 % 1 0 obj<> endobj 2 0 obj<> endobj 3 0 obj<> endobj 5 0 obj<> endobj 6 0 obj<>/ProcSet[/PDF/Text]>> endobj 7 0 obj<> endobj 8 0 obj<> endobj 9 0 obj[648 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 648 579] endobj 10 0 obj<> endobj 11 0 obj<>stream xRkw3D2sU~5L:C/@.@`SA.Sa7Hv<2N `23A}aNtH%y`Ffk8Ȣ~Dߚ#ˏ#,ȿk5Z.&H$JF?gȢtVƘd.,"eRh Dt@fabdKY0 ]U@<*0Ad&o +QBVvvlA$0Fcd&P(~R=^Yk)J kWED|HU~@M61s_s^١{en#(I ?KgNFl̤Lwz3\vO^חg7h?WdyZL9r!ճ.K܇:mMJXK BĢ<ZvFrLYqdck3Z~]H?!|WD)E$߼ 8`^~b6*QnN8.dR)0u5?Pp|9MI~Tei=V*1}M%B,!ԙ9Ɍ0C>ټEq;Ɔ#blZLUU%,1$Խ0 ~4!!L:qwz{p8!n}CGNohDu-9{}^;-7NMwՖƛrLS#|89CO*o|ݟɊ}G%zLa +wy-iD(Mk|3fqwQ1$9ӨL][=?~`Sی;6$A#nR8mUkyE̎y)_Vx{a7䐞5R "C43ʳ d6&?NqęiQVy:d.ԟ c.{c/%\mynLvA%oVXݦڀ({MbYoaռ_u|Y$@W\"M>}Y۸3%G*|}C8Zr b|7q>'7u"Qy@LfۤWH/NbROL6XybE gû6)uf_غ8mU_Y΂q ZMLdY]״EZC(Ś3 rn K7q}a7ZQw휸UVW5pա mt'mdFCW2|/TL\ n) QvIT{o=qt^ZTI2/~ޕS1 XXyt Ѽ#u<`pԸ >׼,M9zn[\iKA/?!@ad.$sCe endstream endobj 12 0 obj<> endobj 13 0 obj<> endobj 14 0 obj[778 0 0 0 0 0 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 556 0 556 444 306 500 556 278 0 0 278 0 556 500 0 0 392 0 389] endobj 15 0 obj<> endobj 16 0 obj<>stream xgXS[%t@z@B)RB$БB(*"MAH"UtDu|4ϜsjGDBZ àr2rWcs9Y, "x$ïzpW鹢xEI `8$ Rj{qH 4=^0( h!@6 44q~p7 ]$)evD~DaШ@2Vogq=_F77 1npݐ^($L@>z)CQ>_v8"H%mgi!LLH42?L%WHt0+)84@:=$Rh7x@ Ac '@ ,/AJ@7ˑ;4VoR\Mrtߐ ߐ$*A I FRAߐ7$ʤM>80,-O'%sj@5e%_ibw$p`tS>,T 9"끗 Q#Q% %&km .$}ۈN|@j&cVXwVoOul]7ӱ\$kkˊVV#bj/+fx+MRM| G 9ie?*K;uLf\T00_\}\Rs]DX _D型 u&mH5Qv,sVt(>R,ZyzO.t@0-tFK>Mq;jA[v^ 9l+>PV3,W}e=? \F8@WpRLմ]s6~cKW"l*ؤyiEvAh\Dz@4Qɝ߀S3?  XylM\'AAꧏo}8muzF[nܤaAV?~*AmN9Iy\ kt>\ J/5"íw}Y l,*#h8 ̦} d>S}PM&/'ǻalOӦƐW]$}HKfo.\[=|s'6:B8¹L6w#,פ#)\'<6ACXtTixctVx^ſ]c&sdk"nn7QBw*o'<Ɩ"rz<Z5):M*KVBnAN)r*ˌ`솭џ)k1fAi%<Tbu;]ۻr^ȫw|2/z`sjE7Va6!׶RG;3ןr&@LTb5 V['9I2jZX9*hlk =hJ/6 RGW]rb 4;0yRd~wMbaMٝ6XMqWQӨ8SD霉Kлl#3vgCsU)~r%e6n+x '>{.GVdCnWn`>YmO5/+Gi%X b n8#.Vd^Gmabzj2& B&_댂A*Tt6+7A[g(&ޥF,4}W@kN9]#=Sےjn[[*[$\ @v n_ڈbtQ1G\ay#Ȥz"#8v׎ث;~Pr@_vM%+[7rue^Nq| XciOGd4hƗ2hy&W`U~򱱃V6l|#Z+O O]l?\Q2 &&џEOUpdݐx6 ~ePxv' U-ٯ݊1RlQO3O|&U>0%Kb2J3_^-V R樂._C8˘=fP<>9'I $vF\ϛZx@uO*xjrWk&c3tfOeǠrxTCq:wes E e5.ijѲN,?zZK߀\o81ͽZmXޛ~PKHBI=&;[c~n*usu 62LNC:D ēB`lKXQt3b]퍭wkW951[JGM+;B̓}uC*01/xXx틢Qɉ3.g3Rc:00' xK?e seI?ҋ=Mҹw @n7ZĮ(ޞ(0BS+6c s~|ɍ*G8&ާm>ͺN-+׵%@I!$U*XnEO|+rY˞LdDnq_<HC![ pB\Mr.d|pI1֮yo\+%eZ^&ep':QdKWZ΋U5Ux.~'.*Όgͭ.#O!崺JmM6+29J#"qҢ<׫jq,c!WCKZevSjtNcclu}\l}Fl<>i5Vd4ybO3$L&=Q~D~fYNI2v~ޣѳ@lC\ %}چ4z+MFb=K J@d`^R֬{MDX{z@c*TYx:ׅlϚz\'%vr{*-gxLԠ't(Vc^6DcUmBEݻ^EKD/P,LKZ-LRmQ! n_x4v]3ctq[~6=vePg]kb8 DZiF.۵c~/JvSj:ZBM9cxYl@)[wl?;zkkoŹv,C.FD??f,:^(:8' N>+q +`7=7O'X )3\#ذL]G:Qij3-GT]b2h}Kg.O)lt iS?"Gu TV\?a3B1@Q=̩.XJgCdVԒpK /('6D;SjuH)[s󉖛WVx^%3Ʀ8Aq+xe!AՕ5k%+wt|7aĵ4pNӪ"ˁ.nn"z#0;=i (M~uvlO-Qu&Q)KЄᘘ-1VxLe*<*b-=+x>2آk~qc쓴~ޘ~voʑ4o(GENeh60<͒" ?^ AS~|u8h ZqB1 z%~u3^BPZ |#B[G8:~wgtK}LrkM=4rVE&Ҙ>x!j ƒΝ0JX9}lEhOR1&bmn|)󏜪ޖ nF~eT6 cVĻLg!fkE vZm pL=xfg~1\ٞMwn";%WoX[xzƒC/KM׽S3?di+(G9^0/V]DŽ Ҟdzy߽PwgѸl" U@)+0eu37DQ *9}P>̓nj#%e@ s[JʴHVg0ݱZ[tEHÍNQWȱ,^l]p8 LT~KJ]UL4giW>mȊO:USx+^*B2mLWcz'MZ|BZyIRdhu&>MGwú]#pd^KʣD:ˣYgZL 9aduчў y/?QCqx yH endstream endobj 17 0 obj<> endobj 18 0 obj<> endobj 19 0 obj[681 681] endobj 20 0 obj<> endobj 21 0 obj<>stream xRiXSg*,6A 0Mv!H٬K{@VCZTT`R*'*D"TY"E *R\py5{|y{sPp C\-Hі@pŘ! ˆ!w:D2cQH$ c͊{,7HN5D :ӹq`s`[d&H ȴ1 aXp3y[) lڴPL&n ak' 'lȣ9KO`s <.0DP5%lzs6 8 @=|2X:'Aܦ5gnl{XO fMWf@$ -[y@ ɆX#]!Rv$N `.:d08NsS CMD87+Ow 6v,ўIdw cFA> ceyT+YɻZ Z:nF95=IVSa ʔdFNJ9/L*xM-+Mk_<$zΑ4[w.W/6a,w;2G0RNHމfs{cŤ|Tsg'DY/r7g׎,ii'CbdOE?W]Z{e+dJcʴoQff))l0~B뻃pލ,E%M}}N]Af%g}۴9)d}/mktekEXiDk)7  sxGdnxZhfB:=ubm2j[wufS8]OgnY18 C]c'Y5,{;&dG~۽obI GP/LC7gX+g[7 Z;w8+.Pхٚ#~*G兽O"kɝWT=|@)vk\psdg߸k;%)T~Q!K˲=Xݭu煟2͚>=li{Sir1*쵽ȗ*e{Us}r#w<4%07%9fK܌kU/MR\,HW_*"55\r>0)d5N:=蚼`{䒓6f15UNEsYg%2ǀ_BN#A!j endstream endobj 22 0 obj<>stream xUn1+L | p'H"prʖ|x^h2M.p]Ɂ^I^-g#l {1zE&OVH.l c9% =Ҵ6f&f&K8̖MXa!h!Μ$dСMÞbnZD[%) )Y)VqJDE!(3@>9d$Œ*-mڏEJ%UQH E@^A,JY䠌s N:Y2 XE:6Y"k1A@}T)y<p<-'~eՉvXif!&K>"R+놐;ZfU.B  @XsjI{j` xٽ1_uKb➦a\16sP|O7l(BqOBbb=y;{C( =pOly>NB)ԧi7mGV5f<{KV$Hma8r~aO߮ɕA"핺z<o+D[EYЏ>stream 2007-11-05T19:19:59+01:00 2007-11-05T19:19:59+01:00 2007-11-05T19:19:59+01:00 TeX application/pdf uuid:942ffc70-10d9-416f-9fb8-0287f54e3b36 uuid:102e542b-ebd5-4909-9c9c-f8478252721a MiKTeX pdfTeX-1.30.6 endstream endobj xref 0 24 0000000004 65535 f 0000000016 00000 n 0000000076 00000 n 0000000155 00000 n 0000000000 00000 f 0000000289 00000 n 0000000384 00000 n 0000000461 00000 n 0000000602 00000 n 0000000703 00000 n 0000000947 00000 n 0000001142 00000 n 0000003672 00000 n 0000003816 00000 n 0000004040 00000 n 0000004239 00000 n 0000004462 00000 n 0000009614 00000 n 0000009756 00000 n 0000009837 00000 n 0000009862 00000 n 0000010049 00000 n 0000012016 00000 n 0000012953 00000 n trailer <]>> startxref 16309 %%EOF dot2tex-2.9.0/docs/img/ex2.png0000666000000000000000000002666712316606077014206 0ustar 00000000000000PNG  IHDR~bYW pHYsnu> IDATxy\Sgɞ@ve߬UGXwQtZ[;cZLjؑ[KqqqQրv?NZkr/}Oy{y~t:1yBxD&t:ժRVH$2 DP`X,P(AAA\.Fl6\.Jݻ===:bl6hٰXl`` &HVbL& LA@ 䐐pXk GvvvVWW߸q_$) 2LRy<^\\rd2x `,l6 &IP(JJ%;:::;;ZN#QQQyyy YGoXbqyyyEE͛7 H111 qqq\.4>44S__i0v{FFƂ .]GrJÇ̙J]fٳgQ^|7M6m޽bxmzXuV* F[tѣGZnwC`0TTT\f H"x㍮. _|`&LgϞ䑋X,<8p@nn. ۶m࠿tG4i_*F0buvvnܸJRV޽{) J=tfn?|XX} \._nIJJu떗LO5'OB-Z4003bq^^?@ prի BFF۷}`?>@xwd2ӗm8ydDf-[@\nݓgI_l_z%v{ii)H0ahνMf ر oD_WWb%X+++D"ɡR.\pڸ\nhh(K7l:u7òO>D&9rpx˦J8qbdddggh~LϏ;w̛7/&&ƏO)ʆ t@Abb;h]]]]]]nB= #X,SLUTS쎎INS(l8Cd2)H t"ȓfsOOOHHG;RI$qfP($vVkQQ nL& Xldd$6 iOH<ܹs'ҟZ&pOp111bXh4D*(((((x:$޽{3grçƍ`TTT*5 Xl4Νs7T*>66A{8Nw֭yNT^'$$t^7Ah4 AvJeYYYNNNDD$ouy#R_ubb@ xy<ޚ5kX,3gNRRҟz³}3gdXnB/8hpŊ---6p8жވTTK_u^~7Wzzzv;S*A'֯_y>*777++ܹs R^^bD"Qooo^^;?Z.))xsi+:pӟܩPCCC[[[cc#tn_|裏1zzT:yd r);u8MMM,kܸq?R8zp P(LNN&gϞ(Q^^N"RRR63ƛRϟGBս(bl߾"VM&o~2k]|9߰aH$ij'H3f̐|K Yf(Kɓ'߻wﱯƬRi&"w/OMΝ;X,vժUO\*O(?OE)Rv288|'ONyƂ x7nxokk[f H ͫ˗ 6ڼr ¬YzFr̙!<tPff&MMMݾ}{kkA |=$> "Jwb)J~~}D"ju_&=zdž]|P(Ak>釣V[L.,,,++C.MV?~ڵ!!!s~W.PpةSN:U[[kZQ(HIIIHH {H$m\ A8qe˖.]pFyg&ƍ===D"D"EDDNcX2l6F^7 $IWWP(4L&Nfddǻ*8?nWjZ P(4hL&Az C"h4  cT* "HT*5222==}ĉ4 ]{~eFL&T*|>w-..VTF FAc}.wyF01ˑcǎPl6o {O v(CjƏ:X,޾};]]]K.PӉ'N9sm7?CAɓ'Xt}}}ppGj ^re„ Ox}{}|7W^}eˆ?NgGG;v/ h 6 eBsΏ8P(PQQ188߸q###z{{Ft .$$$!ӯF}mm\._jS+##… gϖH$ɤ :u}1u@:y: ^x!**jd-$''4TYYj͛7"99õZ1Ϗ"ݭhW7n6mZXXh?~|wwZC?\8q4 zϟ?If̙3)))}r4JNNc臥k׮̜9sex۷DCkleee pYl6;::Z(*1!Ju̙84.%ߞm|822rkXBt@`8 !XVD>b㹧Gx!ow:ǃmi&Mr[ F("$Ɋ+H$: 7^C~-p\.W"l6$46ټzj,;~bwVGDD#uaCR p8TBpg@,rF#N& 2֭[.\ѠPϬa3793Bw-F៣v=|7WkD"ѳa$LpppiihFq^N8FQ&Jpf ?Sn<ohh wL8jZTzzjJRF#U* h4AD"*-rgNfOZM.FŢ- "( v Ad2Q(T@@ (;;;11Jh4RaaammmHL82ׯ_}}}8@ pt088dzX,4M࿇^jF*jڡ!P| B###D  eh4={رc/^j(*444###;;;99955lQ844o޼ #6mڢE.]4;w{O}ydrPP/w8skuu3f Z+ .oy$Z?DD"N}no*9d;{H8tABӡ7 O< .>3E"ƍ) DZx͛7@֭[\.6mZccKFƕ+WH${}{{{ZZ3f̨~^#l6رcڛ7olٲŭm6[EE%H۶m3 RX,XьF{7݇^ TTT uiӦp%KG7W6l YYYW^uD"իDbff+IrQPPVuD"q…N_N۶m[@@@VVL&Y#,kوw8#O[;eXn݊FW\9jl6;77%(E?dF&~G#i(  H:fLpѧ}IEj-ZF8[u;wx𦦦E?[ů駽ׯ;wnٲeVr{G):fL&k48 g&髯p7ovI۴p䊊 >?wQTrg777L88xƍ4̹`0<@GG\.饗ܐAT[[+D"ڵk322hƌ,op^p#O׏z@]:bԨTkŽkUR\.wA> Vz3g}0̌3d2YCC`,׃P(l6744zH4w\.qoΟ?>@hK$ϝ;7887m6@ `2w 5}w_~9sW^-|Z,8ݓ^$A4n8 & VDb{]vȑ#KbNQ FpXl?A};;;aX//\k.x`"$R מx<\T*eO?H$9L5MMM/fRL&KJJBc ~x*JR!с`333dr?gΜ+j7~Ǐ| b. '66 !d2rppp֭׿&N֯__]]o߾ -((@⒴ZH$CpotPR糡ވE |lnnv~}\\oPtAOg>--mڴi7n{rfRDP.N@V?gaȷ 9VPG??uT\̏/B\0P.?4E=\t_|g7ͳgNOOcCwޭG ϧP(@K,!gӦM"'LdRUU<:83N^?qĔ)SÝ]vb/tSq}.Lׯ%IY4MIII||<ڽ{P(=fSN-X.?y$=BaS2xÇ3˗/NԪUn߾ķ(++ W|MAABAJ˧OFΝ`0444|111( deem۶>AҥK.oy.P&I"TTTÛnQQQ999ٱ</88xd*J(544466|VSRRf͚lٲx2r.P.0zBQSSS__744$˩T*Nz RT^ l6FC3H$ RTTbEDD$%%M8f p}vbbA\"*ce2D"_wwVf36 PT4hZM&lsA%```͛Np`OF7fh4D7[D\.妧 JE"N3Ljd2=( ɬ[v-BqgG$(Q6fGFb֭[PRN#ѻW2/"Z NOOBFWp+V UˁNh4ܨ 77fWVV"dH=DZdIKK ퟀ BXhsb1[S\t .NUJox<~ʕ퍍>RE@~~~``݌~hh(,, 3@tuwA$JJ> x<~޼ybag=gϦheeenbP LOOOp>** !;2A 5>A䳋^s[R'чN2͛0D"166v =@ ,Yb!hbbb?1?iӦFD;tRQ C`0s kQ.z STTd9uڊB=iӦx*TCXlQQonnFC/^L$?nZB6<)===33]]]H/ Q>F/_|ppŋd6Yf_Bq__`@GWx3f555{d|=K.X,y ]IDATGeӷ0a„SNl6www쨨1qa===iKy.l2,>F?:ujyy9&X՚3I X|b9r䈫|L&XG@~~~tt7|j]`kkkHH[~dX޽{W\qslddjX&&&77ڵk#~ [kעCl{.nBCٓ&MlM&M&۷Ǎ-?DO V^ٳ}e˖Z_l6 $(+?7T*B߿z2d+VpW*[l)//W*#x[GFF{j¡h/ˆV*Q(Ԋ+?>t}涕f4i333Vu8~V}B1m䡡1y=vJdÜNgVV;/&Mc>kXvd"`0H$NG `K.p8' x|@@@`` ҧ%GX,fyppիhZŢT*- l v8nv T*͎̜8qbDD'.K zNW[[[__6Pp,Dbx?jѣG)J@@@NNΖ-[Z{jܻwoǎ&MP($)99y޽#+!3FcMMٳDbXXkVSS#=5ꊋcbb0?ɧznݺjժ*+tvvzI`28իOЫTzD"Py]~ /m8H$\>Nh>} \^εuX,ǫ綾l~mTTDjOg2t:Ǔ x#zNcVZZjZ}h f٪H$һᆱT*}N۰a@ʪu|>\'k…}}}>7b zaTf,x꫺~=!UVa0{ϫԐ䘘B\G*gz ۷o0ׯ\m'}ܸqL&ڵk^^TΝ;7 wr8 %##߻?~H$ N?նm0g};y&)??f777;W{ZZ }ӧOws@f׬YkkkeN;]aaapsW񊊊/]`&Su`i˗/  Ųh"$@\paIII}}ŋ=<ۉD"rnѣG9~zh4j8hoo|YgggHHH``g/# bBBBB l?_ݸq־ / B|CѶl=&Hcǎpk.N{unzjNN߽{ǑR>|M} [\Tܹ3::fee& >` &44t֭{_:@~~~YYgVfɒ% ~|7ހ4??ə.'~ڵ͛7b [[[Gp=?z{{*++[ZZ +,,7o^||<@8[ ;w[֤ٳgX"!!ad%|JPZ P(&BGGV%͛7|T*UTp¤H$Νd2Z6pexr\.<5hg X,=>H$|>hhH"`0fSRRf͚Uuh޹sݻ"jvag0X,L&fѨj X,A b FZZĉSSS###y<3 /% T*lJ&>X,6,, 0Ш(8( 9XD*PIENDB`dot2tex-2.9.0/docs/img/fsm1.pdf0000666000000000000000000003561612316606077014335 0ustar 00000000000000%PDF-1.4 % 4 0 obj <> endobj xref 4 18 0000000016 00000 n 0000000812 00000 n 0000000871 00000 n 0000001061 00000 n 0000001118 00000 n 0000001630 00000 n 0000002110 00000 n 0000002540 00000 n 0000003088 00000 n 0000003541 00000 n 0000003993 00000 n 0000004456 00000 n 0000004891 00000 n 0000005035 00000 n 0000010625 00000 n 0000010869 00000 n 0000011070 00000 n 0000000656 00000 n trailer <]>> startxref 0 %%EOF 21 0 obj<>stream xb``g``:P#0p44 C1%/sT5<G^mrt+`52@^ endstream endobj 5 0 obj<> endobj 6 0 obj<> endobj 7 0 obj<>/ProcSet[/PDF/Text]>> endobj 8 0 obj<>stream HTMk0W=XJ=&z{o␖;-~IPCj#dw$4Nuv\DkJa&PY<ٰ ǚLe\@9k(T15dNYa$֨vbT&IIDimʶ6COֆ{ٗԝwǫQơm&h,VAb]xO6^=ٸT]ݧϙ"zi%,ojp:/mS1[=hɄH͢L["ဲu3o+L”~=VS3# 0=ڭ?uk{YgTy5{.%]l=e־ : qZɨX%5`@=t\"edn5PdDhB endstream endobj 9 0 obj<>stream HT=O0 +<Ic'>$C!`>vդ*jl?;k(`r&r*Ef1BX``5%Y Ai0'tHHz 볿F,Gv0ax5;D{~Đ VK~0i]p\"ywSwotE6\ŵ'.x;oSUOxcW, p)j nKſDdqR@j,!1;O&Ai EMn,bhs) ].U֒6Vw#怫i/bK@" #&~@M>stream HSN0 ah8C[b:t I݀ĈH{/sb0K!ueŜ> +d`e̽zdž/>n[ ̛C)mp[b}2hZW8켿_۠vIfsdUϏחO󝹙tieVD{`"Zd"JdЅ_)G9a" d9&2aƑ$: GBPH'1 5aR2ؙmH-Z6`Igr6¤ҝ&'hn?^jg+rJS\OLbЮm6ѹ?yQ c\ Oq_"| 0 \Z endstream endobj 11 0 obj<>stream HT=0 +TrEeɖ Zf h''[a'^}9e"HPM`Vަ0\3GY;~` Ec y) à-) 1cJ)3N\Љ XG![2 W2a2S6*X20Ø[~-0 r 6 uIwo3r;}Y yA ޶u_okZz5rHswL?8zeX`ˏo.ߗOe99"A^(;b",L kj`QSTzfҖĨw_we'hD7VJRFvJy$V=VVպ@g [ o{ș_%3+>stream HԒ=O0 0ر+ tCLNOJR!|@ dЌDa] f1Q) 'ͩ:1X[7JB5*iIgŧ9snμ'8@8@0dHjO`m@ü|_cu,hC/`hI`8U~ݰVx6C+[mM1{)+p,MoU0 *(sZPT z>b%ЀX@#UM. ɤvٯ+2D"M1 *;nwf1qfւIMP$̡ 1Ujz&uwcޑ{AHԁu\C6KJ% endstream endobj 13 0 obj<>stream HRN1 +\B`- lAvW&cǞe֚_j RMm&젳cx 3*PQ2oC"Os ^5EJn澁F- f ^ ;ǻkpr,‰c oR QJ;cc/ӄɮܚ=s[);BR xp1{lqiV)L:2@DQaoa\9w 'IcL8g .pqEELo9dj;lLl؈hCDn=S4|@FŚ hv5do9aɫCWPsKV.'El<HZ endstream endobj 14 0 obj<>stream Hԓ0 {?J(,$K`HP-sWmq8vTLl_y_`ė> {qxl5soߚ6&٣3I}HǔLŠq1-W;]V:4PP(f X*VJpCa.Nḥܑ UTIm <cSLࢿ$bͯJ endstream endobj 15 0 obj<>stream HR=O0 + XlؑEȌGx6IXV?\8In.!.t^'L</歮wA@ ymm> endobj 17 0 obj<>stream xgTSkA"(5&w0@`H @+Et^TR48޹;w~5IVy~`ۡl`*(;,(j0 "uJPwT`6 OBDXBDPDx]E_{3 "-#Qp7? @zp`n04fOvp[wG~ERCڣ{v.00.p\. `$ mn5.F7W@ ο+C4]mL&2W]nnRt4O|*3,ٴ?{w`3rW`^9/3LJ02SM2͵,J8r29HV=TIqn҅x*NV!%nZ5ٯu?_ehK0G7CQèln~T9J iv!jXb-cX>S$XsLswj$GkdeFFNo֟9F&e(@rE6\ |I,@džK}NK=z4%NnB7' 3=*q-K~= T+rz%U+^a"LjerH#B #\Մ ;veL퐯EΖ𩳁y}+vDɆ];ƙx$jHeBE$DkmU_o$x5c]J43Na?yPLi_ [(Ҫ~4"/p^a&ִ01!۵u{ }#kͯpZpcFzfbHcZ_Znwז_3DՇ=QWJ̈mUC *Rk: G["Q3qff/8^:F\J]V9\{jque^P6E͆ΛH%;+UHބ%(#ب~7@I<ܛgm3G;2/;ݶS^TԷ w-w̽p)˞4bPS,Ⱥz84:5o_EIpnjiA^?DDr~Ȩ$/15Rma/~O8O7ޫ=;ߞ9teNp*K3D _!y K SpO S=}sA+agsˊ+ӵ6zJ4~ FP$}}@ty[q+ 3CE&%ˣYػhNH1/ #/G\})؋#>=MKhNՍ|h!&x#9q uHG`Wٲ]B3j@"yTpߴ:vtLWžs½wM)#Έa9ߝ+$0bMa('rs }@"* V󞲗>ia,үm"  f+NϠc8Hlk^ O67 %>!I0j"yiK<v {.,\.3(ȱO۠ېcC9ڻßCTo<$ 2r,@/q]J_+^&+=؍˛.Ʊg˥T򫺛\݇ޮ%μv;XõJW;B/Ƙ$^I(6,ik;5ωuFo;X&}o\X R0^d3;3aXڤ/N-۽틞NR}I AK><[ZmJNQj}qcaPԨ޼ ͬ8״?վ}je<דi:hyidpq-ǹ Irtq~{o )ScTKk75ޟ ީOFNPn3Rey!$CZ5Ƙq1yH|ã(ӣ٘ J.(ΉRq %߫= 3zos&[$3Q{ph⫝̸&Xj˚Uj7uv~RxMޱ`DxT΅ F }6 ATz*znˋ/3;3Ev|y'ukHṳ8Bnlu)BB˺m9Oy}Fr#MTsn&w:U^#Hu$EEUkvr+. mLO$!DV,=,Mr?v DfY>" gyީ#m|Zw!ɶ;pk1ۘJ ro)m=eߎU y5->tZô) į;t(&ju<XK-CUI/4)ÏQB'n ƫ>KI(J9v)#2-\_%q<-jR{>=b:,ok>J>Uh.ӏ; 2akעSBeҐ;X40*-=(;L-zlsHKu<)U݉ r6G<w}<90E+;yD1|S]S|pvʀdy }ڿtf֟"KM9}pv6OZ,>B|Sy|5'!7^&(=J>=\ fYm=59=}Nѩ1_e`Ux!*;Zz3\]ݛKLNT؄Z̈́> endobj 19 0 obj[278 0 0 0 0 500 500 500 500 500 500 500 500 0 0 0 0 0 0 0 0 750 708 722 764 681 653 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 392 394 389] endobj 20 0 obj<> endobj 1 0 obj<> endobj 2 0 obj<>stream 2007-06-18T13:28:31+02:00 TeX 2007-06-18T13:32:57+02:00 2007-06-18T13:32:57+02:00 This is pdfTeX, Version 3.141592-1.30.6 (MiKTeX 2.5.2574) MiKTeX pdfTeX-1.30.6 application/pdf uuid:e76fb262-010c-41f3-a794-1f2cdc9ee752 uuid:068459f0-d271-4060-bef7-d07b339ae078 endstream endobj 3 0 obj<> endobj xref 0 4 0000000000 65535 f 0000011265 00000 n 0000011315 00000 n 0000014899 00000 n trailer <> startxref 116 %%EOF dot2tex-2.9.0/docs/img/fsm1.png0000666000000000000000000003440712316606077014345 0ustar 00000000000000PNG  IHDR w` IDATx}i\Sg a" ZDZPEDXPE`W+ bkV T! ,قp("B`s}R8$<繞{o> AbK@$H Kxq3 22BnVܮCBغc䢐2>(Qq9k y) :WS'mu eHͬK}r1HBb$1ݿ8ٟhO.iҟ:˽}1岰<ܵFrYHڬĝa{8̱1&ԲH {7S[Ko:wT'Be A2 H$Jwww{{{ B )CH#99b}"(66beddB_TTlggGD lذ#44T}ƴgNMI Qoddd HNN޿@ Pw;ԲHGFF>iuݻ7!!A]V;w!iPQ1a% `ݾ]򷟱$BBEfd\~4dpLO$"h2rJ-sj~r RWȾȨEs#7cܪ;RDyYdsut#+7^$@gUOyg5iIKuŎ;x ve惴CFFFZ-%PWVŐJ)Si`gSS!.455jk*1P\nׇ^F?0u*Oeel-J>*XXXh4~VS~Daf'yGbTT 5`x1-CrrrGG|P(ljj,--mmmį-ZD؁W^`0Tٳ-,,HOԩ`21k0 LL@HOGI Vik 222ADDH۷|뭷ȸl"%%%\.766>>>֖FFFwP(ꪮrYYYW^qww)f$_++xxp}kkQZ ]]_GG!@p2dڵ7n<| $IAAAvv]=<T!1H4aBNCRphm?RȈB^ZvnTTBxoo'NX;w*h;wbX,+>>@ttD"C^&Jzz>NFOi?kjjFRMLL'eee aW,;wnժUׯ__ ގ PpwW~+W Qsxyy `as#***::ZBh4''S8y򤁁ݻ_HFtԎffpp@^`jJ!j*KNh9MnH___UvT4 oo\I2D #3b1aessBwq@*E[nFk+GIIIZrFVە%%?AjYj&B("NNƭ[C^GF$IZZڵkluU\ *U>zt$'\ntIj= }9e;P] !j%:~ tv;Aq1q6l$v`0@C,<:~Y";=s1jov1u QVF2D}q TxyY 3(.~H$s}FI=&pQ D%ܦ1u $CTOC_^^I$i RRiB,Ƽyth:9JEn.m B1⎰wQdٰR@̝ Z}~\{[jK2DQQdhB`f++dgLr4 d &]>CTccX+m-57O禹LkٯR 'IJ2^'{r?pskox1p6Xk+H%YUzT_57d`wv}jrS Y=uV]ba O\7|6<tvёԲTDDl1)s]j,3 `e5 xzQ_ 0\@_oK2atnM[xyVV,RTW)/&%^ms S&h[aJJϓ}i%ɐ+׊D((xf A,1@d+q.˖ ?#Բ-Ō/E @PTT4C`jH ?J2D6h4իW幒eb>}ZE~]]]njI ?=mVTT:b]VCII #God@ 11СC2RZZs= ##|5bL%| [_,R o =}O|}}]]]޽K҃ԲEU=֭[xQ={6%_B@z{a*8S|T2:.ɐ1@ թ~Bf_,e) dÆ /_V`9ro| QmAJJʺuǧP+_&/ZdHNN_oǎ{iIّ؆C8OD5kii4 Fjj*iZVMC,߿7&&4EFBII|^!gϞe0c=' {Y,VZV&:::Lk 2d.222 `2vh Eːٳg {UMM](~wF|xYYY5-^jW$:::**j ֭[G*Z.իW]4W"X,U,kkkl,+422 S^-!Ǐ SMzaB!s]E}"Y[]]2E=p}$!22P΋Q߿?))I5CCC/_@F4gx>@\\>bʕ!1[[1ehQjժ'~Zx.'ڵ6 ѩ4ư P!stz8U+V|S277S͊1hHZvL듿hC|dfB,*KwDRn==97(FKJJ>vV1$66622r\7+CD"$%A,1<<`e5D?  ӑ <KU رOf´J,% 7 [.|Λn2Dcގ e Ӄ- 3foذa˖-;wTḩ~=YS +*V:>އ2fXͼ==HJ@31o.+*cLM`0d t^=wp?c2 +poFNwY9ʾn9c2 CNNX`+Ib;6oyfߺ#,NJJ D"G Z.b0v]lyLџ:vSCuղ.\@89M9$9uJY܈777ΖgcgfO$|D΋!!!#Wzl|ы:*g,%Ctfk !7W):L\\1T#!leMS=6|z5>"*MueYUaϤqhD^FFF֭[:Fu %>>>44Z5{ODtmn׆_[X=F23q2Ɲ/H N8QTTrܐ /}yx^f2TKNN =x&eZVv6`fyyho318ξ}RSS7nܘbWQ- {emXćK>p$پ};7p81  36lBX<@'Nxyy5778p@Uֆ_Tv<W?UOgK5$BpNR8]-3`#3ql߶j9SR A,֣K!B033S$Pgܨ''\Bg\eɫa/`?WO uK"DDDݻWQ0FF=s lq( 9S˛#[*|"e|'JJJbcc-Zz1t q y?bk/}֕b?DDDiNʶmJs]QrʱcE6bL&;߅彃xxZ'$$/##C$777ܹ344T5DW噃7!SP>ǫ]Wl"ؚ!>;}R{ϯIr/\ʿZ|}7Rdҷmuƽ>o]jz{M,!<opHhi)n-և{E*ᛒUVV PfMN|Йyn۶ML$NO D1LЃo"F?X:]GlU}V?[WĜ\“kMZ6f{VgMGOV-(3x1Ņbyzz[MW{:+?]yc$P aO?3;ƚ}D^k&d&0byϫW̝{7hggT@-c'k:Kw4a?wyfŚ%"PT sJ}tAUb,äJ$l6;99Y z\V{0 r=UvgEE>ob-j4Vٽ{ ٿ}|`hkCC#%@O**PPt,ŏ=d&&&PRQZV͹Ͼ˶#^K/R&Mkiz/5Rp1{,,,w!A_]wBgX ###d'$$suu%3Dž Wӟ`ltdd@(1:acKKST*`a\FFzEEoii9m 1 bկJLH矗qIgt3Ť]Jw.{RKJJp.v Y ;yr_.>>Xʂ>0kPBC,-K""^ %K'CԀ!t e5Ǎ dbr X|J=~ZXYc oS$ū_ד.+'1-K5al+W0e 8fJ}= z )=P(O?}#- Ɩmj ;;Ÿv HczyOQ~ə0ofAWљ05'knnnmm ccc'yގDUCIDAT嗑J,\8 TGS]+p @2eU(XB(K/aB/bx<^@@Ŝ9sH:k ˓,TUaz!7L&f55|9::P@((-/GKžݍRف Of΅Z7%%%22255;99VLӦ!=VV.@Hootv"- ˖o)OS:^ M(K!vw"?Qp\.Z[~j$'']!i^P(z~^^poZo߾`hmůCЯFO\.Ҙ"Ue m.!7شi O>}۶mHGߞ NO{qSȴ)$?s.`}VžfiBܹsʕ84ۯ12@k{nGGGu`7o;`UyΙn 9~(#*66v0$>>E!V'DWOj^n3h&lltz?F<*Z.ghW&ed]/Wgmw,C8Va E"hbW9kUٽ=YY1DoŮ1= ٸrEYȐ6}vmؼ>ߎ;(WP(SR7I&IzzzQQhpk"[Sw(VŪAmmGCF9u6A<""… AF#O/nSٟ:jddAo/-µk0wj1DĽN]`k7f'*jB|l6;## oo(,Ē%vtχ ,,pj? !}߰u9U9Va7J*aF6M?pqAz:7 +  XI/Ǖ+Ē%JCzpnI)y.쓩_m޼ѣYJ~~~uk9<,tf@i)Z[꫸YYpqB7uLq.󦌲Yb2&I._aR@p0PX_18ysfFb" W(!Sf,@|5}vŋuFϠRQPUMu|=3/n,֍.}nWL}-mXBBBTT6!l$Ih(t|=BɑKtwYYn_/(Fc?q/=xMk CHjNjYꁠ b1..NS I* |3V&U^ZJ ,K1I2`tuu&1#>>@= g{դߤho͛>^;+GDo/a=lv||x$2dzzPXtR &&C/Xw˅7Ob114==]{LF"99\pDHJX ++ C'ݍ[P] /4kV$,3gŋai)]pwx<9X1yc@Ǎe͞=K̢#Ǚ3Rl1\.&irrrppӧ### o=~a`p8.{ԩ0Y BP Ws:MBԬv|% &D(,D}=* p@Tُ[xOѐ7vqbm{$,^z78wf(s8T{@a.ܱACɳȪZG[X `,WC=<vzR݋BMѤw\-EEH`L̛77} ?+L /q5<[nYjՄ]W?[1Ѥw,#3b1aessB!@*XF#=)” "T<=8:"7c`ٶ[lQDǾSv,z(!MMHMPcc,\8|Nс..|MjZZׇb5`2!#_PowQ9'.66 Crs!c<*eZ`NnS5fHOaeJѹs!@ݚz{oAW,QsI:~8͎O! ;;;>;Gu5z{ag+b+!)嵕FOS}n߿?,,LxuDEqq 6BKKgg,XZP@Cp>^L$BAX,qt: Tnl۶m}==@CܟH`LXXNUgL1[ 9900֭]tɓ',Y"k'lvXXXPPvF'd|>uXh4Z\\T*555n:86o%NEB}1eϞ= 1НpeeWOWXonn~ʕe˖M:UWWR__rK(숈;wKw9$e ǎJIo=?bq~~ٳgbbbX,TY.Hzx.]l#B2d>(-Eu5vQ,씔[[@0@,$$$=Du 𠭩˜> endobj xref 4 16 0000000016 00000 n 0000000771 00000 n 0000000830 00000 n 0000000961 00000 n 0000001028 00000 n 0000002122 00000 n 0000002264 00000 n 0000002408 00000 n 0000004142 00000 n 0000004320 00000 n 0000004341 00000 n 0000004414 00000 n 0000012406 00000 n 0000012681 00000 n 0000012912 00000 n 0000000616 00000 n trailer <<4F5BF7F0519E964BA768AFCE1B1F1A9C>]>> startxref 0 %%EOF 19 0 obj<>stream xb``e``Z Y8:xA#}# 8WAH3q@ w endstream endobj 5 0 obj<> endobj 6 0 obj<> endobj 7 0 obj<>/ProcSet[/PDF/Text]>> endobj 8 0 obj<>stream xWMo7W(rVv7@~pj9ՒV۷&e"3X]__;|Ÿ[ |WV;K쌵"F-@ʚ\?vL ŬB6>(P0Q޵i$cST% ;Z=K:,.~P,ѩ˓ ^Ot|I;Om ^u[IaP~G/ SEJH&@}6١<dCL?\<`KքKPl(MCaϝ=7MD]^ՓǸo^VfDf J@؞fLCt 4olo|0GGB4ٲsB`s!oF$xk쒓RZ{$:ӂH9;+֛6|F1*EpJ{$O}nJ"VF%u\S(PN@Kpg̾Cp>C]:`r)"JBγu2[JjFN ef2,onV@ _m54Ic HX2;kuͦKtvT{Ufw<` ݌Z-;3;9sj|oPOgRJ'E_9b{߷D7=> endobj 10 0 obj<> endobj 11 0 obj<>stream x{8TiǓhQ螺13Q)$(ә99 Y]P2I*͔Rt]h*ݤ=>?wg~}?L_iaql8,6t$Dq "[ 9^ lriLG 44fE|`/A0a!1a!,`/RH"h0 V!(FrBp"BJA3 r:E8&Bĩ߀l"=!I}Hߌ! *!%2!.Bl恈Pdԍ(lB.h,"FI8 @b)2G0`*K?\g|9ρ7bby䟮⁚WMC b9z~qQg 4fPqXR, '%$8`E8 ++`屁К„`A 9p;!("0z J ~8MYytChσWLn=e~O˫N*{Yљg; ͜?q1d@KxIzS+Ϩ(:1})yMxz.Rgw#vEXvfrԠakփsʂ$:^PD\J`[3/lx^Q϶ضmKd']|nT҃6߼L޾[YS1u;AQ=N&X6">M4om BAݵ,j ;yxԟ/iv3fdtr3$pY`> endobj 13 0 obj[511] endobj 14 0 obj<> endobj 15 0 obj<>stream xeT۷Kq w(nEKq(ŃC XpwZVHrҽw~:$o>s7TVe3Al EN'8*-hh4t 8@###˅J ٹ- ^l` cC[9alh P[]b_w8T@3Є `ba0Yآ$kk ;ld%g j MFԤ `4EeWA^/_oˆ6֮'dcA&@S5{SX8{UX;d m([8L Ł&6_u5崘ӿ֔ -l\Qsft{x9>1 0 ]QJwN BlA[ЙxLA`_ `vr;`7A͜P6*d@8@;y tޠD9b .^%~+o^BK&wz@U1MP*cBu@h /?Z7B -@25?:ߏ8Kǯ|W uzægQfAƂ냊K`;(tLZ 3Tk~N}ErOnD>&yq`+խT4Uuӎ~|Pq޽eIm%Jεi|/SՃ)UCx],Zpouq[(U֙TE>ccU=uWT-EdAYAn$RDŽR!G,-Z|V ~s38F =s[iV}<s"5tu(1- uzR81IļPDܝDS?y8Zl`Z3{5B}30\A[N%z&V<x?̣wo"RXZ/70kJ*/nd!UX$I\˔JS"\9&XF}uKwG 4Gi0Kh"~ `(AqeAhcNR>0 %l}NBjL|P| [bPn2iON\yuN:?2}F&I&ʰovܴ~7$5NB]oI]-X WO X)]#!g(8[5>xCtiCGP7nM?>SUf|5%D_a۫6ϕڅKm~ad+޳E:,,-; u( DcAAdqπBkA9]bwft]y4\UpUth:Hv$>8;qҤ Πxxfb+T*(Aڋ>.)#D?xIaUr; HF>'>Ũ_R`+N?hU>dpC'w?U$e li|bGO/̊AX5sl= %dcQܸH3sBV;5>JX-|νOX1CZHc0e#t y@6Tk]kσªۦfR?`س%B,}^k!tm1:~Wd!$#p0Ђn,KfMdi{6#(wJnz'_ԥ=[\舳RRmGr0\I;fJufx*r=#erd.:3'iKwr^L;ko5~N~(?j3łu0Đ0rvul9 {TeK5Su#6,8l A-ݱU_0-0!yKa D2AJD& 7x(:KKp^o'uxЎKVw_ kPMX%= ?!omoALfoCZތ:|y$1V}Ow8+AoF],Hs|:G4ZMRYy3uU(' jK4Iy*Ӯtuo_:s>?(sJ1 ᖐ0]\VuYkx#BFZYgd\s+3ʀC!P6Ly,#K=z9YD%vm\HxYq&rsEn+7CrV;Y08ʉD#hP`lQcţkf]MeC(TkƧi7Nva\ripZFRUl{v*9Kq(D:fc1+lM8+xF/@QĔ6D#sᛋ落*lo ;7qD}ud ӐG9ώC\, g9I[؜pe9UWOϓ1?ռEX͖4}fLA'qt+qֈ]3aD,&3U Tqt;/3̌me|a+3^ ħ'rz+6&`|uE*}Xw#s]b.2Et5; 3|έLv8@d7EއL$p:2~x-0lt*'- ;,|^|)Cj9A8'Guy~Zbq 26-D>|E\Z4st1ƴZicUOl-݂754im* %)@}TΧ)A 6S.H|{c)PLs]gOń4 !H~ĢFͻ^c,};y3ݶ0.^QiXu~'q cހbFҹ tIOL)bf+}ZKI@V݉N%O)>$WO w*>UPZ9<' Ļɮ`"\(uԌ0qLh-o$`-OBM4(u/o|r35Ma+,_7cl [g^-|[,VD #Ζdm5DY8]N^ɢ/:Eem,NƾU5ţE>_X`Nr 7ZVStG7 m.۸'1Ğ|yŽqZ;^d &VO=5ûV;{`+f {$=h5 [˫W5OK]< lFUDavA`.Yt}1g+W]ѨKGiٚj ;"g~ђe9FKSjfiu4Aj* '?c.ѽ hџ} 0M WJp^ڄEy})od'əC#ZrA>jUJN&b H^-^ Pwy~ّx{Af gJYavNYXdH=QfQ˦C9ǧmELԑS4Ӹ쟖#<~gK+*9k,R׋1آFHJVp;MCQe=̉XAz^T$qiÙ%B/'LY"\W\/59" "?"4z0N|T7Y~E1- IbNF;Qc<9W16;K2?aҜEr`xSpH:ݶa~nܱGQn :rakzd_L8c+U!`ȕk ע!!K't$SQGhsC0Z^h_ uKڪ3 ]n獸 .5iмe9(7_mwxVՂ%Oi(&,_r0 Kd2Nb NCܯD:h7?i c`f)y ?H9ٕD&ޖI4JQz`(W{hb0 䫔S!c/v) l^1|ɟe9~iiИgRT,Oјi%) 8_n NAk)P%݁ƾ(A^imd*[j@x.|by/k"w$|s{P4u+1˱}>}K>"̇M7{O7' ǜ}`/鞮g|XB;\.c!RIE]EV$; 7-cFsU[)]j tdmq!΋Õܕۚo7odc4eraqLH!Fb ?9[ FpKؔˎͽR* 'Kn.阬f6e;"RrjbGH)ܧ< ȿ-}Ĥb\agj VM1dS>>DxA\Ս:Y+S$F Ɗ*F/}#!^v&/2='D$yHKwcEZ *Mx9?%ǐP1$1jgo)T? LïN%2,L~`1$o׬Ko0msat)X(ssRpqP6gmդ%;9sB 2m],Qlϯ)?)v̓Tu$%2>.?{/ӬyfZ#`G! UC endstream endobj 16 0 obj<> endobj 17 0 obj[778 278 0 0 0 0 500 500 500 500 500 500 500 500 0 0 0 0 0 0 0 0 750 708 722 764 681 653 785 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 556 444 556 444 306 500 556 278 0 0 278 0 556 500 556 0 392 394 389] endobj 18 0 obj<> endobj 1 0 obj<> endobj 2 0 obj<>stream 2007-11-05T19:48:20+01:00 2007-11-05T19:47:41+01:00 2007-11-05T19:48:20+01:00 TeX application/pdf uuid:9101dd0f-0180-4594-863d-6111f6128e24 uuid:83e57ad1-4921-4c0f-985e-456ca185c794 MiKTeX pdfTeX-1.30.6 endstream endobj 3 0 obj<> endobj xref 0 4 0000000000 65535 f 0000013171 00000 n 0000013221 00000 n 0000016576 00000 n trailer <> startxref 116 %%EOF dot2tex-2.9.0/docs/img/lblstyle.png0000666000000000000000000001702712316606077015330 0ustar 00000000000000PNG  IHDRK]-IDATx]y\SW@ Fe Q""ʥ:FX">Pl5}ՙ5+qVӾ&L(eK"5$@Q!Q? 9r~ ǁ DCCCuuuyyyiiiSSL&(ikkd2 Up$|XI0LAzVYYRjjj·X 'A4ٳg|@ `7n>}0P(O>}IAbcc׮]VI a (J %Jx<E0J#NVSSS nb. VL&ooo#:>|g޷o_MM͑#G,YbZrssudBʺtɓ'A#&Y]]MM  4`0hrywt:)C!--m\.7!!J[GٳgOjjjLLpZ- ETD2 b1a˕H$Qglrp=0$1l6 &A6=! Hjj\.׭e\.Hif)X,KH$S &ӱ<(fGr9FQ0( <O7p 6 Vbf!y>L _ۂZdRaaF* nЏH!6=`TJt$͖TKAf1} (jtK8\idLLX,Fd8X́lD%JM4#*8JCns8'cLŊMi<#p8(VQp8#`8AoSVӛ=yoliݷӌ b%$fh<oX ƶ W&.Yd! }'h0L49+w7]Ys^S>+*ʫ> Ar s6?s TjiR{#i[ciᄌLT^F )}7ݻFHCbOO8|R//H亶 Cp0 Cz:m yzzR*;63322`ժUTD X2Qo%򊊊nW|%nej=lgNJ󪮹r\({vKKe'l {SSS<ڵxp*k׮GDkO0EMew)Ͻ75"n7SHqox,^!#M+qwf2+}te YX,6|qBU(. s@DEE |fi|˭^n۠n?wT@QZڕ俕VߑMWLyg*L+#O�yk/(PaFvv6}6sG:\V'5o-M]W٩ۺYp?faw2)4XL۴vTHdmW.׻4|sh93R"oK1N`{ihh0~U'NOOHgpeֿ:=:;Rv.W x㕓e=&ȊFg_˰>a}~믿A`ym% 7n0Nl'k+ڧ,pY,Vp?_ sKN-OK[>*Lj֚X,VRRF# =誇zhj8jUnva\cqp tVސi!xAtQą )đ.(o܍]xU)i7y&"fP*΅qÛ # I5<\f{臫T*?5>-_2ŋ[{ h,ЄN'Ս >>Fy C֭[ĝcƑQkm# eff]^PQO<*Vgoo H+e@$/ A{{{=YYYf8|ҥKI%ںN}^#) @kb7 hlv|Ue#I% JH>onÚL$~.K?u|i5=++ EQӄنp7zJz"00033Of^SXaC]adUFɁ3e^m¿s~_SǏԪ2Q3qES.ʩ(P-00P Ňq0bH$ڻwןtAb!`۶m|9(]v,fm۶ٙ6˸Ky!ڼ+7o)3do ;mllbFZ_RO0kJ^sݭVCg^-$ΐ6ۜHJJ0}pOOO.8gd}yxzzboXFG7)c]$çNpzY\v¥ImJ ֳVOvSʞ?xo#xsssA߭'00ðZh4֭{w1̝;W$Xd&::… .../ۡ{].6ȗVW?m r-}-wgjNɝ4;c''}8NoP6۱hv<0íׯ_?o<=rsх5O:::L!,XX,Ǘ/;,kׯѧxΟ`c†_|ɭGo w7L<ܭfCL?qѾobeBJJJAA'1}#G3xd/ Ett4aF yNtUU濮iK j.Rik,ZlesTpDJ//VX& ӽ}WTW#TW\)3GCPlذA(>At8&nݺ+V0LӴ/999--).\bƍt4y~~~tttLLQ'P7z۲ r8oݼ)Ҝjs ;WK͟B pp''(9sZVh4[n]n]3`8$7N$D"޺|ܸqs"b޽&`aћajAPlmϞ^o[z [Ɛa'Ltڊ3&:- q1a lmP}bF7P5RSSGXX,MHH0P(bcckjjHz܁ fpС$g| m4-ޯ7C{S~ĩ3m fc-#u+ai > YK,J6m2:9wuu&魳OsQF/L&J&N7}0ȉ狒O/NLe=s0zӦܹƢ7b8..Lrssb ŗ\.W9휺])FQAP0Х+VTx<Axj#_:0o=W%rDWVoX,#\K: F``aeIR0 äR&1|A(:rP($Qv/!]iƣxSP~&@ HJJBQ422244t8ֵFJb8---//ðNuγ.]D\!.zcc# 111t]WOZ !!!7F/^xȑ nd ;|>qNhVVVTb0q8Kݦ r|S=<ohh8{lrr2xb&A ~jPHhlPÚR BPeR a,]$G(1 ???2BVjjj233g"p$ BQ\\|ƍ b]i0lww@___C-s 'AvǾF “ 'Ayy7 $I A2 $I A2| @$YD"R+ F *1U怤4JEJdɞ:vt5i Ad󏶊3Ҿ;EW~̺oH h/%G_y'~ux̦[\{.}r;#8.$*U:1G,Jl$ßd 91 ȕpd p孼29[c \>q@}ə_|WXbU]˙{T9'6__}`,^w2aQtoӁ4N;L)Ym t!rϒVG 爘hr߮cٸуfbw'.,5s SEpGU{,&LgkXo^1Ӿ!Dei};qFt?זy 8V>qΫWlX܅kMCy%!{ōe=2?е{qQioqÚWb,y5b$u8&[LζRTH$]'c 9<EFǶ.a)=s?nNO=6+l[{| ,\=+ ^߼%M}Ng$u8`r*OzGKOuX~Nߖ8roϖH g{eЙz8=+4qނ9tutuj;lfFF.|5Rc '13<-[Q~~w ["(jqj X&Mg2x8t7tɄ)Ă\NXnl5 o)> endobj 2 0 obj<> endobj 3 0 obj<> endobj 5 0 obj<> endobj 6 0 obj<>/ProcSet[/PDF/Text]>> endobj 7 0 obj<> endobj 8 0 obj<> endobj 9 0 obj[518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 529 429 433 0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 0 485 0 572 0 465] endobj 10 0 obj<> endobj 11 0 obj<>stream xRy<ߖI4֘EGY3c14 ʖ%Q,MuKQJZH Eߟy~0eGg,yb2:H]`G 09 $L H f?`LPzBgևsf@(Je?HDؾ A$g& Cu,888A +$BHD% ʀx1L@2)8V 46lj|$& @2noY*F'o$}J 7If,$,T7OsxD ű 4*ˠ@@O:5ȊIT6 hAFd~von4 T%470oE]'_?]f 2IT@ ?">B\$@e@r &',ȏ"8@~7*a# 'B sC(~a?23cr:z(@G;H f@{E3 1 $BDX3呖%[4yWb5 ug^Jjz*~AIdKFlx7ضC(Yx8%Y~;=?Ͱd@܈Xȝ-5vŲIBO"O&NeBܴp59\ڹ3gIj}Xhm+kO{ -ŗɲsDL\ n7l G-x3pz`Y0 `ULZsG%Gsa4^>ݧ 1XeF~uIswr+ؗ ,LJр0.>,b qt _N5[uNL . Zt[WTァQci铷NmӍeg͙mMeg%t5ƍv7Iji}b{yֱ?~Ӌ`*1nˊ6^\)}OshyMRRsL/ [=&e.I%JDxZB+LO[F?U=T4Y+2jzY!PݶūݎgJVUq'FT;Z8uؼtXʾ^ `YyRt@N3f-L$NťcGxģfJJĹ룶KEVHҔoeN3X,A5$ %Ⴄ]HeXcw@Y|9eܯme4>Yن5~[qMŧcd+u1][rnVj˖,9k'jitv!] ^ģmy% ?a:K5./ȽGb"2j.:6V^WXҵjC6x t F-,uJwW.}"\EJ̈K thR`' {%;!6HĴ%<~Czsڶ`)1;?ߧ LzU!'&<.nvET/,H΂b&)о_z^:/b enu摈|4PY=aڢn'4b3?_C2 endstream endobj 12 0 obj<> endobj 13 0 obj<> endobj 14 0 obj[877 0 0 0 0 0 569 569 569 569 569 569 569 569 569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 508 0 0 0 0 0 323 0 0 0 0 631 569 0 0 0 453] endobj 15 0 obj<> endobj 16 0 obj<>stream xSi'xE(@ig@P@]h? C hhw Ġ&7V K>N3{65Ng#;Wk_ź°"M79|p3'JNPv[SɣuUzӑkv%ͤ~͈ҵ9׷F/J*ZW `qtv(*#Anzǹ_XypcCߓ[[mA"Aա,%uR%+=gA=9I(w&uSf 2Eu{B6\6"R%<}ܸmqM^esR>EmV8&zr,sݯ: O |F9F}W;ert(==-?d#4fHEF0:;647ZЦHE 32[}ib;Hm2^au0꺵eyK+PM "|>[شL>-RTQS#b^Y1tʡ؞Sr6"VJ\H}54K:F.( H+9A{㕳 ˨%\PԥV/TwCi*lU xza y"-W oJm) f}~h%"c7釤Bz5y)Kj)m(5q8;^.Ɯ·K9%8F/+%хS1gr7ή\1[ ,+"jVe2p~cB[#[3FST; 뻳]0r؞uUꥺ]ǑMgAw^q禮tnċ{mռk^O@wmָS&NL%k&|4̲g#w\Qў!~F\؁DTl(IGL].I9 n×# @4aIuol< +)oW1:q}lQFS{d?j3.2<|/5;Ⓑ_c;})35ʻFSv^zi{}/om %2o50Ź()}fc*Gs:ĝ1lQ/iνȴSЍ HӺaJJR>Vi܆q_Wzk|oyyMdۭ3Ax8NPԽ0Y^c//|‡CBr!%I٭ƻHYL[bH*ke֞g㿡ωҿx %Imú,<ZsaW##2Ε; 39teJt= s--{y4՗>Z4v;n{=zb=ar 3ej OJYqK4'4/~pڦ\Z@&mM|GyKc, 6 'e]]jzpB'  ~xŦxrvﺪW5Ws_TI~6;Mg$eJ>~9tpV_bJǠg558q/u !2s<ى݃@ŎCw~mwl:ή=i~c'oF^PAS>Co)WqJ6y$O'܍4F>N/y :|Þz-/p$^ۈЏ%~ U\CX3% wI˜AZAOyv$jKG"OFDX뼠+"*&K|`Z11߻/?nf[)eTit!>q{Mk8_t :2PLdz}f95h,Ųe/ݦRT# F - qj%_O.*@tiuXh7Yz%KB)Ǒq[mш>ܦ>/[T_#_MI-fOT # x D&zHLm` endstream endobj 17 0 obj<>stream xT=1WL f-DQ]$*>3vIe<_~~9O뫼%/P`o0Cw(S+LJM.f 9;!K.SL,׌.p cňn]Wu cs2K\j̎b}P1e-Csǖu{̹SWVZ2*-9EE@:JFAL )̉I)L S-­(&C3;@P|W,fh|Cl)yΌT J17I2^ Yjx.Z":¥N1ҳpd[yeLGGէg;.#zEfRS={UxN|5$<I8߈Q1K3Z7^zRuU;>@&/_}~>CH(SɅ̄dz{˽ #c!d:e7`i,#,Z&ti HMR'n6l5WanܲQJ}Z ѵA>}3iOzI{ endstream endobj 18 0 obj<>stream 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 TeX application/pdf uuid:9223c33d-61fd-41b5-add0-16f3aa5b7c2e uuid:cf27f72d-980e-4d4e-be4f-d51de8e3a4a1 MiKTeX pdfTeX-1.30.6 endstream endobj xref 0 19 0000000004 65535 f 0000000016 00000 n 0000000076 00000 n 0000000156 00000 n 0000000000 00000 f 0000000290 00000 n 0000000386 00000 n 0000000453 00000 n 0000000595 00000 n 0000000764 00000 n 0000001016 00000 n 0000001219 00000 n 0000004426 00000 n 0000004569 00000 n 0000004777 00000 n 0000004970 00000 n 0000005206 00000 n 0000009301 00000 n 0000009987 00000 n trailer <]>> startxref 13334 %%EOF dot2tex-2.9.0/docs/img/nodewidth1.png0000666000000000000000000000761412316606077015545 0ustar 00000000000000PNG  IHDRGjSIDATxPghYZ9) KYhґ\evsI.w)U#^NH={`bMcC2,+ʮGdw5*?ydpy߯Ͼϳi||\L&{E*s.U7AFh4 (hQFA4 h4 (@P3wܝ;lќݫ3Qa5o`'K_ Fm+ͷES<^8>4w=O~~Br:38w|Mp|h4Lf-wͻ} u:}` 9q//YzS^hϯmШqһ-_k8 KS_o<x\g]砘L>Iߋq4 (hQFAFh4 (@QFA=wקW3`<^{56222z뭨*) pZZZkknOdEt444h@ESOB!B(L-v<G>%p8~?zLڱE'gdd!vfjzSDۗzԩ Fo _;FWqqqFFܱcGU֞MӶo.6"Ţiڑ#GhTeǏxQť>QCCCayTO1fB/QOPzjO4-( =(kɒ%RoȧQ͝;Wړg4gȾ8>}zWzz^{U_3B r<M04whBzX×̙&xG4 H}=&FϞOFEɻFJhFw^>k>8쇫3gr5&wᯮwbҌg5k_9<ߊ2S\>eCv]+˞SNq|ug& 1>7rc{~$f~ѦyN9ףc5ۜf,`G[CI}BKmoZ#SNq|K oֿ=)Q/+IB{??Ν)x._Ƃc7{͊uGmڰ:+e[)=~_?qߓWDG24 h1$ݡ4;V+4i4 :vQF1U}QJJ ¸i%S"홛̞Ga\>Fէ?ޑFaDxG&Q ?4 zF 4%#Tgnk8d_Qɾ8J I+Шↇф޾dq}'R/< ֞$>s[{z(ᰐiTqΝB0gq}RʣQ9sF]y4 (khh{`I37'7&SH$"_xBbF(YB'GhzzRvJgZ].מ={]N>^GYYY}}~1'#G<4Kzޮ.;3FT[[k.p8z.\11k~?++kppPۀ8בi޽{ #W"&iѢE4̩I 0荔[ĉ6MOti3^S&IϜzzzID"jzR?(qt3'>sJlɣI̜$ڭwa˥) ͜$ڭRTTD̜{1ZWWhb?sb~1E̜ }1D̜G'<77fYG7IɋQUjtaۭ(*5sjllTczGB) p[8NKKSczѩ0gN6M@itϜ |>_iiǜF2s2}N˗/Q>'B>Gj L4:]yyyF{BU=4:N /&zY }1 vQ&ѩX,nw5‹Qr?FiFbظj*5Nnl---qhjj*((Q\{NCQVZZNSLSgZ5M;t"eU:??F7}(ݝ;w~_xb,:P(d6/_z_zؿv%CGo+W !֭[נ]45IIIqẺ:%oh_{Glڵ==={x Dg#YPP /az[4xgc\,Qta^Q(@QF4 hQ(@F4 (hQFAFh4 (hQFA4 h4 (@Q n?ts;;{u8*4j^y? 6driI+ÿ޼p44 k{}^cţ򿿨pق9b> endobj 2 0 obj<> endobj 3 0 obj<> endobj 5 0 obj<> endobj 6 0 obj<>/ProcSet[/PDF/Text]>> endobj 7 0 obj<> endobj 8 0 obj<> endobj 9 0 obj[518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 529 429 433 0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 0 485 0 572 0 465] endobj 10 0 obj<> endobj 11 0 obj<>stream xRy<ߖI4֘EGY3c14 ʖ%Q,MuKQJZH Eߟy~0eGg,yb2:H]`G 09 $L H f?`LPzBgևsf@(Je?HDؾ A$g& Cu,888A +$BHD% ʀx1L@2)8V 46lj|$& @2noY*F'o$}J 7If,$,T7OsxD ű 4*ˠ@@O:5ȊIT6 hAFd~von4 T%470oE]'_?]f 2IT@ ?">B\$@e@r &',ȏ"8@~7*a# 'B sC(~a?23cr:z(@G;H f@{E3 1 $BDX3呖%[4yWb5 ug^Jjz*~AIdKFlx7ضC(Yx8%Y~;=?Ͱd@܈Xȝ-5vŲIBO"O&NeBܴp59\ڹ3gIj}Xhm+kO{ -ŗɲsDL\ n7l G-x3pz`Y0 `ULZsG%Gsa4^>ݧ 1XeF~uIswr+ؗ ,LJр0.>,b qt _N5[uNL . Zt[WTァQci铷NmӍeg͙mMeg%t5ƍv7Iji}b{yֱ?~Ӌ`*1nˊ6^\)}OshyMRRsL/ [=&e.I%JDxZB+LO[F?U=T4Y+2jzY!PݶūݎgJVUq'FT;Z8uؼtXʾ^ `YyRt@N3f-L$NťcGxģfJJĹ룶KEVHҔoeN3X,A5$ %Ⴄ]HeXcw@Y|9eܯme4>Yن5~[qMŧcd+u1][rnVj˖,9k'jitv!] ^ģmy% ?a:K5./ȽGb"2j.:6V^WXҵjC6x t F-,uJwW.}"\EJ̈K thR`' {%;!6HĴ%<~Czsڶ`)1;?ߧ LzU!'&<.nvET/,H΂b&)о_z^:/b enu摈|4PY=aڢn'4b3?_C2 endstream endobj 12 0 obj<> endobj 13 0 obj<> endobj 14 0 obj[877 0 0 0 0 0 569 569 569 569 569 569 569 569 569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 508 0 0 0 0 0 323 0 0 0 0 631 569 0 0 0 453] endobj 15 0 obj<> endobj 16 0 obj<>stream xSi'xE(@ig@P@]h? C hhw Ġ&7V K>N3{65Ng#;Wk_ź°"M79|p3'JNPv[SɣuUzӑkv%ͤ~͈ҵ9׷F/J*ZW `qtv(*#Anzǹ_XypcCߓ[[mA"Aա,%uR%+=gA=9I(w&uSf 2Eu{B6\6"R%<}ܸmqM^esR>EmV8&zr,sݯ: O |F9F}W;ert(==-?d#4fHEF0:;647ZЦHE 32[}ib;Hm2^au0꺵eyK+PM "|>[شL>-RTQS#b^Y1tʡ؞Sr6"VJ\H}54K:F.( H+9A{㕳 ˨%\PԥV/TwCi*lU xza y"-W oJm) f}~h%"c7釤Bz5y)Kj)m(5q8;^.Ɯ·K9%8F/+%хS1gr7ή\1[ ,+"jVe2p~cB[#[3FST; 뻳]0r؞uUꥺ]ǑMgAw^q禮tnċ{mռk^O@wmָS&NL%k&|4̲g#w\Qў!~F\؁DTl(IGL].I9 n×# @4aIuol< +)oW1:q}lQFS{d?j3.2<|/5;Ⓑ_c;})35ʻFSv^zi{}/om %2o50Ź()}fc*Gs:ĝ1lQ/iνȴSЍ HӺaJJR>Vi܆q_Wzk|oyyMdۭ3Ax8NPԽ0Y^c//|‡CBr!%I٭ƻHYL[bH*ke֞g㿡ωҿx %Imú,<ZsaW##2Ε; 39teJt= s--{y4՗>Z4v;n{=zb=ar 3ej OJYqK4'4/~pڦ\Z@&mM|GyKc, 6 'e]]jzpB'  ~xŦxrvﺪW5Ws_TI~6;Mg$eJ>~9tpV_bJǠg558q/u !2s<ى݃@ŎCw~mwl:ή=i~c'oF^PAS>Co)WqJ6y$O'܍4F>N/y :|Þz-/p$^ۈЏ%~ U\CX3% wI˜AZAOyv$jKG"OFDX뼠+"*&K|`Z11߻/?nf[)eTit!>q{Mk8_t :2PLdz}f95h,Ųe/ݦRT# F - qj%_O.*@tiuXh7Yz%KB)Ǒq[mш>ܦ>/[T_#_MI-fOT # x D&zHLm` endstream endobj 17 0 obj<>stream xTK1 WEV v"qc{&mu4| D}Пa6YMH | hPZVE( P` QL1VS=l>RS %)"vG{wPp6#Đ% y]i;&R{"u k]Wz<}w<: Bti$'| wEsIYges$y5Y-c<FNn0Ox4?qϣ \ٝ9)N7'D,I]ѫwoR endstream endobj 18 0 obj<>stream 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 TeX application/pdf uuid:b47d2215-a7d5-4f5a-802e-a7865c1278b3 uuid:bd47d410-645b-4553-a14a-fadef0cf7f8f MiKTeX pdfTeX-1.30.6 endstream endobj xref 0 19 0000000004 65535 f 0000000016 00000 n 0000000076 00000 n 0000000156 00000 n 0000000000 00000 f 0000000290 00000 n 0000000386 00000 n 0000000453 00000 n 0000000595 00000 n 0000000764 00000 n 0000001016 00000 n 0000001219 00000 n 0000004426 00000 n 0000004569 00000 n 0000004777 00000 n 0000004970 00000 n 0000005206 00000 n 0000009301 00000 n 0000009983 00000 n trailer <<524923664F5117409ABB128AD482C795>]>> startxref 13330 %%EOF dot2tex-2.9.0/docs/img/nodewidth2.png0000666000000000000000000000724012316606077015541 0ustar 00000000000000PNG  IHDRWGgIDATxqPǟH\ {]gqubOs= 庪asd=w 3 nCu{ : $ Dzhǻr&yߗ$y}>seh`C$|\h: k5a}R㿮vӦwin7g7h5r=ԭYk֢-[0߇7oz/n\=9f0G s|$ -EU7>Co<:mMw}!,8cAʜ~ =|kiWCW/6X8k8χ}!hH$V_rRs1>>^TTd28j BVSTWW/f9th}j KZ=455! }5)) 7o^z|&8LVYYEm۶ꔔ#G|>(J$G׻nٌj0߇ Fm@?!P(ؚ!"9h4"fOGv j5HT*~K9^44:nddd׮]~+wr վnKrЉ'`ɾnz\00߇X_Ljfj !9]JԎ;,A 3 f1ޚ3!B}}=X3?(P<ֽO?~`09s&P”%b+ j=}}"X,Jr9nsf^Ecě8y$gglhhd/_xevg0R]^T1CJ%OP@ϓt^xC܇y)\G*JP#Jgbo4 }piڼ RmmN?xQ׋bО-L&Sffl^>)񊋋s&P8p &g9-=0'l>:ѣG!P(;㌋ΆgTiӦ`p(:t~:lO>v=3P_WVV.GTJ$ػؚ A{5#|ZtwwK$˗/'%%Ā322Ht:9_\ bX;{YnIdzڲeGE_JHHgv)tzdyT\.׼[avD"YrEGGFO7`L{F@~~bJKKsrrJJJ6|>SI{Ù͛7T*OÙ 6 < }OSy ڇ9999=zڻ ڇ9O<BhUG>A8RXXhX@{IKKt=766.tx@'99-'HP(4 =[na[{$I N=lٲe^BBBBkk+h#sK}RǨG8"J@{q$--mhhǔ GU*h8r8=vP7 uh9 bb۶mnoTHE7NaAw 5JK(/)U6˖S=u^W~}!a)A7j|sY<{|!^$GL+r/ljoϟP:r6H>KqI+W tjrɍO/_| +Gf ֿFuf&x󧍟t;!flX+= (2>S9?k?X3_C#/-ߛ Tǣ?|/V޹!f1јښk{u;!OGG׃@Ca`= !IǔOc1/&&Ǒɴ4G=^5tA{nrJ;(cG /JǴ1믿RRRR@{Vo׬Yc"DžyE>h =p89=.PҜkDž~D=H$1-233A{L kׂzcDwwBGǂhr|͠=v,t cAoo/AnA{,X,^D{46ДLӕx|yQ~$+Ԇ| </+Vd/`tt|B!^رcGbbL& t۷{y|Z FcFFFuvSqO PVrBe---$Iz!#Ce EEE9.W\ٺul^-8j]tgbT*塒 Bn6v!j|A$h #4!wB{䖎 jVRK劎tLh{?>Bckkk#}X9}۷o?x h":vEzq!3]FFFgHΝYAV=z@$}cz*N FQ{$I~K!{=T/["9$IZQ1@EEBf }F7Kڳ'O p\D C $A@zh42;6Yg.krB!{"A)++KNN&I!!ut\SN1?2HT*sss 5[Vڝ> ٥ҥKqs;vL*16%//$**c꺺*++Y=$%%Q7jPT}}}={hZWUVVe0hUUU r>G|B!gxĉ### o\ }IE9_@{|Zjvo;uCfzKҝ8pw㣥~[;-N};kmQ/޻Qx!LݳY>Oݚ& mٻC8܇>7uqiGB?ՓcipcUiu^hc+@36CpxՍtee7~/NW0x~}6YlCԍ‚B{Sߗn앳Y@~ҫfiGA{,G3暷O0xhD'Z_@{|?*,T?3IENDB`dot2tex-2.9.0/docs/img/pgfarrows.pdf0000666000000000000000000003567612316606077015507 0ustar 00000000000000%PDF-1.6 % 1 0 obj<> endobj 2 0 obj<> endobj 3 0 obj<> endobj 5 0 obj<> endobj 6 0 obj<>/ProcSet[/PDF/Text]>> endobj 7 0 obj<> endobj 8 0 obj<> endobj 9 0 obj[518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 529 429 433 0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 0 485 0 572 0 465] endobj 10 0 obj<> endobj 11 0 obj<>stream xRy<ߖI4֘EGY3c14 ʖ%Q,MuKQJZH Eߟy~0eGg,yb2:H]`G 09 $L H f?`LPzBgևsf@(Je?HDؾ A$g& Cu,888A +$BHD% ʀx1L@2)8V 46lj|$& @2noY*F'o$}J 7If,$,T7OsxD ű 4*ˠ@@O:5ȊIT6 hAFd~von4 T%470oE]'_?]f 2IT@ ?">B\$@e@r &',ȏ"8@~7*a# 'B sC(~a?23cr:z(@G;H f@{E3 1 $BDX3呖%[4yWb5 ug^Jjz*~AIdKFlx7ضC(Yx8%Y~;=?Ͱd@܈Xȝ-5vŲIBO"O&NeBܴp59\ڹ3gIj}Xhm+kO{ -ŗɲsDL\ n7l G-x3pz`Y0 `ULZsG%Gsa4^>ݧ 1XeF~uIswr+ؗ ,LJр0.>,b qt _N5[uNL . Zt[WTァQci铷NmӍeg͙mMeg%t5ƍv7Iji}b{yֱ?~Ӌ`*1nˊ6^\)}OshyMRRsL/ [=&e.I%JDxZB+LO[F?U=T4Y+2jzY!PݶūݎgJVUq'FT;Z8uؼtXʾ^ `YyRt@N3f-L$NťcGxģfJJĹ룶KEVHҔoeN3X,A5$ %Ⴄ]HeXcw@Y|9eܯme4>Yن5~[qMŧcd+u1][rnVj˖,9k'jitv!] ^ģmy% ?a:K5./ȽGb"2j.:6V^WXҵjC6x t F-,uJwW.}"\EJ̈K thR`' {%;!6HĴ%<~Czsڶ`)1;?ߧ LzU!'&<.nvET/,H΂b&)о_z^:/b enu摈|4PY=aڢn'4b3?_C2 endstream endobj 12 0 obj<> endobj 13 0 obj<> endobj 14 0 obj[877 0 0 0 0 0 569 569 569 569 569 569 569 569 569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 508 0 0 0 0 0 323 0 0 0 0 631 569 0 0 0 453] endobj 15 0 obj<> endobj 16 0 obj<>stream xSi'xE(@ig@P@]h? C hhw Ġ&7V K>N3{65Ng#;Wk_ź°"M79|p3'JNPv[SɣuUzӑkv%ͤ~͈ҵ9׷F/J*ZW `qtv(*#Anzǹ_XypcCߓ[[mA"Aա,%uR%+=gA=9I(w&uSf 2Eu{B6\6"R%<}ܸmqM^esR>EmV8&zr,sݯ: O |F9F}W;ert(==-?d#4fHEF0:;647ZЦHE 32[}ib;Hm2^au0꺵eyK+PM "|>[شL>-RTQS#b^Y1tʡ؞Sr6"VJ\H}54K:F.( H+9A{㕳 ˨%\PԥV/TwCi*lU xza y"-W oJm) f}~h%"c7釤Bz5y)Kj)m(5q8;^.Ɯ·K9%8F/+%хS1gr7ή\1[ ,+"jVe2p~cB[#[3FST; 뻳]0r؞uUꥺ]ǑMgAw^q禮tnċ{mռk^O@wmָS&NL%k&|4̲g#w\Qў!~F\؁DTl(IGL].I9 n×# @4aIuol< +)oW1:q}lQFS{d?j3.2<|/5;Ⓑ_c;})35ʻFSv^zi{}/om %2o50Ź()}fc*Gs:ĝ1lQ/iνȴSЍ HӺaJJR>Vi܆q_Wzk|oyyMdۭ3Ax8NPԽ0Y^c//|‡CBr!%I٭ƻHYL[bH*ke֞g㿡ωҿx %Imú,<ZsaW##2Ε; 39teJt= s--{y4՗>Z4v;n{=zb=ar 3ej OJYqK4'4/~pڦ\Z@&mM|GyKc, 6 'e]]jzpB'  ~xŦxrvﺪW5Ws_TI~6;Mg$eJ>~9tpV_bJǠg558q/u !2s<ى݃@ŎCw~mwl:ή=i~c'oF^PAS>Co)WqJ6y$O'܍4F>N/y :|Þz-/p$^ۈЏ%~ U\CX3% wI˜AZAOyv$jKG"OFDX뼠+"*&K|`Z11߻/?nf[)eTit!>q{Mk8_t :2PLdz}f95h,Ųe/ݦRT# F - qj%_O.*@tiuXh7Yz%KB)Ǒq[mш>ܦ>/[T_#_MI-fOT # x D&zHLm` endstream endobj 17 0 obj<>stream xZKo7 Wfh ط hCzHg,ufڐH9Zέqra\mcs9r;9iUm"j$ȷpSjV'e'q*m9[(qQ2| ^3GHq5Q!¹UP'#Hm;aKZik'[XI>.}ڼt<[ל*Ƭ L>,僣 jKVa৤*/nշ!Rr!th!f/󦥩|ؔ$XKԾK|4Fg4 eo1cN<|V9۔O~ݟS)0 DeǽSJ{4cv#G@8B8>h; .zQp)`45Rt#Wɑ}:tq\N@RIBwBoIk@"V֞ wڑlV02U"}ÓY_ȣWș=<z30%E~jdcC4pTJ:{ ,#(]h־O(lj ssS5ϨQvbz |xu"lӭ܂:Oeƭέt91'{hH|ci&P*,UL  MesS2jsT8boXɃla栣0077T|97ykLGDRsᄹ#t+1cs|GxX茖er'#܄*~6+wpRJH너'18Yi^ Δng57xMmk:tTˑn|X"'߀+8+G!6-omۛ:9($}% _Y G!~F""2/|݈lp:'lBMv&AlhK\S5;+Vh[V<vLX]ۈ)A* ;P ERO'N Vi\ 2bIkatVQơ+0ZexDma(1B&R%n(w++۔<ڵZIR:!}#B#k]ġ5NgEnTPơkEkϕ6@T8*p^ԩh7SB 0:e!M]i/ޥ:tN%^sv.%Qq_{VԈaz~F7ᷤr[/IJSS#] X!^lZmN@'Ձr1P- v_vAfba^az?VT[;xJ7 ;^ endstream endobj 18 0 obj<>stream 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 TeX application/pdf uuid:72758221-0875-457c-b481-5534d77d1e27 uuid:cacfad8f-7cf7-4a2c-a762-37d0afd3ff8e MiKTeX pdfTeX-1.30.6 endstream endobj xref 0 19 0000000004 65535 f 0000000016 00000 n 0000000076 00000 n 0000000156 00000 n 0000000000 00000 f 0000000290 00000 n 0000000386 00000 n 0000000453 00000 n 0000000595 00000 n 0000000764 00000 n 0000001016 00000 n 0000001219 00000 n 0000004426 00000 n 0000004569 00000 n 0000004777 00000 n 0000004970 00000 n 0000005206 00000 n 0000009301 00000 n 0000011412 00000 n trailer <<1B1E03752E8FBE47983135E6602559FC>]>> startxref 14759 %%EOF dot2tex-2.9.0/docs/img/pgfarrows.png0000666000000000000000000006261412316606077015512 0ustar 00000000000000PNG  IHDR#,B pHYsnu> IDATx]yA lmmƆ\X02Oaccc[n@ b &P nݺLL4q0P7UBQ[[Pi \sss..X`vzzVTFGG[ZZ@"6m}GRVZ |[OVV"gp81::z3Pf yy{6q ӎ 7R}pU/TnyEWW7SPF77-DcǾV}-))uڴ7[`2ٹ `ݻ>A6۫ p3h5kFǾVf i4ŬYXj61xO\|\o5e(nT_dOs-kL&744zŋh4B̼pBqqq99[겱1sss Q)Q:ZWTTd 4;w$&&VTT@ )Y)IJkE%EЁt+. `jjqFZcCCCSSӶXY#q @!11ٳ{ٮ Wcc%J^%z(!!ҥK R4׷Le$ʮ媩2ӧÇ,gb׶ֶ KKHKK.efan_P~ECcqzѽQ,Xr15,,Lk__t鞾Y|...vv [)gnj5/JJE"M zzzf䷆oS8;'-{(i(1A'kۛutt899Aeggå i^AYgNGGGuulӃHZD@WOrG0# OzzzJKKUU&|SUsryfAAA$i^C%mjijXą-[; !:̖DS q~1ݻwܜrrΪ2Thnn4cGڑr/EKSKSS$=v>}~Z>zH`0P! ׮]x"p2Yp7jjj C;;;'YG'F;W_%թ CNXXX;vUҫT O KM Jtppprr{;QaL& +hD@D`gh+;ddR nGpU Wtts/{ީqx1l:SwOʷJJ imC-]tBѭhY#((+?-~WSIeSۗoリiBBB։}c_>~YLH Hw IJ2e- acc9Ǐ9==+-ݮPnb29`8iLLLq|_gdfJBcfͪ-u-_?)XlѢ~/!TdjjrʕбQ3V[nٿo5_e' F逑qk yOo m1c0PPPX䢢"< h/B׬Yciim62i*+3ôz8SmZs{'""rСC!mmQ!a!5e5 999UUUfȴ@HHhڵ^#IS2VX0ܶO> 0W+..^__?66d^6)^rC=+ x7p8[ggg ȹ4$ٳʎJcnqqq@ ֭[ghh8KNڌ jccžHkAuuEE[laz?b``###1uvv޼ySKK @߿?:6ӗO6b V-1 ^m6QQQkk봴G0R:xέw,WYN;ͻ~ƽo޼{>| s# ޽{ŋRR'v)Vqu8,eqVrֳg֭ ܰaL͜ﶴ]v醥ӮH:s d155~xx򫼼|nn8,??/w|<>pX\zdz]v .0yxx<iʃ`d;mMMM(`… M۷o[[[̀{bIZi( tR=fCb=I}i&!!!:ϟ:c0/u%ظAY[J@,+ ŋW*߰,9'OJJ K1^]~BY/8^Zk2$IF\Çe\pq___m:A/C3_pDشiSII ȴ xwQGiD1?2Dofq;wlٷ/oiA*ʆs pYXX3%Q:EGG;47nmh`=۷K2*>~*ZF2~q~=tVŨL@ ۶mKMMpASKQ)wS9eF1 Cybعة;JՕG~dPWW@]kv>ɝg{ѽ\vp.}\2fcccƈ w8p˗/r8θ0 ѡDfØa|zIf 5e5CCFXXOn;I"&6Z7? ill gP&--M}jA@@ N VV[@/cڥ8,Sɧf-IĉFzP= f֚͌5E1n^0 AM{G}C10Sw}vΚϥw޹NrRsLL'Ll#? oFpqq Mf1! &((B;&hܼNwe(%+]W^Ru%kJkЭS!&SاC0W?ڵkmmmemmm j- p%q8=R~VT4ͣ[78]ֻ:k_^Mh~q BO<),,544(Ӯfh~*4?EzPneA i3 >}g97442t%, 2PS6['O˽7aEz#2m׈k5b:՚ Iv60}*===Z ;\p? `B\у899rRrh-+1(76PSS۵kWll7ofT)G9sqsL6l:hnn 2mVFFGGgTWX1ԾpB{{̯_i'%zELԷ斟9YSS#**ʸ;v6vcc.J}^?Lׯ_o߾IVWWpZ:a]]]ŋ?yꮑNg] &^^^/// u9YYYFw9sFFFFGG>??7>0>qE z;zVddecc3 +//zNIIMHHHJJ277WTT,U*&zXz(sdݝkvF(.~eeeF3++tNN @ K:FELك9f|,;%ԩS\ȴ?ٳg򢢢f; S`ܹ!//og2?EivǢwܡ+?`L.((pss355]f8aeeа E"slׯ_ommUbtwH񱳳[paaa aLOOwqqɈعtgx8~#5~!--&U-644ӧmmmDf 0fՃlB{444,--R"''۳*: `Pc0={ZXXQrƷmfgggnn WW|1i1+z ~_g%g$ѣNP a(k)hQDRuGMrrr/^ܱccHNX0...<<]flnrqq ˗;MM]vӺM*qqqFaZMMFnnn@@@PP0?L{y 6;2E/]Ka0LMfH}왎Nooojj)uTz{{D$Dcb U ]߿Ow48}wbbbfj}}} }v>>lԇL BўB4؄@c{v#""ZZZ544^:SFƖ/_>ǏWWW˛SaZ___pp5kuHu80<2|ŹAJ 5#ϟ?ӺtFMLL8ٳ%n޼900DSa sI7nOMMȘȬmyGׯL䰰j4h* : EGG)%21Ѻݿ0<<,##3;iii:::)))ǎ?3B1< ʋ<==#"")BzX;w322W3ٳgd::cec]v[`ǎ6m 'faˋ8qBMM-++Pi-9l00::ZPP0T9>>~<OYezzzo~=gggϞѭP0ݻw 7M oiiڵkݛsH,//U:mm7oP?jTFCM$&*)B6%Yhhh%5tuuhtBB¼ԽA!(.dW\T Kۻ򉄩Tc2F?Ν;ӧ;wZ`{{ ׌/޽{ffflllϟ?777i IDATL#H2..=**쑠P(?OGG\թqpppee%Mvww! Ý>N;A]]]3x IOOIs |~Ow _RB8E?OD$1}nn9V%%><--vRjkkg0055޽{<<< ~ Jl3$"ұZPTP !VWQa8y9%$=0$8=ȑ#K,중ϟ?Δ㱸XUU>**ÃFy=q Qۗ6n>nn>n**6YmX  g|qbW?ۚ>w\cc7h$QBBbF綶LC tNeec=1+NNQE/\Ng ׉*Ѝ{YS}𞞞 prrsQD"ʕ+v풒z捺:ȢI1 eewY&|ܺu8yg[kCk'%%EGG̙36mmooceccbffr04Gccc?{aNN?J?֖z6<1Vvvv"K.{nϞ=4-[vׯ_'&&Rwdqʕt[ 255o0L&fO1LjsssNNΌ SSS0jLԩSa>a4NL}DJ`@@ľ}rssxAW}DѴv<DOOZ͛7k׮ 3e@)exxx4L5ąh'[>$'' =x𠣣CRRD^v-(({xxA[[x&$$DBIiU$~zΝ͛7kjjhƒ evG"+Vz5"?EAz6}{ݾ}{``%..@ PinݢDyyy[[۝;w2Oy``FHKKOg<(KKKZLDZ[[ d2lذڞ>}UVVĤlcccee%&&Ơںu]hhtFGG_ūV$,--[[[Qid2ԩSGubd|͛7ShyN&뙙utt gm_@ 899ihhLySN%$$S˟w^ 2&Ltwmu) urV=IT^^FLLLllltuu(I[[[^^>55u H$2++o߾&--zjTĿ70,,,6mqۍeUwضO}ߗ/nݚ&(ǹkR|rϞ=322B ǎXh[~~~RRmmm ."ͰXѣG7nf4i-G_dxB"E= 9B‘bcciԦp``qqqx<^AAz7722ɡDx.]D899ۇ̆Z ss}E666ff99sM*rdٲeth"y 6TUUݻ9k;zsٙbnn0̤yڵP(ŒAׯpr]zhWKkNs pY~ \ D9w… ⲰHOOmz'NNNYJwODFF7&&D"|1Qn߼++9 `tsx|UU BPRRRB\\|ѢE30?0x<>;;{ݔip8Օ>ngbmm[\\y))~MU#ǏW\Hggýz_Y ())iӧOY!֗/_geb[&̌`aa@Ho8\ql@LVSSИ0233GEE~eu޽B86nިUKX\XBFBTJ b0==ݨ/@ }}WNXfb3;Z[[YXXtuu6oL buLۂ%@}||~@$#""?׬Y~?۷ǎ]!c3ZdrKmKF\FQggg//LMYQQFmfmm>ӐH7o" s 4BEp DFFbϝ;q,x2D|UT"B Dٳg ۺu+)q!GG 83pؗ/ZZZ Ӧ<_XX:88(!!aeeeccA>|g3Vֈ بGn!RRRqqq`7_{yhɐT~=+,,gȴ)GDDDEEE;;;KKKII ?[[[':0!++L݉66||o޼iTWW_~%4U oPŋ[`eeUTTܽ{XUUULḼ[.\s@8vXcYY…ip=E˯_~ kkΞסT\TJa |ϩmu@"*++cbbP(&Z"CCCGvBEH{%%srr퐗t3D`Gb>|@1kLީ&&&%%7n477?|ӦM>ח;şO ,v?-5r01kmhr n>nVxЦ?+,,$Vٵk;{ <7diSS7o(e@PPXXNT5v{uu5 mϿo߾K.p8WW׭[tfd`]MMUU]IIILPwZ沲2pH,ZԩSUUU .\².%Wsp`WOdeeR]MF֍LAddDj_*͛P466o0MJgϞL+jkk@jyxjjjP(| I$ zs(k)WWWwwwLa0I:`g흟 Ԍ_~ RL)QAl;t.rBSCCCZZZ?η.@Db?F~Byu ae<6f- 2/P(t)ALJD"L+Z[[P?iz{ƮHHgH}3 ~ɼU;Ouum')}S]]6<˵LG6#,bd&'` gf.]41.hm۩@K]0d22i$ QVT!&lg@mD‘Ǐqss:vttTTT&K, d2YԳMVpX jÃ_kNrV4 C G~?h23g,KHĒ222Sᵵaeeg+*ꮥ/_Na64U*haaa,HYb=r211eMyŒª o&qX\yn0hKNNΜqq:>67`45s!''PYpajNŝ U 0hjj|+TUU~kܲ4 ~^eadzJ)2V ^dɹs888=(!jjj/^ИPJff##)y޽B86nިUKX\XBFBTJ b0==ݨ/@ }}WNFb/^]ӧ?<omm[\\Lȑ#RA_bHKK{zzVUUʕ+x<π^z Z˗I;lH{Q[[L222,,,<(ZZZP(T{{{__`aaqwwщ.{{,gg瀀Д x< Buww#qqqɄ(PǦH& WZ fff}}U__$b&txxtuuF>>icc +++gꛚOsp8<77d 3ׯ]zh\iinRR """AAAt>vIJ2877]233gx=//o~~~6%%УDFF?..D"|H/10[TY\e9YlYEEW???J: a||W899GC ¨u]v- }8\̝3RH"E= 9B‘bcciXUVر_ FFF]]]999SjssݥK5''{޸qWu `033(SLP&=f577w'=::ӭ[JJJ:99577WVVr]^^~̙MULLL@@Z珍uqqܺu+ِMpjnխ&44i:C^~~m۶hhh@PFxSS|jj*T"Ȭ,i]eݻwO8!##M#ɧO.((pJ/*d'N(//'m&%N<)''$@4#~~~ hûtҞ CŹAЃ&&&vvv냭iȴ7nllbME\06cSSSbbڵkhnnWRRZjՍ7.\D"x`D="+VE}P^pH"ɂ666~~~?͘MNN+))!H666;wU:```FLs-yyyQQQw0T.**8{,TJf\re`` 8+4`ff᩼?~󘘘7op899'N-[ln:<<d744hO<9|߷o߂(1 4ʙGBgNBaPGɯGGG-,,("}˗/GFFgeea:M@---ԥC IDATkk*p ݏ?B@@ 22r…---R4+P9iW\w:DSabbffx<>::H$۷OBB4++k۶m/^hii QSSK4#.]pURKyyyZZZFFhX_ŋzzz auN񢢢מ^nn>n**6YmXٌ\O/ld3CF-_|+))HݔЩѣh4Z[[;++ i9t+zKYXlůS@T@b|!!^xq8Bg{Y3s$ʕ+>>>yˣPYB<''GDDd˖-igNB qqnוV@sfz"XWQn>8Սj3(--255500DeeeE?N+W|իĉqceIζΩ ! v:"Ј &/988*GFF|}}YYY/\0S ݻ)A[ 4CCC2>GV6u4U7Q8v,lɒ%sLɯ^:}ŋ&T\\fV~~~uuu Ә(;qqt:C6#|}})W\\(z阘fmmos 4F$cbXY|;wvv;wքn⒑innQ;w"Hi;v/;¾{AAAa.)(::|Nϔ)`͚5+Wtrr:y$L8rHYNYiv) ZHNN77A sYooo*TO˖-*ʲq㆕U__eGۋAl8x<#6cϞ= ,KLHH(..>y򤌌̌L@FF}GfpppDFF>\[[H$:99͟2MPP066 {j0A}eu֭p\R_kkʮ]fjp8)SxxxDEEhkk7nPŲ59i8u4u̱whyyy 66638 VV֕+WHJ?||oA ݻw]uuZΘ.LJJsBBBOGȿj 1>>~a$/i033GDD>}:3!s޲7eSQ(vޅ{NNׯitGqR__?oY VVW^lٲH$ZYYv_~.++蘍+M똘111b`eژ:>ҿSgbbonn{=|@ Շf|>| ((xM``` @JJ HLJJtd۷hjjX?-\###!!!Dq*msmZ""?el}Eُۛ\bnn>D" O>љ SBPjjjzzzweDm߾~߾}񼼼UUU 'HRR+6Ïѭht݊..666g<ꏀL&644ӧmmmDZ^__BFBTJt3لA011ihhXZZ:88 wNNCppоC]]edd0ڻ yڵǏ5??_LZ@oj_ aq/rRs8Sfl6dqd2ɓ'(EJJ #7nٲ5g:::gU{0hyFFW?_{e34qlYbDlQ)ڲK.=*[ROwzbI! s 0G<^6Lss_1/.gNᅬokV1L]^zJJJɮBO(.\MHHhll&&&~pxhNNNlڵ``GK,LT[Ón>$VOO/77Wؒdggoڴ ;>>Ӽ/_Y[[6mwwݻw_|Y87W666qƂ7o899Ek޼'9W?S24=TVV 1f[[Bۑظv[OyV.!۵kBBJ镕ڇ400[0):;;?rJ{sYy٘77&,z*::zT*ua {\\AMGzz}nRtkϏ Ahii K̿ӝ;-YeҾhDD 744݋y||<''VMGm ׯCJܺuTBށB _~ 8?vLkXaaa!/FWWWttUgK'(**D3[34GBhoowhHi{r  `W ҲvSSS݃JOO1B>555a Y uvv\@"Ӣ<4}h4O?$##&<h3AQQ||sdppprrR/D8e\OO_C+?RRg Q`%Bp82nڒOZf:&h֛g(HJ׶>L&>}ȈH$uttk)244499)+?}"G9LwmbUzRqVlp8~[_Jϧbcc{{{yG0vԴOhbL /48,KHuU::PW={s&eѐm[n}?r劓cN"07͜@! V[:Z"OM&GD׸น AJP(ڵk333GGG'O)j=A0ltxtڒ,KLg%p8Yyٖ[@BJ~ZMMM_ߏY)m>`dd$**8##޽{999\|9xbAcӖlyֲD \ dlT٤H'1, SL.^iiiikk>wttx{{hii߿Xti{{;Hj p8m;D0r{y)k(ddedp2Ag^־\aBTI$5Z= r]]]'Np3fd2$H$̬`~U[}Kyiig۟W"3λi4:o)m\qeSSDҮ oٰaCY>RUck۸٬_5mrm frLy+##CB f]NZ3)\[jii)//)wvv677B^^^RRRWW@ ݻw7_۪jOODЍ&ŋ g1~@x 5ԂXRRRVVVMM UTk͝T`ѡQrOQb]]]>x#Č ˷XN+q)%2E\\Ϗ=Z9NfffHHׯ5t5=5ha:^YPYkAl[MM~ "X]]]\\k">122bhhVF''.WیAs44558p+f%>]^\Jv-- J4""t^V9UK/)) fHZF,JCP^^^H$111P(גutݸg8Z80999˖-XG7D$3jjEDD;|ҥE__wcccf=?Rԝ}\xAA {2qgQ ) <~QАL&=#p8<222>>EFO}n RQR)..V{G !jBB_P---C/**CE#||+gxb~׺_g%emVZZ+Ҹ\nBB-zz\---~5UTTdddkkϟ =t<.壒c1X%wKw;*:9xFwnyyyzz`H[[ի-\,"׆+'`0455޽˻'Hk׮233322JKK\/3> J!OMMIIImڴi۶m_`RکSN|*(iwhfö׶tuuxgPRR^755 p555uuUV999 I..Xc"^טl1]ingϞ9r\CC#??yllٳg 92X|AORO>pkBwX!|!޼,Zf{yy.]d\v ԆZ`4۷o":wjhIg4DlRQQK&#'UĢh5z`p`QQQ333ooo777Ѕj#Y=VUUItGؘ$tuub&&&RSSl6Ww.J}S0Η%9%EEG;v d!'\.wppP )U QYyY511 immp=k(-u-WO]={QQQ;wTxiX JJӗdkk95 GbQQQ[ninp)tvzz?g+ٳg!U,^1́dEhkAc7cof%eZ9xfv*+MLLy~MvH7pq 5e>}RIݹs0Vdjj Qۤ`oo]v őch6'|GxsM30QݛltU$.؏4mw{^|}) y8BOI)Mӆ`ŊU n9cnn=bvdq</{ӧO͹{wo޹Da𭴬tLPLHHHBBH3AكD")3%W_Vobc۱G5wBSU`955US\c`&#,!!`sL/\H|- Ҿ+"XržuFCFL&p <חCf`QSSC&!,"`*dNhB,ۛޜTVVBRYDJ@]]ϯ"";9SqX\@@vFtmmbHBBCCMMLxμŞ֞ӧOa;::$$P₻xSCI!OCW^%Ĉ+`S{}7g)F %98lìuچH))!%JJnR)8Yts==}]2əLN #ÅcccbH1'|٩m I6n6k״5_Nr?̯|j&-"őHrddbAjYtJmFIDAT`郯x:L:3&(&1,iSFF/~PTnht YLn˦}Iq8qqqe?&\xzz޹s`\gҙ%%0;9{Ϟ=G#i!PB^E*U-U;}d{th`+**`0H-Qi<֭[WPP`fl}NhwH a"h!hTTTY4V֐ysp`ϱ Akkā4;%󞞞BGǓ'Ocްmr6sKsKcb#Twwwh`!A|Hss3H2Ygp2hgLe-ݱkjh[OHiDJJJTTۑVV.;],-%ђW`>-zZp(. 6Y4ᢿ?::͛T*URZrV++/;>2>Hl|ddpFZZZAJ< FqqqFFFnn.Jk4a7Rėg||B`XUUU<G %IENDB`dot2tex-2.9.0/docs/img/pgfsimple.png0000666000000000000000000000503712316606077015462 0ustar 00000000000000PNG  IHDRw%]#j IDATx]qL&b-IIlDb X Da@1"UXrLSɤ&kU[PxL,3["llZ; N댹g kdh}xߟw~}$I[<oWV¢,}ʿ}G7?d3c?yis/'S=xH`Diy[?u& |ꎽ-s+~G(Fy#Ul\WtEvh5552FزxWbh}gS'IiZ,19AI{o mooǐ1zSr7Dd2Qu ]YZZr\xǵkTw% Rg ieYU/JקbP044сk#2x<~X,<\ ;3 0 tHK'1 ծ\rСX,f2<&SNuww+  MFf]U u=E4`v{eYa (btz<%ӘoS" |@F@A|>Xw SB(Kt֭"T9mӹh¶6hkk^pALQ*2Ŗ1P& 0d  . 山1ݮOv; =I+P2UTTp(21-x8#,U7a$) pŃ;߼j|t7x6o,"Q<~Uostu̴t%坯^Q%"s9sGu˿ً~G*/82:C7 ynD%{Ոa6qCYףpK;^p΄n$OXKK EQ~_]7~HϨp NW  QlpQ#Fġ>Z_x ;9AOVF*s|*Ip6 Bjw,Vڝd) )$DXZZ8nnn,·`' .'C4߯ g6GFF> endobj xref 4 24 0000000016 00000 n 0000000938 00000 n 0000000997 00000 n 0000001138 00000 n 0000001229 00000 n 0000001448 00000 n 0000001590 00000 n 0000001769 00000 n 0000001799 00000 n 0000003913 00000 n 0000004079 00000 n 0000004108 00000 n 0000006187 00000 n 0000006324 00000 n 0000007094 00000 n 0000007273 00000 n 0000007439 00000 n 0000007468 00000 n 0000007605 00000 n 0000008381 00000 n 0000011760 00000 n 0000011975 00000 n 0000012180 00000 n 0000000776 00000 n trailer <]>> startxref 0 %%EOF 27 0 obj<>stream xb``e``vfnT,  HbP `3)S΄Nb 6phaf`w  Z endstream endobj 5 0 obj<> endobj 6 0 obj<> endobj 7 0 obj<>/Font<>/ProcSet[/PDF/Text]>> endobj 8 0 obj<>stream x3T0BC631UHR( $P M@3P%+K!INnSBH%kgalc`j$ 5uMM5 4cC\CYZY,# gB 8CCK=#\ksFIfv̉l@ endstream endobj 9 0 obj<> endobj 10 0 obj<> endobj 11 0 obj/ATSLYV+CMMI10 endobj 12 0 obj<>stream xiXb+2 %LIH"` !&&a@0l9Q FE\pX*,R^j\g==7xˀ {d-A0{"Hl4k^(` AtHQDt#L/4c0 x!q ƃA aC$V!4pD"yG&"Om~(B5P-KQ284H;A$?O%9W TH Bȗҵ'86ć_NYW 'A(CKM~S `?vj,/TMքI@8HAFy?"8$|Hd EQn2Ni*2 #0‡(IC@@$f I&HP{C<=%I2{G`O"kA'gJS&%(`S?&ϵ$AI+1|tVyFm薫緞339[ + s ȏN{dA[; Tƶ}ub?-zg^ݳzוx^Zb6]ě4az#ޏ|\dY}Po];[^HJ%#L"3]m]x__N)bϸ#w0 M|D#PӢqtǝ43)scAN=fp5W!pLmɌ27!Rׁ_[ٻ Ռ @mzߪs=7DU=r=/Z_wqȶ9@= d^qlf]Ttթfl'|egShBz=鮒MyGZv+aK%UA7D)g4Qf+uG9ggg2۽YrP\:wN2g~-<>K|.gԹ>=_I/.߶ w*2mÉ~\u: GǂCX/aeF73?mx ou. gjlX9LXd1%LN]S.u&tv֫{ fgOt(rXւ8UZpZx%7`ጟ)p|Gs^J뇞9`?\ָpi_`8P <E1 qD(M endstream endobj 13 0 obj<> endobj 14 0 obj[529 429 433] endobj 15 0 obj<> endobj 16 0 obj<> endobj 17 0 obj<>/ProcSet[/PDF/Text]>>/Type/XObject/BBox[0.0 0.0 89.0 99.0]/PTEX.FileName(pgfsimple.pdf)/FormType 1>>stream xڭTM0 WqEE 1H˅N?OL7/v>zk;ݻ'_2`?s슱|AHp_ E :υ(`,|%+UA+wSL 8n)vh뛠#W,~S,Oe)zQ']fko<:EcWFwz<:Vd]2~V{;vo;GUaRO<>vƖ҆B"K-aw~x6}?20 Ѧ"+#4YeuV& TzT2O^A1WE> endobj 19 0 obj<> endobj 20 0 obj[529 429 433] endobj 21 0 obj<> endobj 22 0 obj<>/ProcSet[/PDF/Text]>>/Type/XObject/BBox[0.0 0.0 68.779 77.098]/PTEX.FileName(tikzsimple.pdf)/FormType 1>>stream xڭT=1 WbB|8i`:Dnc'On@d__l$^> z\zol_dB- ~VA\LDy.]]jk# ;n.TBfJJIt0zi-Q:xΪrx` /}zq}{yLI|dhB XhJp1sd(TCXD3DZـW7#- V|f~\IK:zd$ɱC!:ͿAPC? gG5e؇ݰqEI͐$^w@ږeNI^TuW2@*$KgiMT^Ԧ+rAI vP~eGS|xJZ|Q}~#iK(~ Y$M$b*lxL0" &,h_&7 endstream endobj 23 0 obj<>stream xRy6)`pz"V K2@H .HX+tPL/# ܈$e*7p;3 G ET?noPbJ^A8o @ G_C WDew] ?W??Y 1gDFgVKlU~M:wR̛::DM2?299ۈڮZ`YPCDdO-;/r͂^{2^btv*ByOޥz6oh o?ȋF rqq1R<>UJq3<if=[eWT?2=wgO  O&zLqD#Y%IJ;5Pl¸f~:z,m Wh1%rGHQ5Q"F{ NC'~ztUݱL]?,B칾W S`~j|۩ aPϭz(r7+c%GiJ"AӋ>y@`2ri""N'|j;OQ=m3۳N<RM80XӮYm}R'JsHV!9AUoEۄĩak]6_%n9p!7^x]TƤ<>'(r,0kla; ?{=51,07JǗtK5l}9HY¶R=U$!J[ʛD޿uFrssGk/2>S`|jlT>QH1KsBC3O<[zj/M0bϟBhK$wW /¯ȷʟ)r պwvtY=lD}`L_=rL ɧdu|ʹb's0w13{MG*odc.ex*WBzΔr҉S6ߗOwy7|-NʿS_(M^ ]1VM)\2@ƟdjCbHCdÆ\k P5*35 UfH lG&dW0)2HR*!wY)us~Zxz~Rk1*:o\Q9p6Y/8ϭ>f"l`.VX&zR]XrDbʜYsvO߅>D{ũf9[+GƳ&i?N"fgJxLK<Ƭ+B_YRYm U*lH}UѥxIФzg[m{j|r Fs]~;kߖ*ZJtWtzuS/}Y}~)SРdM/DCz-ƽ8e2 4^F>6 )his1a;9ֻ74_ltaYYcigT|?\N+bn別jdKMq^$,'(m*Q7)57|ﭸԺyWe}mf-8Ҫ,߹F h.lx:ubBIxtRG3+-[80cͻx7mcg""y%i.;KޭdS U!߄׼1a,~)2UHk+yY||+鍺 !nT#$nQanjа@sx"zϖ&{<߱{StQ\/3i- t(VdtIgSw_x$xM0tN> v{}<_4>酛# CٳkdO@G-X3+VLY5bPAʆ;(s=hوНC1IW 䆧}l8̦/׌f}1,btcD̺%erPFOVFf#[^]ZXxgb Kz ur\j꫑vGa* lx*?j۱z]DaƎkxη;*B\f - 4LDJpy+2ǙA%Cs)p>vz/ '{iTZFZ Z~K[*BXXJHWqpٶK{pz `a}Sa;08M"h endstream endobj 24 0 obj<> endobj 25 0 obj[413 413 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 531 590 0 0 0 325 531 0 295 0 561 0 0 0 0 590 0 0 0 413 0 0 0 0 0 472] endobj 26 0 obj<> endobj 1 0 obj<> endobj 2 0 obj<>stream 2007-06-16T15:35:28+02:00 TeX 2007-06-16T15:39:52+02:00 2007-06-16T15:39:52+02:00 This is pdfTeX, Version 3.141592-1.30.6 (MiKTeX 2.5.2574) MiKTeX pdfTeX-1.30.6 application/pdf uuid:9e21188c-6c89-4184-a136-094f7606dcdd uuid:fe0a3ff9-675c-4fca-af90-b9bf1d1ddbc0 endstream endobj 3 0 obj<> endobj xref 0 4 0000000000 65535 f 0000012400 00000 n 0000012450 00000 n 0000016034 00000 n trailer <> startxref 116 %%EOF dot2tex-2.9.0/docs/img/pgftikzsimple.png0000666000000000000000000001543112316606077016363 0ustar 00000000000000PNG  IHDRr_ IDATx]mXSWD"b@iJ)ZhkEjCcm+cS"}.6H1z䎎F;PoѤЙ$iipHpzU$)@-M ?v0I gjY{Z/f84OYol D"QdddBBBlllpp0ZJ>OVWUUADАlll/ 6lHIIAˀ@6Ґ|> HZ-wiZDrb)8a@.L&7>b0ΫNJJ2L=g7 @ $%%%$$HRՊ6I:cպy斖]vQtݻwA`h4[KPP{D[hBF6V555գ&n Exx8Z!y O!ŕ5554_@ßVZZ 2֦8h<\XX(i#1 <<\.Yl6uBk4JǷqӧ#,z}tt4sa𸸸Nj1??LؠhΟ?O\\z!6vFlrZvѢE"4&yj s [[[a D"b,ˆa׳@0 +//gmd SL&D"* 1@J W`0|>UqK$x kɐx.X" r9PT|>!0LT1q Z6--}akO/{Y?>))I׳R[[ Oun\!ܹy}hooONN& QA4&&U<(jþמ]u$b @<uuu>ۖECzQQQ *t:`۟=<#Y1?7,/f/Y4DhQS=ObxpkfO6cbBi!S'[Wcf91mڴ.3]Ԝ[7/g;Bآ,""<0ćs8Vqߔ==LSĮ.}%HLLj61pੁlV~шaK9]F9xY:$ys<.,,q@)I9'|!aӑ~Bee%{J899!mllcҪq1oJF;vH$ F,X,  H$0lf+J>/ rXdZ-a"h9ͣ+ 4aXjUXXYhZ;&%L"J EIIIvv*&{KTqqn-Z,X\=fՠ{ 1T8"a0wYy4 U4N,cfwp :ppfBP,+JrSWTpq}_N>Q ?pd-//W*0rtuc ,ıc;كc3Q7JÈ$D"޶L&kM7 ~aԦ8p!vd nNBx W0T܏$ w J V ?iPgs/ˇNL=q3<\Ȼn|](|ybN3N^,S \t-nKO8 و&I$17bJ~!(1]vj Λ7/&&fkΟ?e ֮]T°fyʕyyyٴe@SeFݻzH$Vc|"V+.]2BdddXXXTTTtt4mkV6mDRZeKo^STTB0o_WjGf/4ǃO*w4`UΐeB(xl٠1񠰼Q,P:,qCq=aټ]1sd`L%"4' Hg$RA+>2>}{u\ggɉ'RCꗲ7iii\.Iԟ]8((m7*۾gKZ97m)`Z^غե/[?Fx.a[ߐFۺ(3nRƎhVt _k}pQQƼ{>Nܰqh~V"gLDBa``fxLAӹA!SGNuY!!88yzDpIweɳ.k,O2L̡wu&-u'_ZGfZZ*X(~Ȯ&-w3_c 8k2Fu?!)? zJ)R`` LP(lnnV 0]ި0 sc_ZWWǐ%bvlذʍ7T*畔,qHHHSSC<+:$ \a^6b7Q? Ncߒ2̣$&EdQPX?a?C11S%WH.a/"V-.c3-1Cw&[y̍gᙖYXV?>))I{]fvwwر[ÕJenn7vɒsV/>&֋ioogVkaaH$rxŊ~~~%%%y񸮮.44!*++c݋>|Et'cC21zwGۣyzW ?sWFm>%#@ʼnl޳-*>ks0#EODo7?/.}@{{%~5\p^###ɚ6 ~p2:Yc~t!窹Ybc HM֮֫_Tx 3[͋S]:7À-1Ԙ? eШKߌ}ŒؤWw#nۢZ>rdP :Cq.\/Gtݜok?m_d'c91IAzNH[S(8bͿȲ7.l6wttghu5 9J α+ҼƸ8V8<<<--7jܬ,̕{NCo ?=ѐ^%Cll,ێz*J NJk׮eDO03))ɻ<~ٳ{9F-"##,XK/3g:yjݾ}{[[ݻY huM0ٻE;$ȏ``2`$7NjMMMnZ^t){R^EuuuEE )))&&"b3<ö{"B<BQQQ&,˗/wW\`C>:IV#W#(((())1串r,aaa%%%4n׮]aaahCTvࣿS-T*r\5BB#_10%:!Ki4A||< !xۭ2쪌켔BT‘`3p4V諾@tJZe}|?(4fȗ@_1$ 0ȠjGeV`$5brCCñcd29Yv?]5y.K.A6mZLLLTTTtt4cK# # # # # # # X] ͷRNGqKIUjK*5wzSEUc/[ C?ml;YP_c7.\oMNP\?Ȇ/'aݞ}/&Mj|p:r]v/,3 l_K2Ss 䙾wU+?X d{|pl%VqafzNel=a?wmW/l6[;"~jo<^=+-t;w [Wg>͗f?{Z >WM<S. g|#d2p–jS܋~پ^Jq5O&N9q9LB~54a){mnMT2Q*t5k !~tw?Lfː \Gw^ymly|DD?rQAꋷޗ^p9#k~T)Fgäm]-'eUeS€OC 6soY""mh)p7^*[E5f~>|=pTFKm9cͩGUNۚ_ߩkMƢ;]P)D@> endobj 2 0 obj<> endobj 3 0 obj<> endobj 5 0 obj<> endobj 6 0 obj<>/ProcSet[/PDF/Text]>> endobj 7 0 obj<> endobj 8 0 obj<> endobj 9 0 obj[518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 529 429 433 0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 0 485 0 572 0 465] endobj 10 0 obj<> endobj 11 0 obj<>stream xRy<ߖI4֘EGY3c14 ʖ%Q,MuKQJZH Eߟy~0eGg,yb2:H]`G 09 $L H f?`LPzBgևsf@(Je?HDؾ A$g& Cu,888A +$BHD% ʀx1L@2)8V 46lj|$& @2noY*F'o$}J 7If,$,T7OsxD ű 4*ˠ@@O:5ȊIT6 hAFd~von4 T%470oE]'_?]f 2IT@ ?">B\$@e@r &',ȏ"8@~7*a# 'B sC(~a?23cr:z(@G;H f@{E3 1 $BDX3呖%[4yWb5 ug^Jjz*~AIdKFlx7ضC(Yx8%Y~;=?Ͱd@܈Xȝ-5vŲIBO"O&NeBܴp59\ڹ3gIj}Xhm+kO{ -ŗɲsDL\ n7l G-x3pz`Y0 `ULZsG%Gsa4^>ݧ 1XeF~uIswr+ؗ ,LJр0.>,b qt _N5[uNL . Zt[WTァQci铷NmӍeg͙mMeg%t5ƍv7Iji}b{yֱ?~Ӌ`*1nˊ6^\)}OshyMRRsL/ [=&e.I%JDxZB+LO[F?U=T4Y+2jzY!PݶūݎgJVUq'FT;Z8uؼtXʾ^ `YyRt@N3f-L$NťcGxģfJJĹ룶KEVHҔoeN3X,A5$ %Ⴄ]HeXcw@Y|9eܯme4>Yن5~[qMŧcd+u1][rnVj˖,9k'jitv!] ^ģmy% ?a:K5./ȽGb"2j.:6V^WXҵjC6x t F-,uJwW.}"\EJ̈K thR`' {%;!6HĴ%<~Czsڶ`)1;?ߧ LzU!'&<.nvET/,H΂b&)о_z^:/b enu摈|4PY=aڢn'4b3?_C2 endstream endobj 12 0 obj<> endobj 13 0 obj<> endobj 14 0 obj[648 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 648 579] endobj 15 0 obj<> endobj 16 0 obj<>stream xRkw3D2sU~5L:C/@.@`SA.Sa7Hv<2N `23A}aNtH%y`Ffk8Ȣ~Dߚ#ˏ#,ȿk5Z.&H$JF?gȢtVƘd.,"eRh Dt@fabdKY0 ]U@<*0Ad&o +QBVvvlA$0Fcd&P(~R=^Yk)J kWED|HU~@M61s_s^١{en#(I ?KgNFl̤Lwz3\vO^חg7h?WdyZL9r!ճ.K܇:mMJXK BĢ<ZvFrLYqdck3Z~]H?!|WD)E$߼ 8`^~b6*QnN8.dR)0u5?Pp|9MI~Tei=V*1}M%B,!ԙ9Ɍ0C>ټEq;Ɔ#blZLUU%,1$Խ0 ~4!!L:qwz{p8!n}CGNohDu-9{}^;-7NMwՖƛrLS#|89CO*o|ݟɊ}G%zLa +wy-iD(Mk|3fqwQ1$9ӨL][=?~`Sی;6$A#nR8mUkyE̎y)_Vx{a7䐞5R "C43ʳ d6&?NqęiQVy:d.ԟ c.{c/%\mynLvA%oVXݦڀ({MbYoaռ_u|Y$@W\"M>}Y۸3%G*|}C8Zr b|7q>'7u"Qy@LfۤWH/NbROL6XybE gû6)uf_غ8mU_Y΂q ZMLdY]״EZC(Ś3 rn K7q}a7ZQw휸UVW5pա mt'mdFCW2|/TL\ n) QvIT{o=qt^ZTI2/~ޕS1 XXyt Ѽ#u<`pԸ >׼,M9zn[\iKA/?!@ad.$sCe endstream endobj 17 0 obj<> endobj 18 0 obj<> endobj 19 0 obj[778 0 0 0 0 0 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 556 0 556 444 306 500 556 278 0 0 278 0 556 500 0 0 392 0 389] endobj 20 0 obj<> endobj 21 0 obj<>stream xgXS[%t@z@B)RB$БB(*"MAH"UtDu|4ϜsjGDBZ àr2rWcs9Y, "x$ïzpW鹢xEI `8$ Rj{qH 4=^0( h!@6 44q~p7 ]$)evD~DaШ@2Vogq=_F77 1npݐ^($L@>z)CQ>_v8"H%mgi!LLH42?L%WHt0+)84@:=$Rh7x@ Ac '@ ,/AJ@7ˑ;4VoR\Mrtߐ ߐ$*A I FRAߐ7$ʤM>80,-O'%sj@5e%_ibw$p`tS>,T 9"끗 Q#Q% %&km .$}ۈN|@j&cVXwVoOul]7ӱ\$kkˊVV#bj/+fx+MRM| G 9ie?*K;uLf\T00_\}\Rs]DX _D型 u&mH5Qv,sVt(>R,ZyzO.t@0-tFK>Mq;jA[v^ 9l+>PV3,W}e=? \F8@WpRLմ]s6~cKW"l*ؤyiEvAh\Dz@4Qɝ߀S3?  XylM\'AAꧏo}8muzF[nܤaAV?~*AmN9Iy\ kt>\ J/5"íw}Y l,*#h8 ̦} d>S}PM&/'ǻalOӦƐW]$}HKfo.\[=|s'6:B8¹L6w#,פ#)\'<6ACXtTixctVx^ſ]c&sdk"nn7QBw*o'<Ɩ"rz<Z5):M*KVBnAN)r*ˌ`솭џ)k1fAi%<Tbu;]ۻr^ȫw|2/z`sjE7Va6!׶RG;3ןr&@LTb5 V['9I2jZX9*hlk =hJ/6 RGW]rb 4;0yRd~wMbaMٝ6XMqWQӨ8SD霉Kлl#3vgCsU)~r%e6n+x '>{.GVdCnWn`>YmO5/+Gi%X b n8#.Vd^Gmabzj2& B&_댂A*Tt6+7A[g(&ޥF,4}W@kN9]#=Sےjn[[*[$\ @v n_ڈbtQ1G\ay#Ȥz"#8v׎ث;~Pr@_vM%+[7rue^Nq| XciOGd4hƗ2hy&W`U~򱱃V6l|#Z+O O]l?\Q2 &&џEOUpdݐx6 ~ePxv' U-ٯ݊1RlQO3O|&U>0%Kb2J3_^-V R樂._C8˘=fP<>9'I $vF\ϛZx@uO*xjrWk&c3tfOeǠrxTCq:wes E e5.ijѲN,?zZK߀\o81ͽZmXޛ~PKHBI=&;[c~n*usu 62LNC:D ēB`lKXQt3b]퍭wkW951[JGM+;B̓}uC*01/xXx틢Qɉ3.g3Rc:00' xK?e seI?ҋ=Mҹw @n7ZĮ(ޞ(0BS+6c s~|ɍ*G8&ާm>ͺN-+׵%@I!$U*XnEO|+rY˞LdDnq_<HC![ pB\Mr.d|pI1֮yo\+%eZ^&ep':QdKWZ΋U5Ux.~'.*Όgͭ.#O!崺JmM6+29J#"qҢ<׫jq,c!WCKZevSjtNcclu}\l}Fl<>i5Vd4ybO3$L&=Q~D~fYNI2v~ޣѳ@lC\ %}چ4z+MFb=K J@d`^R֬{MDX{z@c*TYx:ׅlϚz\'%vr{*-gxLԠ't(Vc^6DcUmBEݻ^EKD/P,LKZ-LRmQ! n_x4v]3ctq[~6=vePg]kb8 DZiF.۵c~/JvSj:ZBM9cxYl@)[wl?;zkkoŹv,C.FD??f,:^(:8' N>+q +`7=7O'X )3\#ذL]G:Qij3-GT]b2h}Kg.O)lt iS?"Gu TV\?a3B1@Q=̩.XJgCdVԒpK /('6D;SjuH)[s󉖛WVx^%3Ʀ8Aq+xe!AՕ5k%+wt|7aĵ4pNӪ"ˁ.nn"z#0;=i (M~uvlO-Qu&Q)KЄᘘ-1VxLe*<*b-=+x>2آk~qc쓴~ޘ~voʑ4o(GENeh60<͒" ?^ AS~|u8h ZqB1 z%~u3^BPZ |#B[G8:~wgtK}LrkM=4rVE&Ҙ>x!j ƒΝ0JX9}lEhOR1&bmn|)󏜪ޖ nF~eT6 cVĻLg!fkE vZm pL=xfg~1\ٞMwn";%WoX[xzƒC/KM׽S3?di+(G9^0/V]DŽ Ҟdzy߽PwgѸl" U@)+0eu37DQ *9}P>̓nj#%e@ s[JʴHVg0ݱZ[tEHÍNQWȱ,^l]p8 LT~KJ]UL4giW>mȊO:USx+^*B2mLWcz'MZ|BZyIRdhu&>MGwú]#pd^KʣD:ˣYgZL 9aduчў y/?QCqx yH endstream endobj 22 0 obj<> endobj 23 0 obj<> endobj 24 0 obj[877 0 0 0 0 0 569 569 569 569 569 569 569 569 569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 508 0 0 0 0 0 323 0 0 0 0 631 569 0 0 0 453] endobj 25 0 obj<> endobj 26 0 obj<>stream xSi'xE(@ig@P@]h? C hhw Ġ&7V K>N3{65Ng#;Wk_ź°"M79|p3'JNPv[SɣuUzӑkv%ͤ~͈ҵ9׷F/J*ZW `qtv(*#Anzǹ_XypcCߓ[[mA"Aա,%uR%+=gA=9I(w&uSf 2Eu{B6\6"R%<}ܸmqM^esR>EmV8&zr,sݯ: O |F9F}W;ert(==-?d#4fHEF0:;647ZЦHE 32[}ib;Hm2^au0꺵eyK+PM "|>[شL>-RTQS#b^Y1tʡ؞Sr6"VJ\H}54K:F.( H+9A{㕳 ˨%\PԥV/TwCi*lU xza y"-W oJm) f}~h%"c7釤Bz5y)Kj)m(5q8;^.Ɯ·K9%8F/+%хS1gr7ή\1[ ,+"jVe2p~cB[#[3FST; 뻳]0r؞uUꥺ]ǑMgAw^q禮tnċ{mռk^O@wmָS&NL%k&|4̲g#w\Qў!~F\؁DTl(IGL].I9 n×# @4aIuol< +)oW1:q}lQFS{d?j3.2<|/5;Ⓑ_c;})35ʻFSv^zi{}/om %2o50Ź()}fc*Gs:ĝ1lQ/iνȴSЍ HӺaJJR>Vi܆q_Wzk|oyyMdۭ3Ax8NPԽ0Y^c//|‡CBr!%I٭ƻHYL[bH*ke֞g㿡ωҿx %Imú,<ZsaW##2Ε; 39teJt= s--{y4՗>Z4v;n{=zb=ar 3ej OJYqK4'4/~pڦ\Z@&mM|GyKc, 6 'e]]jzpB'  ~xŦxrvﺪW5Ws_TI~6;Mg$eJ>~9tpV_bJǠg558q/u !2s<ى݃@ŎCw~mwl:ή=i~c'oF^PAS>Co)WqJ6y$O'܍4F>N/y :|Þz-/p$^ۈЏ%~ U\CX3% wI˜AZAOyv$jKG"OFDX뼠+"*&K|`Z11߻/?nf[)eTit!>q{Mk8_t :2PLdz}f95h,Ųe/ݦRT# F - qj%_O.*@tiuXh7Yz%KB)Ǒq[mш>ܦ>/[T_#_MI-fOT # x D&zHLm` endstream endobj 27 0 obj<> endobj 28 0 obj<> endobj 29 0 obj[681 681] endobj 30 0 obj<> endobj 31 0 obj<>stream xRiXSg*,6A 0Mv!H٬K{@VCZTT`R*'*D"TY"E *R\py5{|y{sPp C\-Hі@pŘ! ˆ!w:D2cQH$ c͊{,7HN5D :ӹq`s`[d&H ȴ1 aXp3y[) lڴPL&n ak' 'lȣ9KO`s <.0DP5%lzs6 8 @=|2X:'Aܦ5gnl{XO fMWf@$ -[y@ ɆX#]!Rv$N `.:d08NsS CMD87+Ow 6v,ўIdw cFA> ceyT+YɻZ Z:nF95=IVSa ʔdFNJ9/L*xM-+Mk_<$zΑ4[w.W/6a,w;2G0RNHމfs{cŤ|Tsg'DY/r7g׎,ii'CbdOE?W]Z{e+dJcʴoQff))l0~B뻃pލ,E%M}}N]Af%g}۴9)d}/mktekEXiDk)7  sxGdnxZhfB:=ubm2j[wufS8]OgnY18 C]c'Y5,{;&dG~۽obI GP/LC7gX+g[7 Z;w8+.Pхٚ#~*G兽O"kɝWT=|@)vk\psdg߸k;%)T~Q!K˲=Xݭu煟2͚>=li{Sir1*쵽ȗ*e{Us}r#w<4%07%9fK܌kU/MR\,HW_*"55\r>0)d5N:=蚼`{䒓6f15UNEsYg%2ǀ_BN#A!j endstream endobj 32 0 obj<>stream xVN1W1jkhF8D"!$_*t Naq?ڞA/Fr`_!t Mz* `TZH)V5:4&#(!^"DؓbOib&$):))IoH F)bAK+ZPf1:Mh(2AтQz^`wUz,6bw[ؤ4+1j>"FNfpڈVV e*EuŪT/!4n!KLw_./<8a+\YHhVpT&q%zGPt> g$=RBH^>߅OE VRow0SY6flN cӘP:Й42 i|>抺)W~yʛ,2Ipݿboʼ5)q[2 endstream endobj 33 0 obj<>stream 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 TeX application/pdf uuid:722f9dca-1e73-425c-97bd-dc55b9b0d30e uuid:391fffc3-a252-40c2-ad3d-b46765f81fa7 MiKTeX pdfTeX-1.30.6 endstream endobj xref 0 34 0000000004 65535 f 0000000016 00000 n 0000000076 00000 n 0000000157 00000 n 0000000000 00000 f 0000000291 00000 n 0000000390 00000 n 0000000488 00000 n 0000000630 00000 n 0000000799 00000 n 0000001051 00000 n 0000001254 00000 n 0000004461 00000 n 0000004605 00000 n 0000004707 00000 n 0000004952 00000 n 0000005147 00000 n 0000007677 00000 n 0000007821 00000 n 0000008045 00000 n 0000008244 00000 n 0000008467 00000 n 0000013619 00000 n 0000013762 00000 n 0000013970 00000 n 0000014163 00000 n 0000014399 00000 n 0000018494 00000 n 0000018636 00000 n 0000018717 00000 n 0000018742 00000 n 0000018929 00000 n 0000020896 00000 n 0000021784 00000 n trailer <]>> startxref 25131 %%EOF dot2tex-2.9.0/docs/img/preproc1a.png0000666000000000000000000002103412316606077015363 0ustar 00000000000000PNG  IHDR pHYs==լt IDATxyXg2B ,"bYPXqWږ"էRk>uG{i/VȭKQD"eYA% @ If~p"KL0߿“3򙳟}AE9`QQQIIIUUUUUUMMMOOX,I.\`0yH|*wIIIrZ[[[ZZjiih4|>뫯mii4g˖-r%ccc׮]D&:'V,xܓ'Oc9GEE@Lׯ_Aɓdj!bA ΆXTwcɒ%\,H$]]_U,+F[n 1%%e~2A }}}Atww///WPGݹsgΜ9`H$7oӣR? *#PW_dz<ٱcGAp8>>> d$ WRRe2 *hww F~l---ss7JGG=HHH QQQ_QQRr...LMMMLL8*7nTRRzѦZZZe@СCEDDsNR׬Y3 pHHі `XXAё 4xSپ}ZYYJxxM%##L&={Ł x%kxxͭNի?>gΜYxuuʕ)ʑ#Gfa[DK.%ɏ="uG%&&׫ϪQ9TII AϟmmeժUL&Jr(??ʚ)4dee)Lfnn.n%88Xyf@nrJmm?s[t)A999$I~ٳ篿jjjRVVYVVn:F lvqql>ʒ%KTjff&>Mk Hbbbgg'OTUU$̜;wt+ kppBiD455=r|{{{W4;;;---...??kll/RSSGncn/^GEEMBTtuuƦa̷bd.X`H$:::إa|6 CCC˗/ohh755ikk[__?:ذ^S(zڵ1߲lcnnÙNAٳ',,lMMM I$biFڊD"qvv 55uٲe8%/|DQ6mڴrʗ׏`޼yOȿX*&ptifff0 WUUD"|H$***JNND$$$/Y$::z#, iѣGhjj222jll-**jkk)))yw%4mDOOeQQQk!zzz؝yfWW׭[222.];;.\x:::P=qλ}bccVMMÇO>quuŎ*>|>&43uttH$aaao6 URRȎX,6oޜagg^FvK_Ν;wQQQlOzzX,nnn  xСڵ뵏M68p@II)33sѫK.v~##?GX## d2fff#~t:XIIȑ#'NHII SMM :tީ`MMM .]˓) V++]v믿FD <~E+WN 7n܈dX&&&MiLA|͘JKK>SSS]6􃃃[$0lmm ҢErrrfdٳg ~III|>ժU}NK$d+Vp8?pa~(BxbwwR555)S9wUSS[nQUU;V>y577.[O<Aog|~LL ؽ{7b0CCC.,,TUUmhh y̙3G*bTW^ kjkkϜ9C&_۩LqB"444 APCCc7"I$Rcc#/ǨLUU5''H*s_|@Pb?wppذaBܻw+x.H-,,F_(޽{_; immDV?vZgg??TCק555())x~cǸ\. 瞞3F333_ د`nn~ʕK.GEEzyyaonee5LzJJJuuud9n֎ud?յ&LLL>|pW6m(F>ᑓYRRbll[om۶a 9Usss^^֭[q?5xxxݸqC~ܾ}Eы'a:x NojjE i^G/v֔^@@@bbbee!Ŏʏ= hV`(QԐ꾢@{!޿\uc"~Tl/a=QHHB)--ſh\ \r(P)))d2YV].T0/:.+OoFFF/x ,t…===D" ׬YCe8UFFNw cG"ݻD"=L*(޼y@):Ν;ɓ'e[ PAP($A{v%Y" þテ ߗ1oH$Ν;}=/\ð4/OG<oΝ ߿_&EsMuuul+PSSs爳%gϞ*++?~%H$|nJJ &D^ۻk.2lgg:Ӈeee ZJދKlmma^~ǏgMuuu`` J500q17ㅅ0f͚AW}JUWW?tB*raaa :t(//o C@ ())9s挍 Dꫯd8ߛO dffIIIsqqqquu}뭷uttTTTF]J$>ŋv jժݚPrJR@x```@,+++{xx,_ 30v'\.5""bg0jjj333SWW;rIe***vmiiYɷ3>*++q܅r]{6M"@p8Vq =z0Lp FgggVVhCCQqqqGGp *2=4V۷owrOA>?Ʊ5000kfó  |>' *  EA@H$BPу@ '$z0HB244%> *0 Y*9bID)Vb'2YW * = $ !RB [N\ Mb9RUU\TTcuUuuׯX"22R1XЉ^;H$E6!NAR6&s4*9CDejkkk~CH+jTޯyǏWWWRܝ-(({'߿Ϟ=~Fرcnnn S*999**֭[ߟ<ƍGH$6lxԩ<{LUUuƍ>@D*HLƍbח.]Z^^.leTTTTUUݧǏ]]]#""bcclllOddd^^Ν;OJJʆ  X,Dommhӧ>駟<ѣ?Gϝ;gw2p8_xɓ+WK'1)xuCCC,L;&uudL;{{/br#WB waӧO֯_?|Ν+HPMJJZbŴV~m]] ܹccc3ekuι>///== חH$s̙T;Z՟9ǎ377߹sY` ðԐpŋkiiMIxm)8>>}<44JvttM)Tr2y&d2W\ud_HH1GZ> UpppKKK}}}[[۷~;g !F+[lԃ *nS(B * * )ؾ )H޷S 连T#* @ PP!h4frB 1 D2+1N(HqFFgϘLl{zzG-_ ,@SRRRz坊~fflkkk; K@rOgEEW3f'{H*鉎h 44TZDX3ym+|> O*ϟ KKK/\ !AI~H444$ )A~~ӧ5''GZE0x{0,K*r &&&ZZZ/}6 #JWQQ!i7C bI+D+++EYcc8,,,ۥ~8N`[xT*u͕R.))qx?SmDžWD"AR3̣G>yvpb̙3gΜqvvG$,+gUUUP(eׁ6lؠy8A/Bnm{0!]* zxx8??,''G]]=))X[[ϟ:uԩSؐy1)G J*4 [KbamW޻w?ݻwkkkmllX,6cccы )vBptemmmS3?F[nsX)tcŘu|+,qDl mmmuuA{%ʆ L677///T?k999NNN ExzzTVV;ѳ;9쬢)??_(*suppCDpޅmZEݻi&O8kR(ڶm[ZZZ]]T| 2nݺ`tt|0|ĉi'<==;::={&/Y|ymmmUU h^^ Ǐ/ۻ~m{AعsLMV]]]...2+n333;;;Yy☠$N)0effR(={駟@|* OT0b"IJJa_ >۷o Iqq Ǔa5dKoppˋN'''IyyyWWlk"3o===K.Rw!Ǐϝ;ȨV救%n!IDAT^ooo#""d;2 KKf""22=00qF|>@ٳ9::ʼ" EE"ӧdSEEEwvvY;w1`JNNӣR'NH$4MSAQŋv :&&f:\]]4IAJOOwvv`ѢEnݒcA>|S155y&a7AJ"ܿh{d|KKKǯJLׄ2ޱc2VVV|ILLLGGCIII_~ŋI$L~n߾Mp 2!˽{nJJJZZfQamm=o< `0H$r555]]]e˖Ϝ\Kpx<̄ I,,,ϟ?|{{{nKWOR| @IENDB`dot2tex-2.9.0/docs/img/preproc1b.pdf0000666000000000000000000006271412316606077015363 0ustar 00000000000000%PDF-1.6 % 1 0 obj<> endobj 2 0 obj<> endobj 3 0 obj<> endobj 5 0 obj<> endobj 6 0 obj<>/ProcSet[/PDF/Text]>> endobj 7 0 obj<> endobj 8 0 obj<> endobj 9 0 obj[518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 529 429 433 0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 0 485 0 572 0 465] endobj 10 0 obj<> endobj 11 0 obj<>stream xRy<ߖI4֘EGY3c14 ʖ%Q,MuKQJZH Eߟy~0eGg,yb2:H]`G 09 $L H f?`LPzBgևsf@(Je?HDؾ A$g& Cu,888A +$BHD% ʀx1L@2)8V 46lj|$& @2noY*F'o$}J 7If,$,T7OsxD ű 4*ˠ@@O:5ȊIT6 hAFd~von4 T%470oE]'_?]f 2IT@ ?">B\$@e@r &',ȏ"8@~7*a# 'B sC(~a?23cr:z(@G;H f@{E3 1 $BDX3呖%[4yWb5 ug^Jjz*~AIdKFlx7ضC(Yx8%Y~;=?Ͱd@܈Xȝ-5vŲIBO"O&NeBܴp59\ڹ3gIj}Xhm+kO{ -ŗɲsDL\ n7l G-x3pz`Y0 `ULZsG%Gsa4^>ݧ 1XeF~uIswr+ؗ ,LJр0.>,b qt _N5[uNL . Zt[WTァQci铷NmӍeg͙mMeg%t5ƍv7Iji}b{yֱ?~Ӌ`*1nˊ6^\)}OshyMRRsL/ [=&e.I%JDxZB+LO[F?U=T4Y+2jzY!PݶūݎgJVUq'FT;Z8uؼtXʾ^ `YyRt@N3f-L$NťcGxģfJJĹ룶KEVHҔoeN3X,A5$ %Ⴄ]HeXcw@Y|9eܯme4>Yن5~[qMŧcd+u1][rnVj˖,9k'jitv!] ^ģmy% ?a:K5./ȽGb"2j.:6V^WXҵjC6x t F-,uJwW.}"\EJ̈K thR`' {%;!6HĴ%<~Czsڶ`)1;?ߧ LzU!'&<.nvET/,H΂b&)о_z^:/b enu摈|4PY=aڢn'4b3?_C2 endstream endobj 12 0 obj<> endobj 13 0 obj<> endobj 14 0 obj[648 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 648 579] endobj 15 0 obj<> endobj 16 0 obj<>stream xRkw3D2sU~5L:C/@.@`SA.Sa7Hv<2N `23A}aNtH%y`Ffk8Ȣ~Dߚ#ˏ#,ȿk5Z.&H$JF?gȢtVƘd.,"eRh Dt@fabdKY0 ]U@<*0Ad&o +QBVvvlA$0Fcd&P(~R=^Yk)J kWED|HU~@M61s_s^١{en#(I ?KgNFl̤Lwz3\vO^חg7h?WdyZL9r!ճ.K܇:mMJXK BĢ<ZvFrLYqdck3Z~]H?!|WD)E$߼ 8`^~b6*QnN8.dR)0u5?Pp|9MI~Tei=V*1}M%B,!ԙ9Ɍ0C>ټEq;Ɔ#blZLUU%,1$Խ0 ~4!!L:qwz{p8!n}CGNohDu-9{}^;-7NMwՖƛrLS#|89CO*o|ݟɊ}G%zLa +wy-iD(Mk|3fqwQ1$9ӨL][=?~`Sی;6$A#nR8mUkyE̎y)_Vx{a7䐞5R "C43ʳ d6&?NqęiQVy:d.ԟ c.{c/%\mynLvA%oVXݦڀ({MbYoaռ_u|Y$@W\"M>}Y۸3%G*|}C8Zr b|7q>'7u"Qy@LfۤWH/NbROL6XybE gû6)uf_غ8mU_Y΂q ZMLdY]״EZC(Ś3 rn K7q}a7ZQw휸UVW5pա mt'mdFCW2|/TL\ n) QvIT{o=qt^ZTI2/~ޕS1 XXyt Ѽ#u<`pԸ >׼,M9zn[\iKA/?!@ad.$sCe endstream endobj 17 0 obj<> endobj 18 0 obj<> endobj 19 0 obj[778 0 0 0 0 0 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 556 0 556 444 306 500 556 278 0 0 278 0 556 500 0 0 392 0 389] endobj 20 0 obj<> endobj 21 0 obj<>stream xgXS[%t@z@B)RB$БB(*"MAH"UtDu|4ϜsjGDBZ àr2rWcs9Y, "x$ïzpW鹢xEI `8$ Rj{qH 4=^0( h!@6 44q~p7 ]$)evD~DaШ@2Vogq=_F77 1npݐ^($L@>z)CQ>_v8"H%mgi!LLH42?L%WHt0+)84@:=$Rh7x@ Ac '@ ,/AJ@7ˑ;4VoR\Mrtߐ ߐ$*A I FRAߐ7$ʤM>80,-O'%sj@5e%_ibw$p`tS>,T 9"끗 Q#Q% %&km .$}ۈN|@j&cVXwVoOul]7ӱ\$kkˊVV#bj/+fx+MRM| G 9ie?*K;uLf\T00_\}\Rs]DX _D型 u&mH5Qv,sVt(>R,ZyzO.t@0-tFK>Mq;jA[v^ 9l+>PV3,W}e=? \F8@WpRLմ]s6~cKW"l*ؤyiEvAh\Dz@4Qɝ߀S3?  XylM\'AAꧏo}8muzF[nܤaAV?~*AmN9Iy\ kt>\ J/5"íw}Y l,*#h8 ̦} d>S}PM&/'ǻalOӦƐW]$}HKfo.\[=|s'6:B8¹L6w#,פ#)\'<6ACXtTixctVx^ſ]c&sdk"nn7QBw*o'<Ɩ"rz<Z5):M*KVBnAN)r*ˌ`솭џ)k1fAi%<Tbu;]ۻr^ȫw|2/z`sjE7Va6!׶RG;3ןr&@LTb5 V['9I2jZX9*hlk =hJ/6 RGW]rb 4;0yRd~wMbaMٝ6XMqWQӨ8SD霉Kлl#3vgCsU)~r%e6n+x '>{.GVdCnWn`>YmO5/+Gi%X b n8#.Vd^Gmabzj2& B&_댂A*Tt6+7A[g(&ޥF,4}W@kN9]#=Sےjn[[*[$\ @v n_ڈbtQ1G\ay#Ȥz"#8v׎ث;~Pr@_vM%+[7rue^Nq| XciOGd4hƗ2hy&W`U~򱱃V6l|#Z+O O]l?\Q2 &&џEOUpdݐx6 ~ePxv' U-ٯ݊1RlQO3O|&U>0%Kb2J3_^-V R樂._C8˘=fP<>9'I $vF\ϛZx@uO*xjrWk&c3tfOeǠrxTCq:wes E e5.ijѲN,?zZK߀\o81ͽZmXޛ~PKHBI=&;[c~n*usu 62LNC:D ēB`lKXQt3b]퍭wkW951[JGM+;B̓}uC*01/xXx틢Qɉ3.g3Rc:00' xK?e seI?ҋ=Mҹw @n7ZĮ(ޞ(0BS+6c s~|ɍ*G8&ާm>ͺN-+׵%@I!$U*XnEO|+rY˞LdDnq_<HC![ pB\Mr.d|pI1֮yo\+%eZ^&ep':QdKWZ΋U5Ux.~'.*Όgͭ.#O!崺JmM6+29J#"qҢ<׫jq,c!WCKZevSjtNcclu}\l}Fl<>i5Vd4ybO3$L&=Q~D~fYNI2v~ޣѳ@lC\ %}چ4z+MFb=K J@d`^R֬{MDX{z@c*TYx:ׅlϚz\'%vr{*-gxLԠ't(Vc^6DcUmBEݻ^EKD/P,LKZ-LRmQ! n_x4v]3ctq[~6=vePg]kb8 DZiF.۵c~/JvSj:ZBM9cxYl@)[wl?;zkkoŹv,C.FD??f,:^(:8' N>+q +`7=7O'X )3\#ذL]G:Qij3-GT]b2h}Kg.O)lt iS?"Gu TV\?a3B1@Q=̩.XJgCdVԒpK /('6D;SjuH)[s󉖛WVx^%3Ʀ8Aq+xe!AՕ5k%+wt|7aĵ4pNӪ"ˁ.nn"z#0;=i (M~uvlO-Qu&Q)KЄᘘ-1VxLe*<*b-=+x>2آk~qc쓴~ޘ~voʑ4o(GENeh60<͒" ?^ AS~|u8h ZqB1 z%~u3^BPZ |#B[G8:~wgtK}LrkM=4rVE&Ҙ>x!j ƒΝ0JX9}lEhOR1&bmn|)󏜪ޖ nF~eT6 cVĻLg!fkE vZm pL=xfg~1\ٞMwn";%WoX[xzƒC/KM׽S3?di+(G9^0/V]DŽ Ҟdzy߽PwgѸl" U@)+0eu37DQ *9}P>̓nj#%e@ s[JʴHVg0ݱZ[tEHÍNQWȱ,^l]p8 LT~KJ]UL4giW>mȊO:USx+^*B2mLWcz'MZ|BZyIRdhu&>MGwú]#pd^KʣD:ˣYgZL 9aduчў y/?QCqx yH endstream endobj 22 0 obj<> endobj 23 0 obj<> endobj 24 0 obj[877 0 0 0 0 0 569 569 569 569 569 569 569 569 569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 508 0 0 0 0 0 323 0 0 0 0 631 569 0 0 0 453] endobj 25 0 obj<> endobj 26 0 obj<>stream xSi'xE(@ig@P@]h? C hhw Ġ&7V K>N3{65Ng#;Wk_ź°"M79|p3'JNPv[SɣuUzӑkv%ͤ~͈ҵ9׷F/J*ZW `qtv(*#Anzǹ_XypcCߓ[[mA"Aա,%uR%+=gA=9I(w&uSf 2Eu{B6\6"R%<}ܸmqM^esR>EmV8&zr,sݯ: O |F9F}W;ert(==-?d#4fHEF0:;647ZЦHE 32[}ib;Hm2^au0꺵eyK+PM "|>[شL>-RTQS#b^Y1tʡ؞Sr6"VJ\H}54K:F.( H+9A{㕳 ˨%\PԥV/TwCi*lU xza y"-W oJm) f}~h%"c7釤Bz5y)Kj)m(5q8;^.Ɯ·K9%8F/+%хS1gr7ή\1[ ,+"jVe2p~cB[#[3FST; 뻳]0r؞uUꥺ]ǑMgAw^q禮tnċ{mռk^O@wmָS&NL%k&|4̲g#w\Qў!~F\؁DTl(IGL].I9 n×# @4aIuol< +)oW1:q}lQFS{d?j3.2<|/5;Ⓑ_c;})35ʻFSv^zi{}/om %2o50Ź()}fc*Gs:ĝ1lQ/iνȴSЍ HӺaJJR>Vi܆q_Wzk|oyyMdۭ3Ax8NPԽ0Y^c//|‡CBr!%I٭ƻHYL[bH*ke֞g㿡ωҿx %Imú,<ZsaW##2Ε; 39teJt= s--{y4՗>Z4v;n{=zb=ar 3ej OJYqK4'4/~pڦ\Z@&mM|GyKc, 6 'e]]jzpB'  ~xŦxrvﺪW5Ws_TI~6;Mg$eJ>~9tpV_bJǠg558q/u !2s<ى݃@ŎCw~mwl:ή=i~c'oF^PAS>Co)WqJ6y$O'܍4F>N/y :|Þz-/p$^ۈЏ%~ U\CX3% wI˜AZAOyv$jKG"OFDX뼠+"*&K|`Z11߻/?nf[)eTit!>q{Mk8_t :2PLdz}f95h,Ųe/ݦRT# F - qj%_O.*@tiuXh7Yz%KB)Ǒq[mш>ܦ>/[T_#_MI-fOT # x D&zHLm` endstream endobj 27 0 obj<> endobj 28 0 obj<> endobj 29 0 obj[681 681] endobj 30 0 obj<> endobj 31 0 obj<>stream xRiXSg*,6A 0Mv!H٬K{@VCZTT`R*'*D"TY"E *R\py5{|y{sPp C\-Hі@pŘ! ˆ!w:D2cQH$ c͊{,7HN5D :ӹq`s`[d&H ȴ1 aXp3y[) lڴPL&n ak' 'lȣ9KO`s <.0DP5%lzs6 8 @=|2X:'Aܦ5gnl{XO fMWf@$ -[y@ ɆX#]!Rv$N `.:d08NsS CMD87+Ow 6v,ўIdw cFA> ceyT+YɻZ Z:nF95=IVSa ʔdFNJ9/L*xM-+Mk_<$zΑ4[w.W/6a,w;2G0RNHމfs{cŤ|Tsg'DY/r7g׎,ii'CbdOE?W]Z{e+dJcʴoQff))l0~B뻃pލ,E%M}}N]Af%g}۴9)d}/mktekEXiDk)7  sxGdnxZhfB:=ubm2j[wufS8]OgnY18 C]c'Y5,{;&dG~۽obI GP/LC7gX+g[7 Z;w8+.Pхٚ#~*G兽O"kɝWT=|@)vk\psdg߸k;%)T~Q!K˲=Xݭu煟2͚>=li{Sir1*쵽ȗ*e{Us}r#w<4%07%9fK܌kU/MR\,HW_*"55\r>0)d5N:=蚼`{䒓6f15UNEsYg%2ǀ_BN#A!j endstream endobj 32 0 obj<>stream xVɎ1W4j_$n 8D@멪n/I:0$q?]˫n0}3q%Lhݐ:#le E[L PdX`g XidPHl+cD 9j#82)1g xxٝ:cMF fkB.K0BD;'@!#)d0Cج9Wq=[MH굃poŚh"f$K?VR+Ǔt}޽dݿxє&X8{1$whbv-qe` rV]ؕX>`_g io(>l7zrΉ״a\$M!``U9e*bMCT(A E̢BU}ڭ87l7* v҅,gF$iefk%檼ʢlfO\L d#\ӍC< ;Ɓ:5y&!JJ~شCm]^Rx0q $OPLvHN9X_զYެ6:MHǥKE`՘jyF<#Zŗ+ =O'ɡ!~"/g;,u]AɨFDc38L>wg\TgAڽAdwgO1'qҫ׺\Vk/\^*>stream 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 TeX application/pdf uuid:2a80e2ae-e0dc-4309-8387-ce2532cc50ef uuid:9b8411be-0753-480f-bf9d-7acbbd61d81c MiKTeX pdfTeX-1.30.6 endstream endobj xref 0 34 0000000004 65535 f 0000000016 00000 n 0000000076 00000 n 0000000156 00000 n 0000000000 00000 f 0000000290 00000 n 0000000386 00000 n 0000000484 00000 n 0000000626 00000 n 0000000795 00000 n 0000001047 00000 n 0000001250 00000 n 0000004457 00000 n 0000004601 00000 n 0000004703 00000 n 0000004948 00000 n 0000005143 00000 n 0000007673 00000 n 0000007817 00000 n 0000008041 00000 n 0000008240 00000 n 0000008463 00000 n 0000013615 00000 n 0000013758 00000 n 0000013966 00000 n 0000014159 00000 n 0000014395 00000 n 0000018490 00000 n 0000018632 00000 n 0000018713 00000 n 0000018738 00000 n 0000018925 00000 n 0000020892 00000 n 0000021878 00000 n trailer <<20F15DA441BD1E4B81B0A0675AC5852A>]>> startxref 25225 %%EOF dot2tex-2.9.0/docs/img/preproc1b.png0000666000000000000000000001736012316606077015373 0ustar 00000000000000PNG  IHDRYIDATx]\S! ` v:b*=٭u(f9*5^ݫkc/L` pď!{p眝 9s|z0Q[[B_d!?\]]M6uTcog7JIEEE)))@|i@$!!!AAAh"P.d2A"##zxxL2cjuUUJ2P#""/^LtBoq\* 8`@ Hj5s_'˅B!PbV 4IJR( rP"aT*q%iRN ϗJVZ  by-p(Bѱ1:RL6==jl!Z H$tai# : %A\6)b&=$r&vJ JrmoriFknp8@ǠwjųJt^$ʄ9HKKKHHt钳3͒DD v,IbňF\|9,,L{#:I*CYPCdddDDěoIIqqq'O޵k; 9a:1au(|>۶mKHHK*$uvv[ z|r@aa$"l2vNi3;~Ctty<;L.Zhd ۂ@Z(.yJ&?>**GFLEݱΒϐ-BN_ ,L*ҥK ZaaaTHJOO_x1;@R#Y&3h]-a: jjjA\nyy99*++ 1YX'??IyyyAAAY HRTӧO_vx#n|||ഓQ.qGt-IvFHH_|ATjkkdF_}cG[c zn=;ırz$8sү~08pFus?#ou1#js]?7;pkᗧN:vUq[j^xhSJYNFA(|c7v;{J|?-p3դr-dB}"2|3o>_$n7zp|t^g{loe(44TP%~ʕTKWwϼu$iOylXWpwy NR{e~mu+/{47lbg~5.$7iUw=]} h?DWo5j-Y00ª[y%-%W)i) ^Y  =K=e6ѷ#XG.Â/|zRƱ^=Z\%`I,57Z@v˗FgΣL [טw0Wl=[Ngo/~)IUË%NܛϪ;mAۏvONNڝ֓=^}ٓoʿJ$k,?IIpW#=@{[\lRig$*ӟ^=^KK>Ɇfu1Og7xL~[S \;Z_OG~vU΄/OKB)O5ڹo<:3߉Nt{'wXT3I/;YL -%8. u;v^[hօyEhTwʊnoW z;w꼑]0㹗^~wgKh~'~sȾ? 9p*?'7dR@G}$ݖkԞτU~a?}+.w <Ү]sr\.Jts_JKeoq|C @~ߡZ;xhaQuOwq{ B &wC{oPNo75G9wXb&-p2K[DŽSVL^g|WV#W$"@ f;;RI5kְCssZ&5kFabhjjx{{ ߿;Kz  X˹\.9 i`Y .$GrLV&͜9/_i,p|s!%9)tx<}`'N@Qte Fg$9;; BC]()v)h7iSLa^1ri$(LÑςFdnkXv3BEТI vyda#6ϡ, @j5DGGϚ5TZ0 tkzH(" ik jJ1wll]h\EQ#t$M0)`BɲiY"eCkY7qD"An F0 0R04hY0 Q4܀6oDeޝcTT:ƑFe誩> q@`$0BD"18xTYhy}\!((Xc/j(j3 P(4ꗏ}RDm &JB!}|*|PH˛ImR(lM|5FM5?U\r.wHt Cp ULG'HjkH$VJ*BLQ,\Ll!u݇T 4OTXg Ӊ ?qc(:ZRjr}PӵpNA,iZm*|rp~i"`9Tb*!CIzL\ #*@hxuQjx 7 LaH Z%pSMrb~ . $ 6Spai)| F"%hk0N\bśorzvڵ\X|0.BHW(!!!+V;w.U*"IST'O^2@jB(//ylNNL&CCCgϞ=c $%%eff3K@a͚$0bQٳgڋ+o;{c$7= ICZ}u?ر)n ˻̮hw1 .M元},k/i3kHR( k;A{elüZ1R8|ƴWwkwBux6?TLCh|}}3227P3f09ѵYɧT.EܗU7%9f$}ݥ6Eu k|X'I>rg'/_]AfWW7[7./>+8K՞ȯ0ͯ)i*wtӾ^]q??5];@CI^A y6>9Ű&.Aׂ2坈={O#=^(z7i>W; k>)P:ֳG&|hALL,"x149,,ojļbMio$䨰AnQ۷)TFabA\HO**~˪^8A[uOW}Ӫ@/WP֣e'WmZwS<.3੭EG?iwtusw:i@6nI8a6kg?4_i_¥۷MUkM﫟6-o+4y.fSklz969mhӟyNv 5&ݣLMݡ#xjB;uqRS9sّ?;U5f-Oߋ{5vnY?qĠquUVPw g|n ?{t }C;l3! a#Q*Ŷڔ[t1EO+u-[VnԍYXPx SsUnKU;g>!p7y<^ffD={_?E` 33344Q,u2l ߛr< I ,@Q]a?<[`"ٕt?HZf dYK%&&' x6 `^ぢ?ul\˗/ݱ-h\"3cUAM F##eoooHgϞfv3/k#, m5oEg!QkL)cwXTW܈:;;cccbxCV"^FdzM@ B &Z ad;?%'O)$$+§cH$z4ZVTbC_a{v,4MrVgobpC{ݕ =Q5sfaB\:$ &|>s)a4 0s)+w5E Z)ڵZFQAtA} t|>s-`Z(ҸJy ElI~Z #r^ ]~IP*( 1&N! ]Zڏ-ه 1AY,bi{e(0ƒXpM ^Lo*$){>a oA;jTX> j$  D*^` [!T BH4dլ!_݊Ǜ6Al fs$P+FI s߱cuGXk4I-b{`À ~~~0xدJPÆ,Iw!''gڴi?˿ٗ ؁ZՕ9a3벏whk̾=_o8ZM&YL&:u*OWte讹*^pK}CME̒>A`>,nj2eDWu+Ňty+O ݁%ɚ= KZ{nwgM||Mhz% 0]F>*N+ip <3ܻ~N5y"iu.̘1D|VMO~Uvֶ.IF;[ŦQ222l^nnnPPKPx{{#RPP`4770؛rxO0`{mwQb%n>􃈌j#ygV2 Hʭ8G\.׊dZRr"hLL_.}!hD;v[BBh7(=`jIIIiii֯L=٬fj/͘.y\lG|Шq.]|2OMMMVTl;\q܊Cu7d BjZlվM0 #X^q\dF>i0?*P wuuX__hRRR`Ŋe~Ff/++ST555**##A+WN> stream xV=7 WL+,HIm @:;6HGI̹pX#R_@{{o??[?mZ*94MEᐚ_#kr Y<7jc:<םHOmu#14݉l2,D)0NåTMk!S]nAC=$bWPSw4Q#V=rᎏKJm;eX Zj  ei2e 7#4ošī ZJ.%Xxbd s8jscOZCP$S G(9dgi+ @&pR4 >Ӟ&˘D/0ѹ-!3 ^f)64o44 d2HH8Fsi˷ \Bc229ms qml~qXu1Z an^o?^!茒eu.C&EcQFr^]}19u`[gEْ;;.5VGQ0XC'ET;IQ boAg[ssRI~~ӿ `9gϐj}ϐoH-evҨvZ mK.6Tvvym[:3 _niMaj҇6HYPcŸxu`e?x <ڡ^ax>Kjy>lSendstream endobj 6 0 obj 1384 endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 12 0 obj <> endobj 13 0 obj <> endobj 10 0 obj <> endobj 8 0 obj <> endobj 11 0 obj <> endobj 14 0 obj <>stream x5{LSwޫd@mM8M(ac1 O¥W!l@\e  G<F lLɈ 27.qs>$$IaQ[>mR#ߡ _v3(9O@A7"aF</((P4I,e*'T8 g$ S24#C5WFqzN%oi3ss82B>8|$ “o^78` &~$o$ђWap}% H Za jS 7y'_eOn15tZ\vWC JFhyKzZ[_ȸF&.H+rK#KW>"`)emrdvO *7w5 ͗l/ZGyv7$8 xZ2A+?.gD6D?"#?@Os?D+[Xʙ$ bTw Z^}[V[x R.?;9%mˁG0N` SGiZ/uXl]-&>sTE.f(8-_y(dx#o(M ) s؁LQt \RyYFh ji$@?L<#dPߧXCM nԆ> endobj 15 0 obj <>stream xCMMI10$N  o72.FL[Copyright (C) 1997 American Mathematical Society. All Rights ReservedCMMI10Computer ModernncOD.MUX;-ǚ|tyfjMZ{`t\h&|wGjSZz`C1ZKtzb]]xdy{i}Pҟ~jv~W㳡n {}}}{|zs\D#!1<#<(LpǴ¶‹~pu?a  7 ^k endstream endobj 16 0 obj <>stream MiKTeX GPL Ghostscript 8.54 PDF Writer pstarrows.dvi endstream endobj 2 0 obj <>endobj xref 0 17 0000000000 65535 f 0000001699 00000 n 0000005751 00000 n 0000001640 00000 n 0000001489 00000 n 0000000015 00000 n 0000001469 00000 n 0000001764 00000 n 0000002053 00000 n 0000003600 00000 n 0000001876 00000 n 0000002231 00000 n 0000001805 00000 n 0000001835 00000 n 0000002470 00000 n 0000003810 00000 n 0000004412 00000 n trailer << /Size 17 /Root 1 0 R /Info 2 0 R /ID [<230AD6D34AB5D43C758808B94253E14E><230AD6D34AB5D43C758808B94253E14E>] >> startxref 5952 %%EOF dot2tex-2.9.0/docs/img/pstarrows.png0000666000000000000000000003666612316606077015554 0ustar 00000000000000PNG  IHDRȆ pHYsnu> IDATxw@S?~† 2DTQQjm:(ZWk:ޢuo*8DQY!a~m%@'9>gR)(--}qUUUaͧMfbb*PCnݺuVnnP(`0&&&t:b544TVVh&N8w@(*Akkw}G"P(ȑ#|.BH$ |>fffnڴ FkjjٳJ qϜ9cjjB,Xk@秦z{{P(? B\A(._F;99=yD$w6lA;wDW>}: Zn]WWWaAAAh4:44T("A@1cƠP{ݸq# AWXp!ŋbX.DBmٲB\h4:""B"ȱ[Xh" s-=yc [ZZ&Lb̐zPj… rg-Fݹsk޽ iiik׮6lD-[o޼A8\ӦMJU?><00ڵk_dee%$$DDD(33e˖ݼyǏdJb XY*NNNX,իWJ%JMMMG0 }G]]]aaԩSУPSLINNd֬YlxeeeŝÇ"LR24& A$²Q]|> Cьh4B\eqMMMen޼xb&`wF5REEÇoݺ'D"X,`0 A̙3̙`Sӓeee}Ǐǎ:{찰04`0|^SS)S\pAŋիWVWWȈB3Ԭ,,`0֭[Un2chƌ=6cX<$+++sttuڵϟlOOϲ2Yjjjf***-ZD """222lqCÇ[Fei:m4;w۷IҔ4T:nܸx9wF֭khhϓ簾x<~ҥl6!Bc,;pUEEŕ+W_?|_~EFK8j*D$޽ùzoa ֭CP^^^MMMq'NJKK{l ;;;z')) p=dʕ+!={v{{{?Ö;ACEEB\9#99p[w1_,K*nݺСC=믿޿ohիUPC?nݺE&G܌Wx/sgϞsNLLʕ+Lf'Mdcc# ? (44 ͛7! F+g9W$Ȓ@ _^ՔP\\LF)ߞb͛h,#ӧ)))Jx)ݝFu/ >A&v;؈Р秄ȑ#MMMU-Ǐh}'LJ!ĕ'6mڄ`233*(ѣ6 &궵)T_b߽{WnИ9sBͭi:)h4TZZ,YWF in.\Hє8Sԁzt'q;::h4ڛ7o/xWYD" 刻y& >>!immwޢET*N߳g644899]rۻ, }}{ٳիgϞ544uttե$Դfgg'$$0L`M6بH$%H,+ B p &McW f(__r)11۱;ph4Z"xܹsW9r$DZlYyyyo;99￷#HΝ{]ѣG ycLjD1cՔgϞhmfooOӗ/_lvlllXX9\bѳg^p B񉎎V͙~9KII322rʘ1c?WXj``v7oތ92::zڵ?ZO?566jjjn۶nיՍ,K t]]]SSSɓ'D՝,nhh666;ߣGD3\I,,X@-nL~'8w˖- ,ZZZX,VWWjfag̘A$3*ğ555Bt%* $е= 7ozfPp`YR ưav<oʕOChHb{lfGYVV l~3//OܔaX&^BP...N]vFFFΚ5 aX,OOϼaÆ&FmkkqㆌUx//+TJ{{{HHHGGŋ-,,RA*FGGnܸ8?hkk~С5zI]|(P sEdU`ɮaÆ999)nYUUaÆ膆O0Ç?~M-TV^^8xD߿Fwjc`+JaO-[(B !HڵkǏpϟW}J$ M2﯎ @ Xhyl۶ pСo[[ۥK rvv}gs155UDzzz|HJR&iook9ʸr _`@ B3u'''<=x |0"nL#N?qRׯMLLO\,G9...L&SXӧO;::s >r|WSݻ/{M\Tlee5۽{7H𨪪g?їHkʫCXuV={T4ZW*9;;AܹsGb:uݻwUcԨQҥK8.$$˫)=W*VWW/]NݣL7"##t:N߾};/@;vK\q8N.#IKK7n\kk+>gx𡛛xٿ1ݻx<~ܹpd7.'Otpp eOmm:ʎ뜵޻wƍl6\OOsT___^^d2?~`0ƏpBoooETbXw܉~_=O}wz##{FFF.;wL:ǕD ɏ?niiimm`3g?~1[q`X>ꫯV^={l8ND E[[[`m۶߿Cp}U)|~gg'rd2JR(YBָcǎ盚\rJ ec2g$Jjkk[XXzzzZZZc|퐐9s\tIS&Lfvv+Wښrt##ర0kkkH$׮]KNN.//H$_}1022jmmbXL&yf7oL< 11q@:Jg醆:::՗l6ɓ'$x͚5r?---]|Y3SSSs+VX[[C啐=cjkkg:ңrvx!!!zzz-̔K wQSSS 2v[SSsQsss tҺ:Pxb,3()+G]  p쀖ٳch4zϞ=ÓPYYf ggݻw興AyC&_]} )RoFDD0 }ƍ>Dn1ٳgc0uX,߸qFa05 rV,,,222qQVVw^[[[Ə}`HݻW.DWC0\,X@RuuuCCC_zMߥKĂI;v 1 ą! ´CCC De*N{o߾}; [dgghjjZYYDE &&&jmtas|]! }߽{|r@hh$Ξ=kjj"+4@Н >|/`ҥJũƒ\ !vwu)S$''N?uBݜVd! u@󫵮 Jx^ !_gTWfZO]]]*ZYY*+!gA&ن. 033Uԝ+,))w#(Jt9XZZvtttvvD>t !_'Fg?:;;'Mknn gtzEEEaaꟺL>v֬Ypu%Hjkk O82f̘>N# ?~ڵk7np,޾o xJOOOOO?r\G][ZZ~cƌikk|/'!_@ W[*رcz޽}xZ7oެyɓ' y222޽{ף 7mta~ac,Jccce'nkk+ ^777ӳLHAPlccʕ+UY3߿?q℧'!= Zs&OL z[% 9U:::^}j„ "6!EEExsskȑ#aaa*%%e̘ VJ\IDAT1| 6$$$-kL{ O>חH$G\.X5w*:::BCC៿뺺:ѫw? GCCcJ_c2gyݽB HLHH_JÇ Z)]WNиt| ]!V38q(\Xlee5ydDWbq& s䔖OA 10>MMuuuH. "?~T_ Js_|m޼YrsrrXZ{!Mܲ}YYYq}ƌ555 -̙CR"qbqaa֭[dݻw?ˊN$x<"p9 59 ZD_隚Vi׮]h4z߾}xjkkO0AP!nWWWrr555tŋҾ媻Ç8`*|] ~¥"d֭˓񳵵#FoߖK.R2J 몬t5b^:~x<onno߾>დJ=qD?>| >(+HWWZZZ/^'Otrr hĈϞ[reeeezhkk;uꔾ9s0̉'嫫[F܊ѣG?^4_@KK˲e(Y xOzxxp &dffvvvzzzjjj>|PrWBAB\DRRRibbB"&Mt-ʼn'N h?CFFƇD" sH$33#Gtל055577^rG]ԾΙX,.))9qy<ƍ'Mwʕ+/_~]{{6hmm`0k׮r`||9s&OHA񩮺`0zD߉I$@G+Lqq)JP(,**Zzuaap8B A&'N8k֬ѣG[t###m۶g 5X`]%%%666MW"nKK˻w^xQWWWUUd29\+F"Ɋօ@ =}۷1̬YV^Ÿ^[[;66aX`g߿rJPPPpAW}!P(ɹ}ӧO 555(JmmmmjjjiiH$fꫯaEW= ??k׎5JAKKޖ-[/J__ϟ1q+~}xx8L 3˭ܽ{1c?k'%%ed2`ƍ_ަ1BE7eʔJ^h4:** Α/ĭ"H;w `XCѫV)[UU:Z 4mΟ?]~!e_[SScgg!\\.wƍX,vΜ92]0c ;wTAW뼼<3g'rqq|RN\G&oݺ%K(4?H$-|~zz?355UM8}4PݖX[[WWW#Ԕ~@ѿ/p8ܩSc޼d2hǎ*вxb&ǢxL6mڠ,>|)㮱 >)D+V ׯ/--U}Y[[(cǎa5kȽ. $.wrrȀqY6o޼Yj6F[n۷oBep]v)HrJ Ǐ+TXpp0L&'%%EDDt--Eeggf'MD&| 0w)ʼyqi&,h]UUUYZZ~?WD"ssS*A:::x<N^/^(Mh], GQȹsR(^9~g@yy$rYfp89 )Nyuyɓ'_-1sLccc% e2Fhu5nmm-FiaÆ Ƃ .!GH$W^M8Qrt+W0LHHH]]kkk1, p8} mU@qqqccEٝ9szʕ}"n]],Yvv+bcc޿7p-BYr&LwߺuJT.qTj޿ ѣG;99%%%zErrr~~>\Gd,ϟkkk6nܸdɒǏ_reBPBv޽9r$ ==W~~~JJ Jݲe+EPvJKKsvv=. СC޽۸q@~p/H$z{{ÿ^~=00.q_~E*se}R`2%%%ߙ}MMͫWHe˖rKn566quNJJMIIʚ~,N툛 PΝٗaaaqԩUV 5.eX=* ŋƎ oVƌx, SM_'|̙3$C0߿I&IRXzo۶ Z:?~ѣUg<"hܹ C٩ _)))GSSs…=wvvbYYYjxs8:rÇΨZZZ&MА0,T*񱰰PDGݻ~9ƍ6\mmQFvQ(9:5Θ1<;;[ ÇSNU;##Bkzӑ#G޼y~z@q۶m~D"J+qY[[ڪ o˖-(j7n: 3/o`0YYY vYKKG"N/\PeGp|}}6'''===U{TVUUQ(ŭt9#W/N<ʃKHҔ0o޼~Uظq#QP-Xyfɓ"h4c`Æ JxLаe SWW.k ÇWZ5==ZΛ7O*^|YGGGN]*++z7|C$[%Kⴴs~N" ׽ihhp8FFFNNNZZZ*]RYPVVO[k׮k7o޴DPX,;P(,--=|0\٘D"ijj뛙YZZP( eoo<&&F>zoT*܌UVH$utҝ;wymm T*LݺugrssFZ[[<[iӦB_k@$&&Z[[CXTT$ք'&&B4a${xx8ɓ'H$RHHȋ/d9,((سg_v}_bo߮MRbccL1X 466aXvGA[lQ)477Ϟ=!^yyd2HKKSy\۷;wLNNnmm5662euuu-,,Dbkkk]]]]]]NNNZZZ[[nHH7|E5>|3fsrr6o砣x8ҥKӦMSM:w\ppFP(x<B*J FXXX\\ܧnJꎭ[b059WRR2|p2|ԩgooO"T׵|X@__N b^^^zf}6&&O^{…IIIcƌQ;pH$np4 AOoeee666^!UcW^\RIi!_EPjWٹKA""##W:uan{E -allO]Ғ՝MDqUR4==]҄ III|>̙7vX&cnY@EEEUUz ;11B(mC`|||={W% 5j}Z#GliiikkSdQ#AGGGSSH$dbX$cFP$ }s3330L--- GWWWqqӦ&8 Xl```ffmΜ{l|5kPT6x>Hh?Z[[#U Oo޼Ypŋ7++&XYY}+z(^vmذa8СCşA7n7n0 ,h4z=6={UR)sرG.^XWt{_9?Bˠ :Ç777_pFϝ;^iffxbYZٳ_JBpĈ5a{{;Oŋ2ݻw>C+dggSXy׮]ׯmx`ԨQ􄫫>x`ԩBܹseOWUfeB܄===O7nhhh|ReF)Kq]%%%[n{nSS]vUVV(qǎB\y"++L&Wyyyrzzzʬ-;qk'LfppGҧG\\ R)O>* ></99YCTA(bGɽ .`0Z9U3dͦP(˗/W2 CtB٣׮] P\ӧO733SN`ºux|{ivtt*cvvv4.VhA 3gB/( )vJ͝)ںu+LpAWWW%Pdذavvv=y$ RmllԜ6mNs7&&1yY*"Ύ`((gX,`0o744Bx<%Ȃ}"##UM III͘1CymO8B<Ϡ"X,666={$:::3FUo>4czB?~rLP!.\ٳJsN@APA ɱ044OpPݜ{(7)**R5U@t)77?QQQ"TӧOu *VTT0l0@}} jC__AAA?UZZZ֏P(]a]✜ooիW$%%٩7 ҲfyyyKI|>_xȡdoo`Ǝ{/PH$.|r,o nl0ozlkTjmm g&&&\>}}vKrB#G!P(s9||||AAꪨ_Dk֬DD"qŊY}PwèQ,,YaÆ T Bi&uQ}+q8Ah4̡P( bDSTӫejjIϟ?}4777n,]411.c?MMM"H.c0cƌ3fx7o466666p\SSS}}}#G~AE\CCCѡIIIm]]]޽؈Ἵ{LU;]ѣGw=NŲ[vxbzzVVV#F=y~ՔAE1cƠP(Y_Ι3@ ?M2 5kݻ'^|9{ySkӥu35xi{w=z{llccchh'Cqӧ>}]SSo=زÇB1sL'PR4^BMY*H$*..seYlee5z%XȊ/*TБ#GaFŕ-**RPz[[["WFwk׮Uc).]pكh ذar9** B"@l 5vX,no޼ AP`` BBUU)JKN ֶB\OD"ٽ{7`„ *w%x$۷oNB:;; U:;;ׯ_Tݻe)bm޼ l8}}}Q(J }vWWgD"Hۯ\H$Q(Ԃ /`^@|qqqׯ_P(666L&QYf{zz"Ǧ͙J=~%%%L&Ǐ4`x{{O6gB\? IENDB`dot2tex-2.9.0/docs/img/texmode.pdf0000666000000000000000000007000012316606077015116 0ustar 00000000000000%PDF-1.6 % 1 0 obj<> endobj 2 0 obj<> endobj 3 0 obj<> endobj 5 0 obj<> endobj 6 0 obj<>/ProcSet[/PDF/Text]>> endobj 7 0 obj<> endobj 8 0 obj<> endobj 9 0 obj[518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 529 429 433 0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 0 485 0 572 0 465] endobj 10 0 obj<> endobj 11 0 obj<>stream xRy<ߖI4֘EGY3c14 ʖ%Q,MuKQJZH Eߟy~0eGg,yb2:H]`G 09 $L H f?`LPzBgևsf@(Je?HDؾ A$g& Cu,888A +$BHD% ʀx1L@2)8V 46lj|$& @2noY*F'o$}J 7If,$,T7OsxD ű 4*ˠ@@O:5ȊIT6 hAFd~von4 T%470oE]'_?]f 2IT@ ?">B\$@e@r &',ȏ"8@~7*a# 'B sC(~a?23cr:z(@G;H f@{E3 1 $BDX3呖%[4yWb5 ug^Jjz*~AIdKFlx7ضC(Yx8%Y~;=?Ͱd@܈Xȝ-5vŲIBO"O&NeBܴp59\ڹ3gIj}Xhm+kO{ -ŗɲsDL\ n7l G-x3pz`Y0 `ULZsG%Gsa4^>ݧ 1XeF~uIswr+ؗ ,LJр0.>,b qt _N5[uNL . Zt[WTァQci铷NmӍeg͙mMeg%t5ƍv7Iji}b{yֱ?~Ӌ`*1nˊ6^\)}OshyMRRsL/ [=&e.I%JDxZB+LO[F?U=T4Y+2jzY!PݶūݎgJVUq'FT;Z8uؼtXʾ^ `YyRt@N3f-L$NťcGxģfJJĹ룶KEVHҔoeN3X,A5$ %Ⴄ]HeXcw@Y|9eܯme4>Yن5~[qMŧcd+u1][rnVj˖,9k'jitv!] ^ģmy% ?a:K5./ȽGb"2j.:6V^WXҵjC6x t F-,uJwW.}"\EJ̈K thR`' {%;!6HĴ%<~Czsڶ`)1;?ߧ LzU!'&<.nvET/,H΂b&)о_z^:/b enu摈|4PY=aڢn'4b3?_C2 endstream endobj 12 0 obj<> endobj 13 0 obj<> endobj 14 0 obj[648 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 648 579] endobj 15 0 obj<> endobj 16 0 obj<>stream xRkw3D2sU~5L:C/@.@`SA.Sa7Hv<2N `23A}aNtH%y`Ffk8Ȣ~Dߚ#ˏ#,ȿk5Z.&H$JF?gȢtVƘd.,"eRh Dt@fabdKY0 ]U@<*0Ad&o +QBVvvlA$0Fcd&P(~R=^Yk)J kWED|HU~@M61s_s^١{en#(I ?KgNFl̤Lwz3\vO^חg7h?WdyZL9r!ճ.K܇:mMJXK BĢ<ZvFrLYqdck3Z~]H?!|WD)E$߼ 8`^~b6*QnN8.dR)0u5?Pp|9MI~Tei=V*1}M%B,!ԙ9Ɍ0C>ټEq;Ɔ#blZLUU%,1$Խ0 ~4!!L:qwz{p8!n}CGNohDu-9{}^;-7NMwՖƛrLS#|89CO*o|ݟɊ}G%zLa +wy-iD(Mk|3fqwQ1$9ӨL][=?~`Sی;6$A#nR8mUkyE̎y)_Vx{a7䐞5R "C43ʳ d6&?NqęiQVy:d.ԟ c.{c/%\mynLvA%oVXݦڀ({MbYoaռ_u|Y$@W\"M>}Y۸3%G*|}C8Zr b|7q>'7u"Qy@LfۤWH/NbROL6XybE gû6)uf_غ8mU_Y΂q ZMLdY]״EZC(Ś3 rn K7q}a7ZQw휸UVW5pա mt'mdFCW2|/TL\ n) QvIT{o=qt^ZTI2/~ޕS1 XXyt Ѽ#u<`pԸ >׼,M9zn[\iKA/?!@ad.$sCe endstream endobj 17 0 obj<> endobj 18 0 obj<> endobj 19 0 obj[778 0 0 0 0 0 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 556 0 556 444 306 500 556 278 0 0 278 0 556 500 0 0 392 0 389] endobj 20 0 obj<> endobj 21 0 obj<>stream xgXS[%t@z@B)RB$БB(*"MAH"UtDu|4ϜsjGDBZ àr2rWcs9Y, "x$ïzpW鹢xEI `8$ Rj{qH 4=^0( h!@6 44q~p7 ]$)evD~DaШ@2Vogq=_F77 1npݐ^($L@>z)CQ>_v8"H%mgi!LLH42?L%WHt0+)84@:=$Rh7x@ Ac '@ ,/AJ@7ˑ;4VoR\Mrtߐ ߐ$*A I FRAߐ7$ʤM>80,-O'%sj@5e%_ibw$p`tS>,T 9"끗 Q#Q% %&km .$}ۈN|@j&cVXwVoOul]7ӱ\$kkˊVV#bj/+fx+MRM| G 9ie?*K;uLf\T00_\}\Rs]DX _D型 u&mH5Qv,sVt(>R,ZyzO.t@0-tFK>Mq;jA[v^ 9l+>PV3,W}e=? \F8@WpRLմ]s6~cKW"l*ؤyiEvAh\Dz@4Qɝ߀S3?  XylM\'AAꧏo}8muzF[nܤaAV?~*AmN9Iy\ kt>\ J/5"íw}Y l,*#h8 ̦} d>S}PM&/'ǻalOӦƐW]$}HKfo.\[=|s'6:B8¹L6w#,פ#)\'<6ACXtTixctVx^ſ]c&sdk"nn7QBw*o'<Ɩ"rz<Z5):M*KVBnAN)r*ˌ`솭џ)k1fAi%<Tbu;]ۻr^ȫw|2/z`sjE7Va6!׶RG;3ןr&@LTb5 V['9I2jZX9*hlk =hJ/6 RGW]rb 4;0yRd~wMbaMٝ6XMqWQӨ8SD霉Kлl#3vgCsU)~r%e6n+x '>{.GVdCnWn`>YmO5/+Gi%X b n8#.Vd^Gmabzj2& B&_댂A*Tt6+7A[g(&ޥF,4}W@kN9]#=Sےjn[[*[$\ @v n_ڈbtQ1G\ay#Ȥz"#8v׎ث;~Pr@_vM%+[7rue^Nq| XciOGd4hƗ2hy&W`U~򱱃V6l|#Z+O O]l?\Q2 &&џEOUpdݐx6 ~ePxv' U-ٯ݊1RlQO3O|&U>0%Kb2J3_^-V R樂._C8˘=fP<>9'I $vF\ϛZx@uO*xjrWk&c3tfOeǠrxTCq:wes E e5.ijѲN,?zZK߀\o81ͽZmXޛ~PKHBI=&;[c~n*usu 62LNC:D ēB`lKXQt3b]퍭wkW951[JGM+;B̓}uC*01/xXx틢Qɉ3.g3Rc:00' xK?e seI?ҋ=Mҹw @n7ZĮ(ޞ(0BS+6c s~|ɍ*G8&ާm>ͺN-+׵%@I!$U*XnEO|+rY˞LdDnq_<HC![ pB\Mr.d|pI1֮yo\+%eZ^&ep':QdKWZ΋U5Ux.~'.*Όgͭ.#O!崺JmM6+29J#"qҢ<׫jq,c!WCKZevSjtNcclu}\l}Fl<>i5Vd4ybO3$L&=Q~D~fYNI2v~ޣѳ@lC\ %}چ4z+MFb=K J@d`^R֬{MDX{z@c*TYx:ׅlϚz\'%vr{*-gxLԠ't(Vc^6DcUmBEݻ^EKD/P,LKZ-LRmQ! n_x4v]3ctq[~6=vePg]kb8 DZiF.۵c~/JvSj:ZBM9cxYl@)[wl?;zkkoŹv,C.FD??f,:^(:8' N>+q +`7=7O'X )3\#ذL]G:Qij3-GT]b2h}Kg.O)lt iS?"Gu TV\?a3B1@Q=̩.XJgCdVԒpK /('6D;SjuH)[s󉖛WVx^%3Ʀ8Aq+xe!AՕ5k%+wt|7aĵ4pNӪ"ˁ.nn"z#0;=i (M~uvlO-Qu&Q)KЄᘘ-1VxLe*<*b-=+x>2آk~qc쓴~ޘ~voʑ4o(GENeh60<͒" ?^ AS~|u8h ZqB1 z%~u3^BPZ |#B[G8:~wgtK}LrkM=4rVE&Ҙ>x!j ƒΝ0JX9}lEhOR1&bmn|)󏜪ޖ nF~eT6 cVĻLg!fkE vZm pL=xfg~1\ٞMwn";%WoX[xzƒC/KM׽S3?di+(G9^0/V]DŽ Ҟdzy߽PwgѸl" U@)+0eu37DQ *9}P>̓nj#%e@ s[JʴHVg0ݱZ[tEHÍNQWȱ,^l]p8 LT~KJ]UL4giW>mȊO:USx+^*B2mLWcz'MZ|BZyIRdhu&>MGwú]#pd^KʣD:ˣYgZL 9aduчў y/?QCqx yH endstream endobj 22 0 obj<> endobj 23 0 obj<> endobj 24 0 obj[877 0 0 0 0 0 569 569 569 569 569 569 569 569 569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 508 0 0 0 0 0 323 0 0 0 0 631 569 0 0 0 453] endobj 25 0 obj<> endobj 26 0 obj<>stream xSi'xE(@ig@P@]h? C hhw Ġ&7V K>N3{65Ng#;Wk_ź°"M79|p3'JNPv[SɣuUzӑkv%ͤ~͈ҵ9׷F/J*ZW `qtv(*#Anzǹ_XypcCߓ[[mA"Aա,%uR%+=gA=9I(w&uSf 2Eu{B6\6"R%<}ܸmqM^esR>EmV8&zr,sݯ: O |F9F}W;ert(==-?d#4fHEF0:;647ZЦHE 32[}ib;Hm2^au0꺵eyK+PM "|>[شL>-RTQS#b^Y1tʡ؞Sr6"VJ\H}54K:F.( H+9A{㕳 ˨%\PԥV/TwCi*lU xza y"-W oJm) f}~h%"c7釤Bz5y)Kj)m(5q8;^.Ɯ·K9%8F/+%хS1gr7ή\1[ ,+"jVe2p~cB[#[3FST; 뻳]0r؞uUꥺ]ǑMgAw^q禮tnċ{mռk^O@wmָS&NL%k&|4̲g#w\Qў!~F\؁DTl(IGL].I9 n×# @4aIuol< +)oW1:q}lQFS{d?j3.2<|/5;Ⓑ_c;})35ʻFSv^zi{}/om %2o50Ź()}fc*Gs:ĝ1lQ/iνȴSЍ HӺaJJR>Vi܆q_Wzk|oyyMdۭ3Ax8NPԽ0Y^c//|‡CBr!%I٭ƻHYL[bH*ke֞g㿡ωҿx %Imú,<ZsaW##2Ε; 39teJt= s--{y4՗>Z4v;n{=zb=ar 3ej OJYqK4'4/~pڦ\Z@&mM|GyKc, 6 'e]]jzpB'  ~xŦxrvﺪW5Ws_TI~6;Mg$eJ>~9tpV_bJǠg558q/u !2s<ى݃@ŎCw~mwl:ή=i~c'oF^PAS>Co)WqJ6y$O'܍4F>N/y :|Þz-/p$^ۈЏ%~ U\CX3% wI˜AZAOyv$jKG"OFDX뼠+"*&K|`Z11߻/?nf[)eTit!>q{Mk8_t :2PLdz}f95h,Ųe/ݦRT# F - qj%_O.*@tiuXh7Yz%KB)Ǒq[mш>ܦ>/[T_#_MI-fOT # x D&zHLm` endstream endobj 27 0 obj<> endobj 28 0 obj<> endobj 29 0 obj[681 681] endobj 30 0 obj<> endobj 31 0 obj<>stream xRiXSg*,6A 0Mv!H٬K{@VCZTT`R*'*D"TY"E *R\py5{|y{sPp C\-Hі@pŘ! ˆ!w:D2cQH$ c͊{,7HN5D :ӹq`s`[d&H ȴ1 aXp3y[) lڴPL&n ak' 'lȣ9KO`s <.0DP5%lzs6 8 @=|2X:'Aܦ5gnl{XO fMWf@$ -[y@ ɆX#]!Rv$N `.:d08NsS CMD87+Ow 6v,ўIdw cFA> ceyT+YɻZ Z:nF95=IVSa ʔdFNJ9/L*xM-+Mk_<$zΑ4[w.W/6a,w;2G0RNHމfs{cŤ|Tsg'DY/r7g׎,ii'CbdOE?W]Z{e+dJcʴoQff))l0~B뻃pލ,E%M}}N]Af%g}۴9)d}/mktekEXiDk)7  sxGdnxZhfB:=ubm2j[wufS8]OgnY18 C]c'Y5,{;&dG~۽obI GP/LC7gX+g[7 Z;w8+.Pхٚ#~*G兽O"kɝWT=|@)vk\psdg߸k;%)T~Q!K˲=Xݭu煟2͚>=li{Sir1*쵽ȗ*e{Us}r#w<4%07%9fK܌kU/MR\,HW_*"55\r>0)d5N:=蚼`{䒓6f15UNEsYg%2ǀ_BN#A!j endstream endobj 32 0 obj<> endobj 33 0 obj<> endobj 34 0 obj[500] endobj 35 0 obj<> endobj 36 0 obj<>stream xSU uLOJu+53Rp 44P03RUu.JM,sI,IR04Tp,MW04U002225RUp/,L(Qp)2WpM-LNSM,HZRQZZTeh\ǥrg^Z9D8&UZT tБ @'T*qJB7ܭ4'/1d<80s3s**s JKR|SRЕB盚Y.Y옗khg`l ,vˬHM ,IPHK)N楠;|`軻xjC,WRY`P "P*ʬP6300*B+2׼̼t#S3ĢJ.` L 2RR+R+./jQMBZ~(Z OJL.I,qaz)ZRA hi-ҢԼpz Ԋd[ok[Y*V}Ο'־~ bG̔`y%K^-|xE dE[${z,^k nW6wMpa،9=թsr y)/~V$-%)+2W}~Yӎmߝ ^֥~1͎;K'\ie/j>s}\'.\GqS_e/BuLE jjXcO74SS;ğ2=Kekѝo~s`qa];Dn?>7jG%*M97?wR\j_9lj伲^c <yDz/(3ҷmf{{5қ`+>stream xXK5q#ԍo_)-BHϞ陈=MvSv}.zxHi<,_ԢlN^}U,~F4 D2~Ӛf̯DYY$gU&EEe4KSՒXiYEd&DEisއ嘱TObLΪUo{j< ͐56aX-e571}L+Q$~MϮφ6ygQ=8!\E3;=.Dj<}ydL%`!E& xEYìZޠ=(A3@& !l{ǻ4[4-;C}"?R3:!TBjRaYq|0%'l2DFdAf,&D!;G;~P`f$ EnHRcfao0n!:C IVɨ,wk' ž R$]]&:ٟd@ NƳ j[dȩܥ%rHEtMH5>{*F&Ghޗ[ n#:fvB#1$嘌#w#"](V!ѐ"f*HF䆫6AmBa[O}g.Ʀ\-c.ְK `o%]q1-c8-E!X!M*͖IQg L_iIکxq8U[1,>h:vPC)Uu2/DW01d]zC&v1-,oR&8qkhr7⤶jIUh}r$ytc ('«IK.CL Kڌ2ᐴoZx5i s|s.SZ}v]VK=F:~Q4urFdb:o7^" Rw1Kv!+CwH"D5%rELa9v6]{Ӎ=w1cב7GXZ 䲕ѥ1\Pmdaa\EbToI\ ¬ѱ:zu:+ޕё^ϙ) ̹ N!L݆\|'!bna,;}cG>stream 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 TeX application/pdf uuid:e634708d-7732-4d69-bf16-a0386a3a7211 uuid:20bdf054-67ed-4117-964e-70337e8e0d5e MiKTeX pdfTeX-1.30.6 endstream endobj xref 0 39 0000000004 65535 f 0000000016 00000 n 0000000076 00000 n 0000000156 00000 n 0000000000 00000 f 0000000290 00000 n 0000000386 00000 n 0000000495 00000 n 0000000637 00000 n 0000000806 00000 n 0000001058 00000 n 0000001261 00000 n 0000004468 00000 n 0000004612 00000 n 0000004714 00000 n 0000004959 00000 n 0000005154 00000 n 0000007684 00000 n 0000007828 00000 n 0000008052 00000 n 0000008251 00000 n 0000008474 00000 n 0000013626 00000 n 0000013769 00000 n 0000013977 00000 n 0000014170 00000 n 0000014406 00000 n 0000018501 00000 n 0000018643 00000 n 0000018724 00000 n 0000018749 00000 n 0000018936 00000 n 0000020903 00000 n 0000021049 00000 n 0000021132 00000 n 0000021153 00000 n 0000021347 00000 n 0000022593 00000 n 0000024390 00000 n trailer <<820DB6C41B768845A7995DD4B0DBC0E9>]>> startxref 27737 %%EOF dot2tex-2.9.0/docs/img/texmode.png0000666000000000000000000006534712316606077015153 0ustar 00000000000000PNG  IHDR#j pHYsnu> IDATxw\ِAV:[w?mjՊ8QqkUTF!{F|e$?>>y:\4FQo@/ABMVTBwwwx?!!߿ }saXϟ?Ud͛7Ԥ|=Nh4+W Hiƴasȑ+W>|844vqq9qDnn_qz5</,,lʔ)T_^xiF 6mdD2`WF"ǎQD"9|ܹs]]]u~sSQQ!`0H$֬Ys6 ) ܹs]V^MMMϟyfzzz}}}SS'0p%K`0عsyY~}qqqnnMG>ɣGږ,Y"4͢EBݻw1 TWWcF&%(;;;A#Q*MMMz-WExxxCJ/,K P(=B544w *Aɠɓ*E,?~|򊏏 ^Xlss/`H$ m X,$iR^( x`G\.K"f͚"uuuEEEL&3??>{yr y9//ϟ/[~WH4p![ZZ|e}}`aab+ɜx`ٲeTTVEFF2W^&JyDHi`DV B>_VVV]]_QQЀbI$ܹs<<m?~|ڵoGŬ,ww . NNJJΦ L&ꪨxYNNNQQ遁ƍZ_:)+77wىǏ&p>gΜdg̾C;wn֬Ycb] Bp8={DGG|Gܳg`~D͛7c0>H *UW_}b/^XYYُ?8ydSSSwނm&hP(~w6iҤ0TuD"P d2t޼y'OJ`vvvG~sqq177rXX6aѣ'N$t:}ׯ_מ3شiLvuu=^Tz̀\__EQHi]hii9{lbb"c2ӧOOKK6އZ`ZEVy<ޭ[bbbp8\bbbaaXTe˖SԄSN555ϰJ̜>}:@Yzt~#H+W^vZMM#""||||B˗wޭ?yxJ6mZDDĺu`Jbϟ?OMMpSN]fMhh\F\^TTsVdr@@@``=@`0ZOHJR*W UVVtwwP)ShS~޽ŝ:uj cÆ 6l0556&4v̙րŋ'%% @(hٳg={p ^~]QQ=c& BZ^TLLLp8R^^^>>>!!!H$円;v\[\___kk||r}cԌZ.--MMMr 3g΢EXXk~gX,.!! B6/%  \.Q( bnnD"kL.*z֭Ԡ  F&.]zE?d6T*գGON"1v)11Q(۶m`t:}ժU=.)UUUk׮%ɷn݂G}}}Ν baaaiiirP2o޼"˟>}`77?+Ǜ:umAA4F rZNII`ݐ@JOOg}F$}||nܸb#JMMM߼y3"$H_o@ >}R )))fff?H$\r@ ơ4i& 5}ty2 jjj ի瑝3ƫW_&+M{ ?00ȑ#{EӧCR-\ݻK.P+kcbb!Vgw}͛7D2|kkuゔKJJJˆDY`)//g27ni&[[ۖ2#N`TB8M"bbb!T*wAPe{xx,Z_?fff֭3 +M,o߾oذa$Frq"Z>t@w >#<A\0FOOx=Ewiɒ%{%Jg̘jFRidΜ9T*ܹsl8hYXXādill455]f1D:;;g͚Eӯ]Iepc|__@5Fs "x HibLH'äy޼yk=zL&<ֆtsskkk/477X[[geeA:&2lvvvyݺuquuڵk!^^^std9qℾ}bC輼}:a~"HF1ׯjӧ —_~ &+W477{4>r r\>`+Ç4ma3]qU<c0?| `zTZkkլYZXX,Zhgh, 3gyKiRtNNNP4o) NpF*ӧ ׯp8{Ki?3}6$|~L&0IKK`iqry``̙36hVZNNNO0:ӧaaa|c!p__ػw/x"}(Lp܍7ATbry$t:JZZZ:::2L2LPd(0"""777((hhq |4@ ֬Y7'Z|H$vSKKK:neeeooNRmll B!h4khnn>LJ$IRL&Jy<r<UTTp\.BD"D"Ɏvvv6667 5,,,… 떖{{Q8UWWO0aǎ۷o÷DVj6]UUUXX6\.MLL\]]쬬lll,--C6j-JR&) DG"h4ù899zyyH$2lҤI'NxelO?nݺQիWxٳg c9ΫW˵sH$'HꪫD" D"qD*y/_h IIIBݻ8V__gϞm۶X]l6!77JZYY{xxĿPRR͛NJoooofff*9s棏>jkkRҥKk׮UJ[zgrrr ryii'O+++l6 ?~)yޮׯ_TVVJ$&7aWWW}%%%'NȈUݦM6رD :̝"xIT*>ʕd;;;LMMgΜyᲲ2>? CŹ;''ロ8q[|͏=דJWWݡCuZ^rehh(NEkLSEEEU*UggӧO_p \#VuYYY 4mڴih]J333tҠwޜ9srssGØnkk{D"Ç,Yd2ʠ TH$]vaXWW׭[5m߾}Wn߾}~:m~믿p_~(2\eA^^Ν;DԩS/_<WLzz:DB͛7;::'UЕR,Y2aX4zuww}ïoLΝ;[ZZ^kԨT DwwYoJB>|xzyy^0sw7oh˗/,X@ %o۶mCocƭ5k 6m`eeeP@Q\.;~7o4\.7oO!_hoo633M 8=r?=՘X|ֺ>Pofff4?Dok׮G?nmmqƠlFQQQљO>P(cĊ+<|! IDATxʕB[[[A!h=zd;*s֭CwZZ@0Ƥm segge?t۰ &77whɓ'! Pƴ9pڵkӦM~LoOi4 &@ ;wP(}/᭭C(B?}1] CbD"77a+V9_! 9gBiii@~FmmmV\llL&{)^R 7o`0gg,3B;F->>>l6s ?F"L&shc 𰱱>2rhjqtt`0CVJTΝ;,,,|耀 bDЮAP---jzTT#b(J'9 @.4RLMMn,//&Lkd~~@~ ]]]o޼O"PܬY.\PQQg4cssДd2mtıǏӇ~m\t)..nf@ x_%<<B=}Ԙi===]]]WVVda͵666CNuΝd2yPQgLfb 2Me4cWWN,+V|c566655=~Fp 6+ ,;A"|W7nHMMTK</4 7ߴ،v̙3L&s"hŊ ԩS`.C86׺?~~JII#IVXO:5kKKKa0XmmKbn2ݻwa,w؁.] 4}S__r,X Ju{Jpv!kTVV/_$$$dڵ#ud1;po?:uŋcȂ:>v&f￟6mR}+ЊbC}@ 0199y֬Y0Yfa0tdt Jwwww"m۶!ߪ̙3éϓ'OP(Tqqqiʿ;99ݼyh4zƌ&M}x t>y򤏏϶m~G2<;$B 4U~Rӣ111<8wZ7oĉWWW9GrO> ۱cGppG҆an<߻woD4Z-4@PIII :p -Zc0z3fܺukٲe/^8{lHHn6H4-i@%$$m:{pǏ ۳gϭ[Ο?tR 2qą (S PTݷo߾zjaaL&9}t\\L֭4'Wȸqp8ӧO \.’+U͛7o,//W*ƍ~ѣG%%% %44tܹ3fk iӦ . S&Lp4 fT۶m۲e˛7o>}z]v9;;;::<"<)jhh&qpp ۼysxxZ`twwks贴4Ril6L&a@xyyyyy_UWW?~7oޔdNVVVX7 ECCCEE˗/\i@@;"## <555^^^UJﷴB  `DEErX\^^^TTr E}|||||H$2ʂsRT Lghcclٲ`{{{<o@?^&z J{Ajh4FGFFFFFj#iY>|h4GGGGGGOOOgggWWWm \. ڴwWTdq`OOOkkQT*'''j Bpܹsa0T*mkkkkk{ummmccKx<ǣRL&ёNST BFpl6ÑH$Z*66vݺu^^^ڦsrr$ LLLH$8X,%66Vk& Pjjj;::JKK\.!AI!N777233P(8Tߑ}4JD"QOOX,loop8<vwwD~X,˭L+L&HaՑ.]bXNNNp87E  Bؼ ڡT* JD---fkcuCh4H$RTSSS͵ op8rH$|mkkÑdoӘ3 fmmmnnd2 Aee%xfbbB&R 6d2֧A.x<P(|P( GPx^LT*}{62@)Tjjj@ p8H$@ KKK `0H$J՞(555E dB˭5''g̙ U$l6{L4mii9WBtOO@u?CHL&C㏞ AAA2lh! a=x1Ph}hDFiMM/Ԇ^9 {@ Ы_^ݪr"aooooo) BaUU {* z[DEE=z:(d B|Jh}}}rz[:gĉmmm PS-3 :뛓^P(hLaaaX,ٳgPS-ژ:'Zi􁹹wFFExÍ?^,WTTTi666`DN0*fL~xit:z 66SH] DҡҴ Zid2F555A^B$P(@cm\0*B0̚ ̈́E{Ng,bbb8a:󠕆@ \\\m}T^^>L&Ht9 @"׃Qi0NI <<\AM\.JuOںJsqqikk6"ĻhO=|p{R)rk*fSG 3hBPd2+++988j4'z{{KJJТRJ>yzzvvvr80*Ғ@ @crpp}6Zb@ TY,`~A$'NC)hL*C===KKKG1{즦&YD ŢeE"\\\ݙf. u=`mmmD"QhgEE҇HT]] u=A&ݻP`T*>>> JBPeeeP'3gάxa0XKK6>n;::4Ђ)SHǏvP*RO-,,tTAkhwUPȇqRTr\]177w+mܸq[~c$9mڴ/_BR/\quu +'OcX;ݩ4SSSbHƍcX(D"}8;lf0* oohZ`iӦeee\rtt`0z=>3tUVVK'#%::Z$22!`0l>SBȰ´y =???1<H$uLC"^<== != 3{ 8%d2Y5zfeeD@0fW ŅQi&&&ϟ?EJ@@16;E"Qgg'|Db̛7/##C_\ТP(]H$ҟ'pCR_f޼yEEEc{\. B/dpFBBB=zAxxxcm{{;wAA>O:YVVApL>?@ 8࠿8:PZ|||WW׫WJ%@`ԩuuueeeJr@ U*U?L f'^QQQQQQAAAyyX,&&&h4JjӎDR)Z[[$L&S*bNkWbqMM̈́  윖P(t4f*W^-))-00C{n}RF#jkk_~]YYfBapppRRҔ)S\]]\.u֭[ˉD{HHH``?h4\.744maT:a„9sLd2_*MRݻw/<<@ ,Y]^^Z=4P(\OR?㚚!//o֬Yx<>>>i˗蘘UVNiRt޽$iԩϟ?ACP<~xʔ)d2y߾}RttL,3gNQQ Ł#JݻFRO:55yq{dɒɓ'Hi|>ɒ%x<~Ν߇D"ٹs'KNN5vuuu͘1H$߿_"J`X,v˖-#[V$C'Bio޼ 277OOOR-,,߼yc2+**rww{.*V9B&'Mdै?qMV]]m333+ǧ˗ޞ[1,,lD@Ė7Rسg6NOO':hLLL>}-HvuufffK.)S̜9sD~)eeeRRܴiB}1Hܺu\.7T$Z{]\/HR&9"!L&?yD_J;q;yQZZcnj_}7n0ݻv횁.))!# zQdz_r 2lCmCCύs7SDbwwH=u{1xbWWΝ; vBa͛7 3g΀*j֭F6nX[[{=C2ukkO?~|FwZkΜ9ǎysέZFFFN04XRRBQRR1O`0:::t755}'FwoݺΝ;`˗E"ڵkux(Sd\OH֭[_zejkkcX#4[[[G`P///-JC__߀0+W*111:mkkҥK+**]I&,BCCCOOO``2#t4TFgΜ;wnrrrQQÇu2yyyՁ6\.onnV\#Hf{+++ |eVVVDbCᇤRX,{GPQQQfA@.zzz BrG𨮮V(n+JUXX4A.LX,m-DV\\|̙W^ڵ믫7Ǐ/--E"8,,L':99uww65DSSFy/^sν|Rեo޼7nƶJQȮ.Fd2ur;D"#"".^g^~qjmmAގuYVggggaaa2,55H$~Z(6F|>Rm2a,--%nEL&Dl.$$޽{ irQWnnnR$ JD5E\H$Z"$믿pP(5kVppnr s`\aPF3L.K@ XZZyF'[p{BB6?Hee_?׮]۶mF{Vto[[[&d2Y"<{lҥCp8oݺuX,vŊ5=+"h8n׮] al6{޽ېiFBa``m@X,Ujj~hrctzxx[d2H=T*yfxxiJJʩSH$kkk:ɓ\.߷o,#U .0+WU+**0 Rp\''_UJNrssx_|iŋɓ'I&k#GX[[[ZZ޽{Ž$-*++3p TN8ϙ3pakkkeY{1ҴH$7obŊJXnJtҥƍ ѡqqqx+bٳڬk׮Dw "//o̙x<~O<)%11q`H TTTƍ ɓ &$$duuu `0nnn)))jl'<<<33sM\~4qȑV'J{EѾ:=اZd]YA/&H'O,**bCZp8EEE'NHLL$VVVK,u eddpB`:\xqܹڴIIIgϞ-++R:;;~I&[[?#'##H$scʕ 5VY,VVVիW?R\\\|}}CCC]\\ @x̾>Hp ^~]__pP(TdddRRRll͠\ZE"э7ۮ˗'#lT0 ??777m /CooH$b555Ņmmm\.&%%EFF;"ٲeKfffii)oٲ%//ٳg: 8{RWUUzDpq:";rcRT*ƍN⽽>tҥKux rD}}}UUUEEEeee, Dmasss- .jZVTJR*N0aѢE$idN錩o\\ܯ /oݺ=9J+F x(//7UD[.?? s玟6yȻL]vԩS555qqq_|rSSSNxM?~䓩Sj_G uuuMII [buH)Ƥݱc=zb-[hz#HK,IOO떖ŋ6`0$ yc~#G7n<Ϩj֬YX,vD r9W BHiZ*;;{ҥ{}(;99ǟ9s1 ƍQQQ 0LrBJ('O.\dt߲|򪪪|Cp?>g0 :*A`bbWWWܹdɶO6$ < =3}޼y۷oOII8wx K>|0ũs΅BJT*ӧOׯ_?{켼<#… TVV/Z֐ٳg^r?c.k54iRZZT*5@q/^RSL]R&SN-((ػwk~7]9$WYY_>o<"ht3]m@J (?~ٳwؑX{yKK{ EW>t6ݻwQ(ٳ׭[WWW3fۀTGZeQQQw9tЃ"""ڕgdd诈ά HҐz/[ qaEpppPPЉ'!++K$͛7ow Hi5ߟlٲEqlٲZ}\P\pa„ cv R JOOOII;󀦮쏓HBE@Q.Z ;RRAE:8:nJU:TAQAA2 JU-` 1HHBVȌ:^{=sij5kΝ;ad1L[[[ޡ]lك?+Wkkk /0LhhhIIɦMRRR|||N>=1ʁZZZ999TYYYkkX>w⪫6m4s{LrH9HҔӧ+cH1Pؚ?ƍr<000""bd766VVVX!˗wo1 x@iJYg̘Nill|嬬!?HKK?~|@@ 6 6&k֬wުU~駙3g^xqV&Lٳg_1F.]JP@PWUUeff_]] M__ʔ)]]]Cf#""Ti 6&o&MvZnn.nii)r=OOO YOyHA_beU#Gˋ]f TVbʕmab6rE"!X,VKKH$jjj`M}oUX+99رc666qqq/jFARݛh4N"H,KRH(¢ahhHPMfdddkk ϪU4rqݷnruu=x𠃃~D"eee?nooGX,B__@ P(|>|>b/hT*-.. ߲e/Ї\.|tr9s@P h4q8%LNNNd]իk' a2I 466&$$uUJ/**RWFڵK[[<99yGOx@>\`… kq8\\\χU<o޽ZZZAAAl67w܈=zΝ;fzLp8UYY9cƌQ6,l6;**/^Y .,**AC3>wﮨ8s挣#lȨپ}; 1 CCC4\:qĩS: sk===>|…G<* X~vΝ111V XbE[[ݻg͚iǡCvڥ,ѽH$r۶mO . Pi@iFSSS^^^ttrZڴiSQQQMM LLdܸq@ipq,|r|ٲeD"199VKrTk׮mذH$Eh4$qUx<>66͛]]]pLE0 >Fc2_}<͛7iii4-339st8t&P9@i*Egg"1Lo߾wiH#ɍpLETq`_hll411*ꪹNs\<޷ӧO͕ϟ?x<аU^ T&sssH|~TTի?DJ$-[@bwH$H$PecD"!Y.LHHb@ |7aaa%%%:::PFarnM$ R(0ښJBd2ϟ?d2I$/(..hjjj..._.// tvvN4 >D(MJi WCCBr\6f|={ԨT)S qY :s``@$AU1x*T*K,9ydII`ll-[/322JKK/]ٙ5~ϷN{H$@i122"SN̦ƏOC~~{*3! ޣJabb2SNx<3^$8q" p8}}}P {{{l~z( =>_|rlP Bٰa?`0F7K\.]nݖ-[VXobb~JڀX,6!!!--pGe2b _]\\nݺ|Aw!G$q\(XQQQ#YQipp… a͚5/^y_1 &@ PbppٳgǏWׯSSS0̂ >}*HQ4B;w( Yܿɒ%d2,\ҥKt:* Hׯ_.\Ο?DCGGb aTjAAANNNuu5wqqqrrrss333366x<^OOOGGGEE?~ ׯ_7B466N<ӧP J⦦‡666RT<odddkkkmmM"( p F, Bp' 166www0aBppp{{{AAIUUGmmI/mx<UUUٳǏwuu 0 555uuu$D"e2L&Sx'''ggg--g([ZZ_ە?RTT_?} _P(H$fff~f9NOOD"QWW700 H*555888..n09{h4, U4B"H$NC{پ}shhRB!QWWJ(111O>ݼy+ fXD"BwĈF4dddn:Ŭ0LhG4bB!̭rO(%vvvǎ}}-J y#ʼynzWH\p3xDܹaÆ PE`@L&p8 c`Aǎ322L&cXzzz@iɓ #&&F,{rJ,((HJJmBbA"i@,]9!!2((>t:ł1 " ۷oat:]SSt=@iQF=z@Q&VyFCC㓎Qjjj[[[ll,L*\yD4J⒔tդ$8$|")7x8ظgϞɓ'1ЮЀ1 vqѵmk4b)))QQQ[=bA:Sl2# ( xyy߿?###--mTNr:nhhm`E;V\ɓI&y{{&d2*_lll^z5*JJ>!==]([N tttc++8p`$'lo޼FFF@imFt:]]]x1ܺu9sbbbF4mܸqH$( 0HMM%}}}#n]G4@&O<ܼcD2܏c0o̬a}L&Z4҃@ ֬Y߃8#`F---###t0=b 7( 0vgϞh۶mD>/ < 0ֱ;xիW҆-,,,22r۶mՐO!J(->>u6ihha)P4C RRRX,֭[-3n84?~멩ST F3ݻw?zB!011AP@iAPqqq˗/$@ 4K uIDATrC"9"bccb }}}a*#PnLrJ///oo!jo޼44*T^^k.///4=CRq8g@PʌXl^^noo'Жc@ufXAMMP"|p^ PT/t:R<OR-,,h4D277`0Phݻwgee*>555555555o޼D@.kiiH$ Xry<ׯr94008qgf5JRڵk׮]liiAPaԩNNNΖzzzD"B!?HRʺ:Œ BBBBCC444cLuΝG̜9s޼y'NZΝ; =$$dܹ( ttt=zŋ>>>AAAFFF@eee999CPK.ݴi<( p8cǎ?~\*n޼944x8B庻srrRiDDĖ-[ PN|ӧtuun`0d2H`0{2ljjb4RV\8PիWą h443 +HFDrUsssGGǏ#P&ry^^^``@qqqPPppTP(ԢEn޼)͛Djjjм˗p&@iJ__Ŋ x"֮]SVV`tvv7o׷tλw=W i%mܸdfdd\fjjjgΜQll4pʕ۷o_xZ) 677~ے{>kjj="J4ܹ{n}}uHfjjj(***i%BRRRVZQNL&Hա ;Lfii)])8^WJ6$ikk7Ξ=?HdPPĉ?f~ue췲"@iX҂D"'L7H$X,>[nuvvBe?B! cּxthfΜy=w?|!FkllttttvvH$W\!\.2˗/{zz^tB455E}OGGаiX(I1{]#3fXh޽{s.]NM4)((HQܹsbxfXXX1 k :::v/~\SSSlG__d|2//jjjX,F:TQQAP1C0`1 klmm;::V@xzzVVV+ENH"hffn;wTWWo޼➞OQT;;;4ܕ&TnijjH$o?innH$eee&Llmm\.իWL&S$t,ԤIp8)SkijjrvvZ gϞTSSC"4M,Ϟ=[pK蒒:=`FLLL^^^]]Zzvh 4 MIIdCB&O޷@i%cpp… []ZZZf̘A$xX(h4:,,b͜9355ጢ=|>?55˫ݻ_ك1 ]H$N2~@ ~+@Xj՟t#@=Ea0YfL~X\TT4w\,P[JH$*((pww`0ӦMۻwoKK0=X,!//# bD*X,~ nݺﯧ> ( j0̒ &XZZN>RGGJ<O(즦G|D"O ( dΆϟ?y򤹹USSL&+D"SHN 'X,dzvssstt94XQ@___MM Jt:h4TnhhH" tuux<$~!E}oIENDB`dot2tex-2.9.0/docs/img/texmodeb.pdf0000666000000000000000000006776212316606077015305 0ustar 00000000000000%PDF-1.6 % 1 0 obj<> endobj 2 0 obj<> endobj 3 0 obj<> endobj 5 0 obj<> endobj 6 0 obj<>/ProcSet[/PDF/Text]>> endobj 7 0 obj<> endobj 8 0 obj<> endobj 9 0 obj[518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 529 429 433 0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 0 485 0 572 0 465] endobj 10 0 obj<> endobj 11 0 obj<>stream xRy<ߖI4֘EGY3c14 ʖ%Q,MuKQJZH Eߟy~0eGg,yb2:H]`G 09 $L H f?`LPzBgևsf@(Je?HDؾ A$g& Cu,888A +$BHD% ʀx1L@2)8V 46lj|$& @2noY*F'o$}J 7If,$,T7OsxD ű 4*ˠ@@O:5ȊIT6 hAFd~von4 T%470oE]'_?]f 2IT@ ?">B\$@e@r &',ȏ"8@~7*a# 'B sC(~a?23cr:z(@G;H f@{E3 1 $BDX3呖%[4yWb5 ug^Jjz*~AIdKFlx7ضC(Yx8%Y~;=?Ͱd@܈Xȝ-5vŲIBO"O&NeBܴp59\ڹ3gIj}Xhm+kO{ -ŗɲsDL\ n7l G-x3pz`Y0 `ULZsG%Gsa4^>ݧ 1XeF~uIswr+ؗ ,LJр0.>,b qt _N5[uNL . Zt[WTァQci铷NmӍeg͙mMeg%t5ƍv7Iji}b{yֱ?~Ӌ`*1nˊ6^\)}OshyMRRsL/ [=&e.I%JDxZB+LO[F?U=T4Y+2jzY!PݶūݎgJVUq'FT;Z8uؼtXʾ^ `YyRt@N3f-L$NťcGxģfJJĹ룶KEVHҔoeN3X,A5$ %Ⴄ]HeXcw@Y|9eܯme4>Yن5~[qMŧcd+u1][rnVj˖,9k'jitv!] ^ģmy% ?a:K5./ȽGb"2j.:6V^WXҵjC6x t F-,uJwW.}"\EJ̈K thR`' {%;!6HĴ%<~Czsڶ`)1;?ߧ LzU!'&<.nvET/,H΂b&)о_z^:/b enu摈|4PY=aڢn'4b3?_C2 endstream endobj 12 0 obj<> endobj 13 0 obj<> endobj 14 0 obj[648 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 648 579] endobj 15 0 obj<> endobj 16 0 obj<>stream xRkw3D2sU~5L:C/@.@`SA.Sa7Hv<2N `23A}aNtH%y`Ffk8Ȣ~Dߚ#ˏ#,ȿk5Z.&H$JF?gȢtVƘd.,"eRh Dt@fabdKY0 ]U@<*0Ad&o +QBVvvlA$0Fcd&P(~R=^Yk)J kWED|HU~@M61s_s^١{en#(I ?KgNFl̤Lwz3\vO^חg7h?WdyZL9r!ճ.K܇:mMJXK BĢ<ZvFrLYqdck3Z~]H?!|WD)E$߼ 8`^~b6*QnN8.dR)0u5?Pp|9MI~Tei=V*1}M%B,!ԙ9Ɍ0C>ټEq;Ɔ#blZLUU%,1$Խ0 ~4!!L:qwz{p8!n}CGNohDu-9{}^;-7NMwՖƛrLS#|89CO*o|ݟɊ}G%zLa +wy-iD(Mk|3fqwQ1$9ӨL][=?~`Sی;6$A#nR8mUkyE̎y)_Vx{a7䐞5R "C43ʳ d6&?NqęiQVy:d.ԟ c.{c/%\mynLvA%oVXݦڀ({MbYoaռ_u|Y$@W\"M>}Y۸3%G*|}C8Zr b|7q>'7u"Qy@LfۤWH/NbROL6XybE gû6)uf_غ8mU_Y΂q ZMLdY]״EZC(Ś3 rn K7q}a7ZQw휸UVW5pա mt'mdFCW2|/TL\ n) QvIT{o=qt^ZTI2/~ޕS1 XXyt Ѽ#u<`pԸ >׼,M9zn[\iKA/?!@ad.$sCe endstream endobj 17 0 obj<> endobj 18 0 obj<> endobj 19 0 obj[778 0 0 0 0 0 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 556 0 556 444 306 500 556 278 0 0 278 0 556 500 0 0 392 0 389] endobj 20 0 obj<> endobj 21 0 obj<>stream xgXS[%t@z@B)RB$БB(*"MAH"UtDu|4ϜsjGDBZ àr2rWcs9Y, "x$ïzpW鹢xEI `8$ Rj{qH 4=^0( h!@6 44q~p7 ]$)evD~DaШ@2Vogq=_F77 1npݐ^($L@>z)CQ>_v8"H%mgi!LLH42?L%WHt0+)84@:=$Rh7x@ Ac '@ ,/AJ@7ˑ;4VoR\Mrtߐ ߐ$*A I FRAߐ7$ʤM>80,-O'%sj@5e%_ibw$p`tS>,T 9"끗 Q#Q% %&km .$}ۈN|@j&cVXwVoOul]7ӱ\$kkˊVV#bj/+fx+MRM| G 9ie?*K;uLf\T00_\}\Rs]DX _D型 u&mH5Qv,sVt(>R,ZyzO.t@0-tFK>Mq;jA[v^ 9l+>PV3,W}e=? \F8@WpRLմ]s6~cKW"l*ؤyiEvAh\Dz@4Qɝ߀S3?  XylM\'AAꧏo}8muzF[nܤaAV?~*AmN9Iy\ kt>\ J/5"íw}Y l,*#h8 ̦} d>S}PM&/'ǻalOӦƐW]$}HKfo.\[=|s'6:B8¹L6w#,פ#)\'<6ACXtTixctVx^ſ]c&sdk"nn7QBw*o'<Ɩ"rz<Z5):M*KVBnAN)r*ˌ`솭џ)k1fAi%<Tbu;]ۻr^ȫw|2/z`sjE7Va6!׶RG;3ןr&@LTb5 V['9I2jZX9*hlk =hJ/6 RGW]rb 4;0yRd~wMbaMٝ6XMqWQӨ8SD霉Kлl#3vgCsU)~r%e6n+x '>{.GVdCnWn`>YmO5/+Gi%X b n8#.Vd^Gmabzj2& B&_댂A*Tt6+7A[g(&ޥF,4}W@kN9]#=Sےjn[[*[$\ @v n_ڈbtQ1G\ay#Ȥz"#8v׎ث;~Pr@_vM%+[7rue^Nq| XciOGd4hƗ2hy&W`U~򱱃V6l|#Z+O O]l?\Q2 &&џEOUpdݐx6 ~ePxv' U-ٯ݊1RlQO3O|&U>0%Kb2J3_^-V R樂._C8˘=fP<>9'I $vF\ϛZx@uO*xjrWk&c3tfOeǠrxTCq:wes E e5.ijѲN,?zZK߀\o81ͽZmXޛ~PKHBI=&;[c~n*usu 62LNC:D ēB`lKXQt3b]퍭wkW951[JGM+;B̓}uC*01/xXx틢Qɉ3.g3Rc:00' xK?e seI?ҋ=Mҹw @n7ZĮ(ޞ(0BS+6c s~|ɍ*G8&ާm>ͺN-+׵%@I!$U*XnEO|+rY˞LdDnq_<HC![ pB\Mr.d|pI1֮yo\+%eZ^&ep':QdKWZ΋U5Ux.~'.*Όgͭ.#O!崺JmM6+29J#"qҢ<׫jq,c!WCKZevSjtNcclu}\l}Fl<>i5Vd4ybO3$L&=Q~D~fYNI2v~ޣѳ@lC\ %}چ4z+MFb=K J@d`^R֬{MDX{z@c*TYx:ׅlϚz\'%vr{*-gxLԠ't(Vc^6DcUmBEݻ^EKD/P,LKZ-LRmQ! n_x4v]3ctq[~6=vePg]kb8 DZiF.۵c~/JvSj:ZBM9cxYl@)[wl?;zkkoŹv,C.FD??f,:^(:8' N>+q +`7=7O'X )3\#ذL]G:Qij3-GT]b2h}Kg.O)lt iS?"Gu TV\?a3B1@Q=̩.XJgCdVԒpK /('6D;SjuH)[s󉖛WVx^%3Ʀ8Aq+xe!AՕ5k%+wt|7aĵ4pNӪ"ˁ.nn"z#0;=i (M~uvlO-Qu&Q)KЄᘘ-1VxLe*<*b-=+x>2آk~qc쓴~ޘ~voʑ4o(GENeh60<͒" ?^ AS~|u8h ZqB1 z%~u3^BPZ |#B[G8:~wgtK}LrkM=4rVE&Ҙ>x!j ƒΝ0JX9}lEhOR1&bmn|)󏜪ޖ nF~eT6 cVĻLg!fkE vZm pL=xfg~1\ٞMwn";%WoX[xzƒC/KM׽S3?di+(G9^0/V]DŽ Ҟdzy߽PwgѸl" U@)+0eu37DQ *9}P>̓nj#%e@ s[JʴHVg0ݱZ[tEHÍNQWȱ,^l]p8 LT~KJ]UL4giW>mȊO:USx+^*B2mLWcz'MZ|BZyIRdhu&>MGwú]#pd^KʣD:ˣYgZL 9aduчў y/?QCqx yH endstream endobj 22 0 obj<> endobj 23 0 obj<> endobj 24 0 obj[877 0 0 0 0 0 569 569 569 569 569 569 569 569 569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 508 0 0 0 0 0 323 0 0 0 0 631 569 0 0 0 453] endobj 25 0 obj<> endobj 26 0 obj<>stream xSi'xE(@ig@P@]h? C hhw Ġ&7V K>N3{65Ng#;Wk_ź°"M79|p3'JNPv[SɣuUzӑkv%ͤ~͈ҵ9׷F/J*ZW `qtv(*#Anzǹ_XypcCߓ[[mA"Aա,%uR%+=gA=9I(w&uSf 2Eu{B6\6"R%<}ܸmqM^esR>EmV8&zr,sݯ: O |F9F}W;ert(==-?d#4fHEF0:;647ZЦHE 32[}ib;Hm2^au0꺵eyK+PM "|>[شL>-RTQS#b^Y1tʡ؞Sr6"VJ\H}54K:F.( H+9A{㕳 ˨%\PԥV/TwCi*lU xza y"-W oJm) f}~h%"c7釤Bz5y)Kj)m(5q8;^.Ɯ·K9%8F/+%хS1gr7ή\1[ ,+"jVe2p~cB[#[3FST; 뻳]0r؞uUꥺ]ǑMgAw^q禮tnċ{mռk^O@wmָS&NL%k&|4̲g#w\Qў!~F\؁DTl(IGL].I9 n×# @4aIuol< +)oW1:q}lQFS{d?j3.2<|/5;Ⓑ_c;})35ʻFSv^zi{}/om %2o50Ź()}fc*Gs:ĝ1lQ/iνȴSЍ HӺaJJR>Vi܆q_Wzk|oyyMdۭ3Ax8NPԽ0Y^c//|‡CBr!%I٭ƻHYL[bH*ke֞g㿡ωҿx %Imú,<ZsaW##2Ε; 39teJt= s--{y4՗>Z4v;n{=zb=ar 3ej OJYqK4'4/~pڦ\Z@&mM|GyKc, 6 'e]]jzpB'  ~xŦxrvﺪW5Ws_TI~6;Mg$eJ>~9tpV_bJǠg558q/u !2s<ى݃@ŎCw~mwl:ή=i~c'oF^PAS>Co)WqJ6y$O'܍4F>N/y :|Þz-/p$^ۈЏ%~ U\CX3% wI˜AZAOyv$jKG"OFDX뼠+"*&K|`Z11߻/?nf[)eTit!>q{Mk8_t :2PLdz}f95h,Ųe/ݦRT# F - qj%_O.*@tiuXh7Yz%KB)Ǒq[mш>ܦ>/[T_#_MI-fOT # x D&zHLm` endstream endobj 27 0 obj<> endobj 28 0 obj<> endobj 29 0 obj[681 681] endobj 30 0 obj<> endobj 31 0 obj<>stream xRiXSg*,6A 0Mv!H٬K{@VCZTT`R*'*D"TY"E *R\py5{|y{sPp C\-Hі@pŘ! ˆ!w:D2cQH$ c͊{,7HN5D :ӹq`s`[d&H ȴ1 aXp3y[) lڴPL&n ak' 'lȣ9KO`s <.0DP5%lzs6 8 @=|2X:'Aܦ5gnl{XO fMWf@$ -[y@ ɆX#]!Rv$N `.:d08NsS CMD87+Ow 6v,ўIdw cFA> ceyT+YɻZ Z:nF95=IVSa ʔdFNJ9/L*xM-+Mk_<$zΑ4[w.W/6a,w;2G0RNHމfs{cŤ|Tsg'DY/r7g׎,ii'CbdOE?W]Z{e+dJcʴoQff))l0~B뻃pލ,E%M}}N]Af%g}۴9)d}/mktekEXiDk)7  sxGdnxZhfB:=ubm2j[wufS8]OgnY18 C]c'Y5,{;&dG~۽obI GP/LC7gX+g[7 Z;w8+.Pхٚ#~*G兽O"kɝWT=|@)vk\psdg߸k;%)T~Q!K˲=Xݭu煟2͚>=li{Sir1*쵽ȗ*e{Us}r#w<4%07%9fK܌kU/MR\,HW_*"55\r>0)d5N:=蚼`{䒓6f15UNEsYg%2ǀ_BN#A!j endstream endobj 32 0 obj<> endobj 33 0 obj<> endobj 34 0 obj[500] endobj 35 0 obj<> endobj 36 0 obj<>stream xSU uLOJu+53Rp 44P03RUu.JM,sI,IR04Tp,MW04U002225RUp/,L(Qp)2WpM-LNSM,HZRQZZTeh\ǥrg^Z9D8&UZT tБ @'T*qJB7ܭ4'/1d<80s3s**s JKR|SRЕB盚Y.Y옗khg`l ,vˬHM ,IPHK)N楠;|`軻xjC,WRY`P "P*ʬP6300*B+2׼̼t#S3ĢJ.` L 2RR+R+./jQMBZ~(Z OJL.I,qaz)ZRA hi-ҢԼpz Ԋd[ok[Y*V}Ο'־~ bG̔`y%K^-|xE dE[${z,^k nW6wMpa،9=թsr y)/~V$-%)+2W}~Yӎmߝ ^֥~1͎;K'\ie/j>s}\'.\GqS_e/BuLE jjXcO74SS;ğ2=Kekѝo~s`qa];Dn?>7jG%*M97?wR\j_9lj伲^c <yDz/(3ҷmf{{5қ`+>stream xXK5q#ԍo_)-BHϞ陈=Mvٮ*zIi<,_ԢlN^}U ?_R m1tܴ&O6zy& ^E2!1 <20bzV arye44!*k67rpғx)Q[)evόp8xQܚv"aI[&aw821%VƩݗKȰO.ɂ'$9І'q 촲8bΉC1d ަ[Lw\%"ֺIH'eiPԖiC(mep9x %Fpq5$BOґFvaxs!8H>r?)Q|Dў:Dd95LhqE 2#E Y,Nj;lV O(1c@$>4(j5UCbJb=q#X/)ܺXroɄRhN,,#(r]\QG]hF5~s'^ y < 9f4exm,N7/rFȆz^Ծ?o2V"#BV}OU@GxF,! =}x jOo&)hQM˭`y^\ ׅmBmR/ 6:Oiy-+IX'úB[ 3l~иcm9@3 ")]L:=a]tُqwLԎM HZr?FXG5*U&>~¶.FuUϥ NY;LZ:UÚ:v> 2M߫"ːX "C؋luF ֐xq8UI;c.Y|u8킡㊕\K *7qWP rۻ8_:$Ֆ8HULot7ESCry}Cnk=8te=H՜,$ge!gIZj6I7阴Ü:,>ȫegG 4OzjYNZ% 6ю @[ד4GCހb(A5RznaF;tc`ی[,W:f'2Va416g&&{0mF+Iį[EK:d_iQvFþ4~W^z[0GCgeG4?a(ɺMbg ?o1ÓP6۔0܋nB hd:Mav̢Y&i/L2vsYƽKnB]Aћ匫p\ެtnך% 4Ƽb{HPW+ UV:ئqa wղ~Ӎo^,iB yTJ:g%#Jć߬ev^vֱ!~n endstream endobj 38 0 obj<>stream 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 TeX application/pdf uuid:30ffbedf-845c-4a2f-8dac-078f45b42b6e uuid:a7539ac0-838a-474a-ba27-e0a7d0a5cb25 MiKTeX pdfTeX-1.30.6 endstream endobj xref 0 39 0000000004 65535 f 0000000016 00000 n 0000000076 00000 n 0000000156 00000 n 0000000000 00000 f 0000000290 00000 n 0000000386 00000 n 0000000495 00000 n 0000000637 00000 n 0000000806 00000 n 0000001058 00000 n 0000001261 00000 n 0000004468 00000 n 0000004612 00000 n 0000004714 00000 n 0000004959 00000 n 0000005154 00000 n 0000007684 00000 n 0000007828 00000 n 0000008052 00000 n 0000008251 00000 n 0000008474 00000 n 0000013626 00000 n 0000013769 00000 n 0000013977 00000 n 0000014170 00000 n 0000014406 00000 n 0000018501 00000 n 0000018643 00000 n 0000018724 00000 n 0000018749 00000 n 0000018936 00000 n 0000020903 00000 n 0000021049 00000 n 0000021132 00000 n 0000021153 00000 n 0000021347 00000 n 0000022593 00000 n 0000024376 00000 n trailer <]>> startxref 27723 %%EOF dot2tex-2.9.0/docs/img/texmodeb.png0000666000000000000000000003624712316606077015312 0ustar 00000000000000PNG  IHDR IDATx}\SWO>$e*%2m@J (fJ:0Aq:> 2;:ꎺӰkd1Wk!SZ a%%"h2b!?N' `79ZL=/'Dt:FGGGFFΝ;b4| "()))++sDh"@v`l&l6[lV T*f20 q p\p%7; z A mzzH{?[zb0L.%@ḁK,jBgvRT(ݻ<3fbYOѠPD +WdS.TYY 6֭[rH8WX,X؈_VVP(d2t8@`DHtvv֬YC??V4v}g߿Gٻ `6!!H***(}/~aړ˜;ڡRVD~Փ940m4% ewLqN/'ȵ.럷sy]yX˳mWoܼ)saq~ rlܤoEisș^{qXGN}{˪ֵ0I˾a9ɦgrCݎ9𿗴'>.ˢe/,W2~%g/kjnfflE3^jr|o6ny)׮GR. A$Etcr[ΫǞ\2~o|bpqjߜ0g5Pur>,^Bw }&qa!"ʴsemotξO ܜx[+rslppL߻fUL?2/_7}?}mͨ_J.3H'Daa!aV5}gvǏ֜oҷF %g\:ղG?00J(Lje׏=0V,hejq7urV_d\Z8ji}t(xTRZZ_>N{~N廬\rӦMR 84N3l/QQ__C1E<&H6o޷EEEDv  =3H0V\ #0UjgjjjKZ0"ns=g0X> 0ZP(Jv;z?[DL w}UWW3? `הfFr V]bE}}=c#+|P(4,6_&#BVjllX43g|G=PQQQ]]~t:[S١x<Xd2KөXUhR͋t\q\Sj@AQrj5s*U"3Z33oX:'X,q] fa%މaR4LSfȞfxfxeJңpnoܸQ(n۶-%EkZVkKKKOO4233ӳy<Ǜ~W@aGJv-19! ??YYYzAHlq;w$%0n76Veec JEˠpLJ% "z 0BN0bL&@TkVxAX}Z˖-W =fŊ&i$߿_&xAKR?P*2632ؽIڢA7n~Yp?2bS`2JFWLq<\B&b᜜LԔBwz&כgϞ~^7u}>aV Z=ApK+tb|>8dL& *"ڥIhSY268@"EUd!ߚ]vؘ`4U` ˕3U'HIIQ*f9~$:R4--СC|+ fUVmٲ%  BTg iii9ɓ3kaa! F0aXd+6zFN0\^imYv_csoߎ*bjjjO8QTTDMzz*+?%Kfr}>ŋKJJmk) s$~F<0 qbܹrJ)z{{K."},Xt)aH{T* 'F6j:ʛ~vdÇU 41`$A{ 3{tjh'8QbZV(ZEa,q@izL`׮]dݺ|tttϼK:@o@LȵIZL烧DGlBѬ[.y`Y+N/v:Ol£ s@ML4:PI[z"qi @,|1l6+Jם\m q!rEJj|lc?qϗeffvwwcpChؠ"8x[CK/d0 ,@:L A8!fVw} * x<0);,rfe'yJB\ ?enCWWի#=á|n#'8>{X,6LL(+`P R^+ `Fv;񬬬d,Fcyy9u̜ld0=n{ƍ1pѨT*p'^p!/]Vq0Q1t.W XC\.W ~;B;x) \ 5kְ BXH\83K|gJ缄fٷo___F\m=rGePX(D f.t _z9Kiy٘/ kpË\naqܹ0!M H$jnnf]t$o=kkkj5Kԃ0 e طP(?-DW$ N#m۶V3$iѢEΞb%JuOՇZ;~*Շ$z0}&t: 4V.\пaٳgY%lz0ڇft;wh4NAՕӹ;cXXnfcZ8pzM@NCU^wppf ͬ_ @aD")..ˣap86-CAӱHLd2=VGAd2jX0ZMy903dz*1~0 ȧ|{ǵZ-}rL&x.T@Р`1DR"z j0ǣᜠT*ɽid崕E0ҝ܎i f "'CIKܣ6-]@F0z> }&_" JcD]XXb24ڵko `6>M pۋn BBQRYYY\\АH8c"$fJE){4]]]|>l63{acc^_zF"III!BZ'; Ceŋ[, ry.A@AA.#'Y/)ksML TUUEy`,Va0YgzӅL F<%Tm!@XU 1YQA,g&R|ߗ_~Y(J?ZvŊ/PF\VRRbZ 'Їf{=@ ۊ`rc - tOCbKXh<@h4>3Q^Yf EsϏ??s_Q& ౄPVɄ`耡z}Yw%( s9hi=#N&W>£erJ:T8Vj-$2ikk#evFDBٓ_&Y98 D>߽J[F S޴$"HdzW^+D?l 8NWX op(T* 1a&{I$sRjVTTW;Dkxn=@_]]̪%.\HOO?Etfff#Y?Y9T*Uvv6-MkiABOyh".b?8jHL1yTpB 홖fZihh +nٖ|WJz훽XǮ 9CK=K&ٯNݤ0><Ć;Y f ȭpzh1@ރիRQ6n فϟg s&tT*8 H$jkk(1m`O/e<^_Ѹ^❛K~GPV8pzی>7AT8yφ>_9ẏoVaez,2^QTD$RXXa5휻r<|ڋ=XXqL`3|>ZafY 0+hS\2P\0gJVIr ̲V__صv>/ fs4ci5r A|&D' L+x0YɼJ%3ӪuϤ NѬ fDRTTTWW Tp8 bd#sptj:VҔJGFyM.rE@ hiiX,GMMMsvk42&1'cBu:ձPZZNGݮmoo߰a?z+B](r̊ f c4 EyW_0irY#+ "%rzőFcLb?$ApKzCDXRO`v # p HsA)E@}Qb;p#zS*`4J%rcK%bj*c YGh/8rtttx"L 'Nv Fcvh,//G ϴbyD㒲ϴPj 70m%3@oo/a= %/P JRR Ą2Th6 <bB*NfRfNL(vFQ_KJ(C3Q---r&LC.G,"R0YAdd]*))!AlF,E3H~˖-eee=p+ $^/aN$ l6 r ?q1 ` τ "ٌ?$ ɏ? N0b@OLь(GCCD5|>0 K\,4 Jdk4 ۭVkܿ5C6|n߾=VNMM}G].תU͛p#nP/"Xd &}GY{k֬IcUUU;8Ly''ljjJ . -[VZŻTT$^099yhh (. L~HI.\Htz" ha q% BDNNN/j̣Bccc###ܧ=  Y}T*Dj(/zm6[___ps \&aD")..ˋ(nڇ8n~?# vvv H@t:NѣGF#a2L,t,ڇJ&&>brhkZ e2]0 j'}G8n2b{~Z^kj<^{CJF}(AzzGU 6$BP'VhlSvZ6PCz=A S*pneHoL& pEPc2pO \.8QÑb•XY>TXqEiqop'ZP$,]{U}0\N[_LT1\u'[#r~ڇ@ }90e uߘ'On)x<4!f}@l7/ ׳4欴TծXvSqoEQ` 9L&rX\.WCC`|> @OڇRv/lyAC 腰׷i#\}nke&UY:q`NdY,ϗoco0}(@l7 8Nx7~?JեR)[ \iEkvpۧZsVkEEwyE3"/&RH/8mRzҨe`7oqO3mJEL>ż՛Xp3_IA}ܹs"(>M @v;nw=/bbIDAT5?9$Ay OZO8m#g)xveɹne ~ݽ_1exQ{My4=1On4S\Oi~sw#w z`nEu׏aZ9ƄHqނ2,sƏM8j՞>2c ^5W98q%O7m?ZONbY?[mNۇ&H:\;?~≌yi_j{R*Csu#-͇^}/ Ϝc9pךI}`׆D"YK!8w{N\^r3'.pUwp8w/LUfyǯ_\[c^\2z_7 }ImaҴIII V%] =摬Z/W/>4*0 b\<6YLwQ&fѠ2l׮]qִ8Nbo!v^h=!b>d&lА3ps)))j6Vvޝ^UUE5}:::vRa8Pl%M>T*Y=ASTm> F!aD'whbmEb/@ jALD3Br%`f*9ʼ)n3 ,*kjj 5 >TUrpBP*v4tDkX_\.I&3nwYYm?ghh䑑 fg_{{; fN$ڇjrlAgZ`f `&JhY9&3nDaalH$EEEuuu^ `HMMt82,q:ѷb`Z\ Pձ\1'ڇ:#b-- sw\jzr%F#˙f{0}H|# hD.R} R+x.j"y o7M&S6lZ ,}f-gZRO(Jڒ˜ H#ZV l]𝇇'&&;::WDlnT* m٘O4ՉD"TJO[q8A[Ϟ=;::=>>b=A~~ŋ"xf={H<CŶTSRRRVVMD#m6mMzϔWh4Z6k䶏MMMu\On:&8-Y&IW8Ks@QZZr:::֮]läSQQaZ/)cuWddd洴4ToTTTB}B!w+qܽ{d2Xl0:K,B;y$yCPX,իW39`3RRRp~h4RVb qN---555v JJJhvJJ1Iẕb݀".AQQK]<݀!+! `y ðgӿ(RK0 Re5YYY4cLN$Pz6G^ln|'HPRRRiXdeeFzN]:u i@[XPL&p<^4@b"7t8,r IKn\PPt,r D" nsrr \fo46`h"l!%n ӧ.nu?$gDh+%4"), BIhLft:݆ h+LnҥK2Ο?L 6QXXW\Iϙn.KŢT** M4ANWVV2Ʌʭt.$¯`+l D2ef@@uDh8><<n\nccB` lc{zz3yf@+555䮐BELA### T}wABxlʕ$+xO?lْ?H0XY1555 |IggH$ 0i@ܺDFٰa).AFFƞ={"e2Y?HRZZj0H0.,,Hzb1[)99ydd >1 5k`Z[[qgfsnn.,Q͛):h9v͸\M`dCMB(++;pEPu 'O> I777O\._` ???)){W@9sΜ T*D"rn?sLwww8߰sn-*$55 HgŜ7xAtf{VX,.+s'ErxMRiXgjJbP)z(SԥT* D@|>fSp=fgX,8񞞱*ZP8ꐤ^q AX, V#6rjud@sf ^hh4eeeGPDFwP(<OIIX,cEYn Cjjؼys̳l޼p|D@=fzЕ @^vmGG`BviJ#& Ͻ_*9re,^NZZT*' ĸ ¦[!zMMMB04(4׮]Į|_SS366v!*t|>za۶m###.422m6*0I( ``0T*b,.k0|H$"qM @7^Ad,222z}CCm℃WUUE<`Djjb)--U,p8YF3ttt8PZZxGG2!R43 >/ܘxG]]+7mMn7' B&P|}0ѴE+TЛf ײLdVΜ9suYT/NK_DNę3gX08`|K G{N.zߞ+HL$=;9 '\ߏL DwyҧEʴn<;"j0!Rks>>q,>479 i7<ͯ>y>Enn.&m^ނͼc ϯݟP!Ā$nw~wȖ祂o}&<ѰO&7/]d=x=WGGLJ`lx^[P?+¥|8ìδ@+ͤaN AܚŸ477|`r<''ga{V~ݮR`+4 ˜Jƍ)*O~ƍJ?@lPUa5\.999c?qPf fbz٥FS]]mX(5~&&&Ri )=,`K$DW_}U[[dܹs˖-q9LрhiiarqýpSG`?3B,Z0 "+r#{dk׮bSuuu]&rܻw/+r#Tzȑ X,Hb(.D"+**9g=( ʠ6î/Bˁ ^Acc㩨غu+ǫH ~mݺ466Ɵŏl6[,X,xuuuji0x<܎X,f9GɠԈlGF\.rss-ZfN;3666:::44gl+**># r9C`0tww766" fpJ A$''|޾b ŐHHzϟ.\8USWW7>>wD +!b۽YXk֭>XkΝHDn߾}˖-q A! M6 $D"iӦ8TЀHPU*nG@$"0{~[ 1=###mmmHD+Woo 1#rh4HC*>Wax4' A~fBD-4 b˕JR9uTxB ؼyb0|[@ qR`r'&&oͼ8VfffzzE&_  ?~|V'ؿa=P! ."˅BaQQђ%KRRRn[,NӃxIIIqqqVVVd=|ww7ԃ\.*//\ l<V0 QrHfj8ûX,Edp8zsSZ 0Lׇ%$i>A[,z ’jcgfC@Pn~8adb&%T*g AcG%é` ! 7Ϡg2mC#Y,R&566fffi 6 Va9}S拏QLK<@p%.;Ǐ.?|}ʵW>򽧤˒R׵/{G"ʰL υ~D(D]*J_rzwc`S77{Ov=5uy7|wh_hxx۷oG.bRSSw!RSS2~DcGg뫟jL[{%*۲?ПaKs tp}1y}uWk9}?0H񮮮7nX H$2,/[m'ߗ/ AP~[|Æ UUUBܞ/3/䒡˿sb^osssvv6kpN$ɓccFVðB$),,q5zB>7ڵk<փ|DH #GD̙3###Ν ^A"G)'$b/Nh [r|"hѢE?[oUb$IENDB`dot2tex-2.9.0/docs/img/tikzedgelabels.pdf0000666000000000000000000005650512316606077016460 0ustar 00000000000000%PDF-1.4 % 7 0 obj << /Length 450 /Filter /FlateDecode >> stream xUKO@W6ξHzSH@@Em#5m3ΰ8]P{Шr±(;XoL%JW!L驿FHiKJ:R~X^QfS kZGȎY'cS#- `ؑFZe~i[n.X|H;b9ۑ N#d#Yu˒CW;/_ὸ.j ꖦxIx@ ܉Vz \P2zCm<u6\[:#-gɃq&FNn!}M!^Hn62#%-O?j_AS`s.> endobj 1 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (simplelbl1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 12 0 R /BBox [0.00000000 0.00000000 69.22700000 77.44100000] /Resources << /Font << /F8 15 0 R >> /ProcSet [ /PDF /Text ] >> /Length 657 /Filter /FlateDecode >> stream xڭU=1 +<'׊Hl/tC ! ;sһvj{I_6#Ag E8_ûul%_˚l1!`92 }ƺC $KtquDtuu v*\6yLsL7QXL6gV(_]dsM8WWo T[SWXM{|Q'=[?M$ȒOKgu% Y*UTH"*&1UBGbU 9{PiJT" ]QbukQ>:Z>0͈@KG;:!=T=flAN cfyMbMQu{G0},%#h8S!Pz"ULOlY Vz׷tWMe_7eI@apo^; ĞBls5qfC.0{lcD7ؙNztDpڍ5fQO 03.dR!tm-}'(46=5ZMZB|Ato/m8Z:?> 7=gI/(̙.*wr70_<v&;3db0U^2Uxg:`ѷ:e@,ɚ ?ϒIJendstream endobj 12 0 obj << /CreationDate (D:20070617213330+02'00') /Creator (TeX) /PTEX.Fullbanner (This is pdfTeX, Version 3.141592-1.30.6 \(MiKTeX 2.5.2574\)) /Producer (MiKTeX pdfTeX-1.30.6) /ModDate (D:20070617213359+02'00') >> endobj 13 0 obj << /StemV 69 /Flags 4 /Descent -194 /FontBBox [ -251 -250 1009 969] /Ascent 694 /CapHeight 683 /XHeight 431 /ItalicAngle 0 /FontName 16 0 R /FontFile 9 0 R >> endobj 15 0 obj << /Subtype /Type1 /FontDescriptor 13 0 R /LastChar 99 /Widths 17 0 R /FirstChar 97 /Type /Font /BaseFont 16 0 R /Encoding 14 0 R >> endobj 17 0 obj [ 500 556 444] endobj 14 0 obj << /Type /Encoding /Differences [ 0 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/a/b/c/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef] >> endobj 2 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (simplelbl2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 18 0 R /BBox [0.00000000 0.00000000 69.22700000 77.44100000] /Resources << /Font << /F8 21 0 R >> /ProcSet [ /PDF /Text ] >> /Length 643 /Filter /FlateDecode >> stream xڭUM1 W8qHzC"@-\ؙδv9IxcˀƂw97O޹XK2yZVr5%yC4CH8Z-'st$&8Ej5j]QxT|M>Kjr߼?-T\$Ixx*EsawyQ'?G?L&蒝d%l06TPS0E<&","UF"hoAsF3P2 EbM嵙`fNLPyAG5]_&m? jWi..cltZ5B(yl : ,#a$ODM-'qjDN LJq@)5Ӟ2]7Ѿ/qd!/r[fQoi; fWK;Ycy2R{}>Q!enwK G^=X}ٞY;]3mOdt)ga<1W p=z y|}.˓g-r~GtrmCp ܨЛE5od_0|ǪA:ױ)AЮ &^׎ we?endstream endobj 18 0 obj << /CreationDate (D:20070617213833+02'00') /Creator (TeX) /PTEX.Fullbanner (This is pdfTeX, Version 3.141592-1.30.6 \(MiKTeX 2.5.2574\)) /Producer (MiKTeX pdfTeX-1.30.6) /ModDate (D:20070617213911+02'00') >> endobj 19 0 obj << /StemV 69 /Flags 4 /Descent -194 /FontBBox [ -251 -250 1009 969] /Ascent 694 /CapHeight 683 /XHeight 431 /ItalicAngle 0 /FontName 16 0 R /FontFile 9 0 R >> endobj 21 0 obj << /Subtype /Type1 /FontDescriptor 19 0 R /LastChar 99 /Widths 22 0 R /FirstChar 97 /Type /Font /BaseFont 16 0 R /Encoding 20 0 R >> endobj 22 0 obj [ 500 556 444] endobj 20 0 obj << /Type /Encoding /Differences [ 0 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/a/b/c/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef] >> endobj 3 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (simplelbl3.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 23 0 R /BBox [0.00000000 0.00000000 77.29800000 77.44100000] /Resources << /Font << /F8 26 0 R >> /ProcSet [ /PDF /Text ] >> /Length 642 /Filter /FlateDecode >> stream xڭV=1 W"&N'i`;D! >N&dgfEw?_Y4N~X&Ah.osrd#uVŜ CpDRtMMPԸ&;Z$pu޷2.55} "Cl9J|{#GՈ 3zy>xMo>=x~{zuLs>hTO\N!TIbv5e37z2NVK(0JP{%X 50%o47OΣZk?j,T[^I۝>;\I+D {YkVUYSD^"1wҔ\=\L / scyv~YcAA85$Y`k&ꊬ q@)5Ӟ"h*9zj/[o}{6v\I ("!I+>IgTXe{}P/G䛿ۍ3b}iԎNq6 T@bJFAQw2$ȁrP_ݿl^vKv@R](}2%QddCȞ_vebo #:m[ү /#_ζ:endstream endobj 23 0 obj << /CreationDate (D:20070617213916+02'00') /Creator (TeX) /PTEX.Fullbanner (This is pdfTeX, Version 3.141592-1.30.6 \(MiKTeX 2.5.2574\)) /Producer (MiKTeX pdfTeX-1.30.6) /ModDate (D:20070617213942+02'00') >> endobj 24 0 obj << /StemV 69 /Flags 4 /Descent -194 /FontBBox [ -251 -250 1009 969] /Ascent 694 /CapHeight 683 /XHeight 431 /ItalicAngle 0 /FontName 16 0 R /FontFile 9 0 R >> endobj 26 0 obj << /Subtype /Type1 /FontDescriptor 24 0 R /LastChar 99 /Widths 27 0 R /FirstChar 97 /Type /Font /BaseFont 16 0 R /Encoding 25 0 R >> endobj 27 0 obj [ 500 556 444] endobj 25 0 obj << /Type /Encoding /Differences [ 0 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/a/b/c/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef] >> endobj 4 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (simplelbl4.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 28 0 R /BBox [0.00000000 0.00000000 69.22700000 77.44100000] /Resources << /Font << /F8 31 0 R >> /ProcSet [ /PDF /Text ] >> /Length 817 /Filter /FlateDecode >> stream xڭM0 +rCC;sE$n sC`Ђ\NiN'vobg3yg\O7ӏxT$F:ɖ7X\ s] Yu=$slDWj:f8`sC ,;!>/9~[K[a}~Jer5+y75%Ky5|zRL%9ߛy?{Ӌ8黕9iw3YN2e5C_v tUD /BD; '@̰hHhg,m^K;-.?ӌ`aJ< m_~]ijӈu0b3nv#P2kXS61N*&{U/EKxv"L8EhN ! Ժ%787ZF6>JoIIKFMwhteFc÷:i-T+aszF|~'1Ws]HΓBD@ZC8PYaОd#9iôX :6QDDFSCts:(-ix.lSΚ,;a Hj䣶ZHC?Nop#Fi@31%bw$gr6:Xf &APrDi4y N!Vq0-Ïr $$}ѐPg %JڃZ¢9Y+小~B`Y2D!^<:5 kF3Y%\|Di4:vDnu6ZӒ /Ȁendstream endobj 28 0 obj << /CreationDate (D:20070617214025+02'00') /Creator (TeX) /PTEX.Fullbanner (This is pdfTeX, Version 3.141592-1.30.6 \(MiKTeX 2.5.2574\)) /Producer (MiKTeX pdfTeX-1.30.6) /ModDate (D:20070617214044+02'00') >> endobj 29 0 obj << /StemV 69 /Flags 4 /Descent -194 /FontBBox [ -251 -250 1009 969] /Ascent 694 /CapHeight 683 /XHeight 431 /ItalicAngle 0 /FontName 16 0 R /FontFile 9 0 R >> endobj 31 0 obj << /Subtype /Type1 /FontDescriptor 29 0 R /LastChar 99 /Widths 32 0 R /FirstChar 97 /Type /Font /BaseFont 16 0 R /Encoding 30 0 R >> endobj 32 0 obj [ 500 556 444] endobj 30 0 obj << /Type /Encoding /Differences [ 0 /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/a/b/c/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef] >> endobj 5 0 obj << /Font << /F8 10 0 R >> /XObject << /Im1 1 0 R /Im2 2 0 R /Im3 3 0 R /Im4 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 9 0 obj << /Length1 1082 /Length2 5368 /Length3 532 /Length 6084 /Filter /FlateDecode >> stream xgXS[UBB!T B`H & UzS.EA@@R6޹:w~g9yλLETQN(X,P7bb< P+3܆ÜP7 !mW?,-T=-*Tm5 k'QFͤ#Gt-Qsb⻃nFx=p븞jyyѶ G{C_6Hx}6-}2y%&49^Uq ~4iD QdOnڟ%d )נ&+&Jە4M/h:ɈvT]Lã@ =7qݖsiU !R2Tm-@։lqnzRn0uwQ[kbw.&`,*JA>yv*! 'gNC>00A˪ KFMM?]".*TԙFFdGrafP**1SX'2Рb"]jVl 4ܑ=0i(gv&yaxGƽk6/M4ɏNW^ nHcUFrºI^Ezy;xe0%͆i@v zk92Yk$m|ċKZ}ond q䞝0?z=4z|x4K;y4= kADOE?99ƕn[xcи3ݙ<|5ԃo%|Z|(j+{wG)i)ֱ/>yh٪)S{<ܣ/w\I*L8o bKCAI{G[L}k~.u[˵$P+xrq83$JȽt?g(d/.WPlywSwY:[GRDD |~0ZF]oklOMs?J ܚ{*(! lHAhƿByr;N~re_oH]yXS2W)VZ%6_r+Ƿ2 8ٹo*j{O*'rɪ.P\s/K"gCzǤ /zߐv|@or D7@[x2vF"q/.ASZdW? ?=t\"b?x[1p+;jdKȰ Z|swLƗ\CxbK-FW\,AoI6~4ΠA0N3 vs}c~r\ޖF5h_늛Gq /Qs4FT'ޢ^!fjLy dՅeGg+r~}'%/Vg;~߽+i&L2%4Rm>Q 4sxF*'>&G?~Et]CCgy-N)sz+0{U{w,xp )ȪҖSY ֐+` ~fIۂ2c=V&NS z.ו];0| ZoN\sLx~ߋ`5 ^"_6##eϏ׏? JS&'JRkm?(⸻UKtS1"/4iɬUe竂՟Sڌe20\6טέ.̴Wx@&c-;΃yd3P$Dq mP$H9ywjcuKgƎ~wj^Ză)!n3wOb*K`&׌ǥTS\A9Kj"{hjlU 1^=4pmQk~#!Q.bG'x(K?8.5闅%4p8)U!VErOU,Od0l 451 r݇ \V6Նmz!Դ+Ewv=~>dQ~L1o¾0Ih\ʧ?7G{G[У!w0=1_ۄg$~u_hbj~Dx57 r> wjX{I&3Ǫi<7&?2) 6'!Lxp=q(0e4i|IN^ asP;S(eP0XQu=?،m>@[[j%`C:jő3^l1PnIF$FΥAV2̂EmWbeXml} ,Ye޺G⍣JjH}6H /6E]#2#ZbJ&(\Řk/ h E$Xd;הHt3=[qdx9v*ſ l!|_MTź@YRtղDZVg+>_v:T|H"x>;#+zv&ׁ?YyRf֎߾S[h# r'sN!XxqxOGـ= p 'h5Wh֙YwwUb%z19vŝCt^ct6->Vxb'u `:ߙ=VVYFߥ7 kYwljZ}:["LF ꉋvqCvs&bWYQwy| Me2%mZIq2Ez}VVT bv!Qk 14DE*_7SӢ>fԏ$*?yna z09(4.3rZ \:9ؓߛQZi Hd\]&43{2So—j£`li)4 ;`EBՓTw%МԺ'xf}dҿv`b*&P: oKvbFA肷3ls8VzdH8Gp麟BsX!4P\tVΈţ,O!/[3m# 9R=,GFY #r_R͐I󬯿%Aei Dcu4ܭGy|Ǽ2WjAu#nӰS->n:s|@3N9)FuZWO#AM@W?=f鱽7\B۸Tfjxt1ݼkW &R ]!.ckYy<=#begx%ZS)Ă|9G f. ]/CjMU~D~Q4R)ع#U9SK01Lq]V5; ª1Hݺw({nW X08a3 "ń1h+!kop 1m>_ wGk> {CpsJs3Gt)Lf9x>^SO@ tcIg#!QʢI|d)uc.I-聅o9ٟ0ԴOޒ}m-qK9*fc*#g@ʔ]<2{J`m`nI35=5E=#JwJ Kz˰A}*E_:_A*L,IT|@3EnX'|P ģ&?Jsr SJQC[Μf8}&,8d?_$S}'h=+<'5)r dfą됽HQM{jT6qv;[GhɌ;vjҴor眃 `.FǭrjE sg)U; bܴu'wm_MEjy>nd8u49,֡BQ-MJg(3 3j@'kd|z {Q*O4H~/[Wڈܱs(fdj~-4YxƑ$c8v۳ wxz#>eYx+7^[{ 7}A]$+UR\OGG&TRdo$[%MhF~_S|Ze,GݡS㏔"^3B"?`[7Y5}˞BRl{zeϿ6-Icu,~g#/}_, OL] B=rQ~w_H8U*$al>`3(Se Ə9;I+;d[FDS'mgN=acwH(+o^p>fw ׷lR(>pqmScF7na: }9}thdZZ\vcʰ4[Rbhee6mبk,0_" udy z~ hmo|PH#Q,wp{0@]x'& ޵:p蝗XEhQGہ`Uaȼ+ʼnOgȫ7nQzUb䖸Ó6q_ݚ[{LGƣb]*IMcBS%S{#lHW*=:!-~J$w弻sy̜zxst *aە~8@:wRUG'lM\~+xL)GCM!P*J$x fL Z[#gi㜻ǥ&;zxav{f_,|jAU}<]QtۤZKgrpɱdFgaCn!V:e> endobj 8 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName 16 0 R /ItalicAngle 0 /StemV 69 /XHeight 431 /FontBBox [-251 -250 1009 969] /Flags 4 /CharSet (/fi/exclam/comma/zero/two/equal/G/a/b/d/e/f/h/i/l/o/p/r/s/t/u/v/z) /FontFile 9 0 R >> endobj 34 0 obj [556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 0 0 0 0 0 0 0 0 0 278 0 0 0 500 0 500 0 0 0 0 0 0 0 0 0 0 778 0 0 0 0 0 0 0 0 0 785 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 556 0 556 444 306 0 556 278 0 0 278 0 0 500 556 0 392 394 389 556 528 0 0 0 444 ] endobj 33 0 obj << /Type /Encoding /Differences [ 0 /.notdef 12/fi 13/.notdef 33/exclam 34/.notdef 44/comma 45/.notdef 48/zero 49/.notdef 50/two 51/.notdef 61/equal 62/.notdef 71/G 72/.notdef 97/a/b 99/.notdef 100/d/e/f 103/.notdef 104/h/i 106/.notdef 108/l 109/.notdef 111/o/p 113/.notdef 114/r/s/t/u/v 119/.notdef 122/z 123/.notdef] >> endobj 11 0 obj << /Type /Pages /Count 1 /Kids [6 0 R] >> endobj 35 0 obj << /Type /Catalog /Pages 11 0 R >> endobj 36 0 obj << /Producer (MiKTeX pdfTeX-1.30.6) /Creator (TeX) /CreationDate (D:20070617214403+02'00') /PTEX.Fullbanner (This is pdfTeX, Version 3.141592-1.30.6 (MiKTeX 2.5.2574)) >> endobj xref 0 37 0000000000 65535 f 0000000656 00000 n 0000004284 00000 n 0000007898 00000 n 0000011511 00000 n 0000015299 00000 n 0000000544 00000 n 0000000015 00000 n 0000021809 00000 n 0000015426 00000 n 0000021660 00000 n 0000022684 00000 n 0000001618 00000 n 0000001842 00000 n 0000002197 00000 n 0000002017 00000 n 0000021630 00000 n 0000002166 00000 n 0000005232 00000 n 0000005456 00000 n 0000005811 00000 n 0000005631 00000 n 0000005780 00000 n 0000008845 00000 n 0000009069 00000 n 0000009424 00000 n 0000009244 00000 n 0000009393 00000 n 0000012633 00000 n 0000012857 00000 n 0000013212 00000 n 0000013032 00000 n 0000013181 00000 n 0000022346 00000 n 0000022059 00000 n 0000022742 00000 n 0000022793 00000 n trailer << /Size 37 /Root 35 0 R /Info 36 0 R /ID [<2B1C1DB97EF665DB6A7027D88B39B5C1> <2B1C1DB97EF665DB6A7027D88B39B5C1>] >> startxref 22980 %%EOF dot2tex-2.9.0/docs/img/tikzedgelabels.png0000666000000000000000000003443312316606077016467 0ustar 00000000000000PNG  IHDR>F IDATx]{\LLSR*440.C$岈]cی]fiVve LZhVj7Rk2DWTQT3IӤ:?i~yd3yyn<(h  @ЖMMM~=//4"" /@ZZɓO<OPDt]~ߟb͟?߾}<J$$$L<ٳx<~$, ?O)`X[n d@s(d2`֭,KC fD fri4@χ4\.L&d&)2@HMMt6M&)J|FGG09=  4M5B,0]4MDk&2^d2WMutzB~}ɫk`["~JJR(yF#HT̄jw E1^c: &fh4 {pfAG:&/(s{  D"Y QPRz\.@Pp\x0c&?y;+d 5DIqtu "(O w%"G4 W*k\,+}&&&NNNrss|/</ə8qoG&5***|V;+<==KKK5gڒ<,X6^hY+O1wVOooZAGˠcP ᘫ^(d1+K^0秅Jk$t Y\X qppF׈'E`]vDT>UC(mxbgA@ {2]K.xt!KWO%51^6);0ŋ/konmSoApDeHI"##5TH+//WOFgɬ,iW47Pz_,"I*''F#Px޹sS55/L^KT;,߸qL}ziSSSmk\.<h @@:6rT*UCI*9 >17k`\1hg{1ۮltAԗ(55@ PT{TUAyyPq1M"Za\k&I&5!`0?=u\.BApO)GPDʦ)ݧ FG#Unn>a2~aAw3; B`O#) 1)ވ >d?ȶ,cgd}:1:| nA+'ȶ𳗣÷ʨnW/ B&%JVNS^ Mu|xYz"zFh4ZW_JeDaiM=&QD|2JxZm jeҗ/9j|F׹Psk=@ `01?d2DbwACUUM v Oۑ=ѐFGGDt^\q(iI@)|J1RGt!/bm:To2`D?d.`YG}bAAA$˖7nɴTl `(ʀop,--9rbN4IwU"~555[?eg />lvpEewӢW[[;n8.X(:}v===t!!> %Š2;w^C*+;;;<<oڴIcOk`oo۷!~iyrK]*0|YOO;Tph wBR_ܠO*oǂ!a << x9hF>ظqc||kCr/'V b@2-u-s0@i |^miqgBGȑS'f=(ZXbcctu*Ċ@t|ﲊg?oŽǛ"4bqX|pqm{0hYP<O&XS'7{%}99hb/5C1 e|cc0jT%ʤI"""4v؂Nڲҫ:ޭ[311qٲeC|~޽8g 䕬m@q1xJ#u ??ׯϟ!ޔIy{\MMMtԎzܹs322Fejj#$Z|}mLkӯn&&&AAA1119992%O񯍓ȳE8yzZZU6o>@>Ѭ!’#Hl6;''/F855]U ^JY{>:sl5 ~}10 ;>]1Jk$,%.{-}=fcyJ-YWo%k7sA[vřm[J|ih8ioCv2Բp}竎g<<<---#""D:ِ̝5mKQmWߥt啛L&p8bP-x3m]MaJ̣)G/=UOD|tuEMmqܷozyyQt6 5X I+/## 91rzЙ.zV[8~ǞTކ*u>|-k^8S,ge՗[; ر#&&ҥK, ;c9v"bփqrs/Otg I+ 0`8`h(o=IuSOZ0Z"u ho;چ]';"WG쌌"󕞞 HsUWõ LZX4:_IJJR^^^}G#VAAkE|tRU_>@[_w{qwE=Ze$˖-OFpv]SSCP:[Nx 7s}v???-o-FǏ1̮]z Ts>w;z6Vhi]cc`cUmuh4___1 bcclJ&hy.<_G|IO>|ODW/QKysjgz PO3Q-N,*1s=}snφowv#[ãG:Y?*ɨ亸Վ,*+6}`)6؛dn!`#Rڭnfmꭦ}0|(/Omb8,Žv[,''Z/wzNOCaWN.a*? U,GS>s1L 5hָ8ymln_d{=} -^U Rr/˄{AY3 Np߭:197s ڬ~lcU|QG䠠 GJJ NO߽{wرsΕ^<t+צoTT?սsO;waL 22iee%g5}}ס(kf0@ P^^$1q4CmяDu_]YέC/N\ǰ_ZP-"C=1bnrk/yԩ [ZT ä3k#sր C?|{iio`{8eCyzbtOj; >u9"'~vX m@&B1h?͹u JX mS }JH荝x+x˕1eYScW[6TH1Z| kq dUp8mlW9cъ-k_|*ʸ_z2V&3j 0)į{]!c's| /e'( >3eFMtwٻ־ݴAWu,ftxzęis$KJJdUh?>2[$as^Hu)Q[!spp())QZ9 TÆ QϚaÆ62iH 7sîb]mu2HExlkIгm@e*@ˇ}ܚg%;)qEEEZ6Zpt{[[[ٟtn* >3eH M],UW۩$ I}=>2<]Rm,yP޽vGd2Y~Do8pLh昇̵Pچx^b\jNuڑ0sxg]ekxKl|j| BBB\\\d6ԥfٛ }xh3"""f͚%Meo 6v.c۩Slr|SSNWk|85FzyS&PsMLL(b> CR݂R~JbfMzuq73;Vz.f]rRI왨VVV [HAll,FrEWb.4zS:Ӌ̰z9S8΢aÆؠ JKKDo>}m^Vh^[(r_;vlJJ◒";G@[;lLjb̢cVzGhƆJ^vM8N~4E[=ޱNeêUųW97mMO`0do b_eFnk ӧepbbbT~xq۩=$Nlp,--\m1⧯;q(j`<==I$M|||z:u1"ê7ۢ{X40.-(%:WAP;7g׷{AO9B%~˥P(]iy챛 ,Ȥk)EB'˥RAgmE`3u6{u =rd2L&7gu ;k︆_lzkފUG(zv׹Ak7}eX*=1((<5p8t:];][d~I'IC掀57GZ:Kd n fwqq#$ct_uk=NWVVz{{5%%%X,vr5tIteee=zT"]$gk2JO}-- ~13GKǦbnJxx8BpX,ɓ'eeeΡߺOQ6fjSC鲱133Qm)~N?u}WguTc֝!a|>(W?w^zmjZUL>aO}>}<tQ ϘU [˸!0e*' JI_Ԅ456[x6LL'1ʪV䪙X $R]\cjO #.yob^r+ɞwxBmN !!!##c`(3""=..#AI x_q-{??wSW[Fe3gg<8vv},Zj,[18N͟?}?;hgX#)#~t:IJ2ӥi["Liк͏/_-Q(޺-.>o2#߇Vdzoe՚>;ݐͱK^l.&붔PNh-9 :J'W *J2 k<@7=,K'}c/A_}ȴZ>$"tXSP_͙=#a\WNiXMz/k?#~HDd03X7|TaUqvQ@OfzȳJh6zH}x4 $LEq}έ| (USOF'mmC-Jiv]d/Vu?XXӥg[ ׯkWA5*##CC/h0bDyn8O\ONGG0jT+>y܊\@}T.~l<8S8eZOnfk 55ޤEM]]KK0t=Bo>$"r'#`ƖpO\==Nb'?Q={1/۷o_@@e'KN)Q)t2,#)nD4f ~GZZr { 8:%݇V0???0HHH?> ##CTiE3S:^m4q̾.]ٱczCC`oFVԞ1/ǫ(--e|ѲҴSpGY+t!>]d2 ҩR&h9Ogb.F_QzJw9itpp )zz\|.bmxggg'%%yvrK+rssq84 _lLYss-R"*={ٳg?==Ap8 1&&H$v+0ĕ{濧.(--Uv;[Kr2 K*c%A72х`޼yU˝!22޽{Mfx۾Y$Vf HԴJ22So;Qk e |>|ϼ۟FRd2b!rN1ݴ4ޤ86 ~"bӅ@C4>ui䦭YmzqQ]ҟ`>ss'OHh¢oj>-x3S.Tt ZY^^ltOayr\?wVL/V2}VW좦&5 VSxX6!Jԩh4 9,Wݏu*T*)yPx‡5+N,[PPx...ecTjzz7}I'O)"(gHHBWRRb^vmΜ9UB*.4MZl.]4,, BJJ&t3 _uxx7h4d %==] 9}b^сyc(fRP3|9o/d2YT!HMM23mPF#d=C.z|gS8Ij$ӧIhK@@,{|<^3HSu&j4&R(?~}Ї އ>_H R9NԙdSz#H.t vw@yp0'''OOO[[[ #JKKsrri4fGFaee())yIHHJ D}?,Q`>̓tbZHذa&ґi`Ysww777wqqA'v'mrppCVJDOx<UQQpx<^+ z} @0PD!@ @} @> @t 4Dn߶izN&dڙ#ݬ@Y1_n$7P' *TTu-g\Z2%i3B]T[2 I$tSGO9FX<5`ni8 k_6XY~Uxkմs6W<{e4ʾqLЊ n4FOD0ò}'lTZy_$tgl5e"Xx]xi\<U}򷛮gW\Z/oIv?Wm\99咽fٿ69po- 8uv^lxu#a` u$>Gm9n۶fQE?ݎ_?$u{WK;/\ҟ۹z~lYSn jRΘo[F59yk*h~Nd:.VEȞr]YέC/N\z~fS#̬m6>~@oָp?\/3XxĈ))E^[b|{mV9`d i=p@a8W}4˨c3oz``4hcnK.)}`]~r"gWAb΁y[:[8?8SΜ{ :ǥX0%~<I:&K:b*[fmt 4?\FO'PZ_rvǸ'~Cwvq2SSN$zMݼA:ݥ0P3gx,|AbL؝{J&]h:i >>ZW-)9tS1]>¨8 ޖ0nc8v\*6(˟vފ6GzvN13!mt}Uq"?W߷ a^O}Nj司#qk˦ =_QQF_=}t=pjzUكAk Z~)TW;RX ^݉0[틫ZYYˬMyZ⤴=^,M@CEI)Y gb^$o[pi,<[1&H:$hmu-Pdقφ5̛LO+LKL'ka5vAɏ>{ }l6yD8zv-į}~rBF6_KLWmդy1cG:C4ޭ8#Pm+ 5%^zUŌ 7&Bk>(TŌQT䟸‘;&pg ݹnxW/3́z=<_8k}ysvCA{ՇګnG5^^t4}(!ڂ?n=~ Yl5dh~|k^Vf^ 1&ÌǦf~6qwkRD<0)Z^ǵĤ+l7/4XWqpwbN vLƝm]8O~혱MIs`g?zndpĠ'tNQفNܻ{{~WNp "c _]iӗô˓6,[dsc4xxĿxv:ZnkQh=+WNu'Y߽QV9^U?τU>ѠkZ~nU\6mo ~5кËN:{ћw9/nӜS,KK+ǰ.RB=sTx y% @>G.~ބ7[~)썳Mz]c }ry7޴^ZN3qama3g5"ҀƀFlO5UMn^ZIENDB`dot2tex-2.9.0/docs/img/tikzsimple.png0000666000000000000000000000465112316606077015670 0ustar 00000000000000PNG  IHDR\g0a pIDATx]]l6IC(l% M](ѪJl< Q0nTX5R;[0J64Ď)RV@dJ&3YYc8K왛y&_=9D#xfggCЅ \.A@ 0<Px{x?4M$(P(dZzΤy+6erW[[[ H$(ٳf:OڷTjǗ&d2Y__ (Z˵eɻnV:Moa2PZ)%A?s_O?êܵGُkK2_FD&?/NX8ZZΎuXDwo}Xi>>8s:M5Lqȝ;w\.a$b2nݪrh4p8&''{zz S<؃?IynJqň!n*F[Ũl6qxb~{4fwrh4jkkkIT.}2aFQ2F[DKKK0^WiX?XӵswUŒwDHڍ7 A p\N4Z,Z %EO'NDѮ.DZ8v8ҩ)")rA?bxޥ>">"TJaEs+"ɓ'vFh4VKURReY TSs A|>(9C)a$WA.D>n4Ak atݻw!MNNfV ,3LF1Kp,R8KZ)^JJNڻwo<qwr>+%jy׋xK] UXלVԛ\~Z.pvvٳM.K$h4666VTTo߾}a$3K ?rjݿUUU.,;66&~zM6IU(SJ.)wtt455q }hPĤ Z L/|%]&^Z%JX ]ҥ@PѨ*b8EȊ)b C}BoE&IR )<ϋ{soX>|o~#>b@(,/t/X ZPD__띘Hmp8طo߼[wvv&_\<3 s˲AdT-XDq"æؒvv0 x"dAM5@{{{N[[LMM bZZy tD D"111!L[~xq#hHoap8ۑBeYwC\f.}&yrh]%s?Jѿ׿nLiJ_gK=0YP4%_(ZS2,>4xf^5xz6z%<R}; iJ͆ ߥKzzzBE,͏(B ؑ87? X3lFyt;zFpu?yĐ`ue@- "!2A\m ,QEDzv{(unUP(r'jssscc#GTn"+IENDB`dot2tex-2.9.0/docs/img/topaths1.pdf0000666000000000000000000002162212316606077015222 0ustar 00000000000000%PDF-1.4 % 3 0 obj << /Length 754 /Filter /FlateDecode >> stream xV=1 WbB؎"v鐠cL2;Gv2xd!4Yn@ Zg:YM_\M9Nal ,Rk&`ڞ!Pf;3ȅȃv!7`[[c*<~V^A2zTFy$74Uʈ`/ϧ5Y6|U٧oOvKӖ+j.jK-ꄹ]yYFaDS)Fг g}]#Gck-АD[{>CUѡnVX]͙ ㇞%=0XǦ,M\-զ' y!׌( m8mBPܟU.u$PNFVը#[;ve_7XS%Z0&خ&7=^ӝfrd+V*JMҊHNh~.A"Nqh1ˊ-FLyrI ׆q^& =8" 9盥d|A>~ɨLO];|+kxy]}ZԱ0fq&AĐ5tNwZoȨުŷj: `Est~)o,v-AL8BuF021ɠԇh ۮ- Џ/3a{Ϭ%h~6CݤiD]C???s{ endstream endobj 2 0 obj << /Type /Page /Contents 3 0 R /Resources 1 0 R /MediaBox [0 0 96.909 120.074] /Parent 7 0 R >> endobj 1 0 obj << /Font << /F8 6 0 R >> /ProcSet [ /PDF /Text ] >> endobj 5 0 obj << /Length1 769 /Length2 1991 /Length3 532 /Length 2557 /Filter /FlateDecode >> stream xRyt@RwdXA$kq$'@}D',Ҙ A"xD `Sŋ | ~ -/ ْ ER @ T~7!6 G,i82OǠ4C%4ʷWm@dq$"ނM1 D:‘8H!|+ܖS'OY8::ӭ#H;&y |whD ;ozYST " o!`8@@ )T:$ !$`B=4 oCHcd1  зnߥ?)@1X%;U76s~؞N/Jq!Ih̞Ŵ2ZHq< M%f\X:4 Pj:2#\ ^cV7*|dnMD|S;ڍ!b[Ͽp=xWUQ#˿nd!S}ȣ֎4J5~`{#1 GtxoNkT8%0;f Rr!PTkaVS3ǯ >"5LqA)4Ld㴇 kCCDJT9/ oX&xH*oKXeh^gə{3P}(t-ԋ=Cy]OF_vG L ]2-vy +](#Eu>ީKIܽ6M~0p"G#}h],*({ᙷĥ 9<]@J.[QW5ouy=}dmJ(!K8nrfz.S+y4l˝S^ |]Ot,F>^}9Β$~-/&;OwϨY/ nݮV|bUM9Vc4\z9.n]5p$ZQ.,h<}xŘҲB[;^ K2l9fټ~V!粓e ݾ_0BhZI3;D \p2zKw6O;viq#omיc &$Nߵ%;>}0Y ~JLY H7vLMgGuv/D~a}NN ,v{Mu\DNΉ[<ĊV6"jGվt>zZ6]d]WcŋICFX695BES0>jjvKH@QAU2NO K??%iKX 9"g ǚJזV8E,y>ІfuᎲ1f{K)[Gϫ{xE#3:$M' |ܭ[ធ>hZyax[]EX9Er6R sЪw e^Mk?H%F3r־c_ZR1T]MH_O4 X-NvBz"kajYv>'1IށY;9"2~}H5T$[dv^D/Iz[Z1s|vc;*oI#b¿x_hH2#sTբU}CTC̲zs9?| /?QOq4:]nRE endstream endobj 6 0 obj << /Type /Font /Subtype /Type1 /Encoding 8 0 R /FirstChar 97 /LastChar 99 /Widths 9 0 R /BaseFont /VQVAPS+CMR10 /FontDescriptor 4 0 R >> endobj 4 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /VQVAPS+CMR10 /ItalicAngle 0 /StemV 69 /XHeight 431 /FontBBox [-251 -250 1009 969] /Flags 4 /CharSet (/a/b/c) /FontFile 5 0 R >> endobj 9 0 obj [500 556 444 ] endobj 8 0 obj << /Type /Encoding /Differences [ 0 /.notdef 97/a/b/c 100/.notdef] >> endobj 7 0 obj << /Type /Pages /Count 1 /Kids [2 0 R] >> endobj 10 0 obj << /Type /Catalog /Pages 7 0 R >> endobj 11 0 obj << /Producer (MiKTeX pdfTeX-1.30.6) /Creator (TeX) /CreationDate (D:20070618200507+02'00') /PTEX.Fullbanner (This is pdfTeX, Version 3.141592-1.30.6 (MiKTeX 2.5.2574)) >> endobj xref 0 12 0000000000 65535 f 0000000959 00000 n 0000000848 00000 n 0000000015 00000 n 0000003854 00000 n 0000001026 00000 n 0000003702 00000 n 0000004167 00000 n 0000004082 00000 n 0000004052 00000 n 0000004224 00000 n 0000004274 00000 n trailer << /Size 12 /Root 10 0 R /Info 11 0 R /ID [<58492F4B0D8C8CCB63674FDF0BADA56B> <58492F4B0D8C8CCB63674FDF0BADA56B>] >> startxref 4461 %%EOF 2 0 obj<> endobj 10 0 obj<> endobj 11 0 obj<> endobj 12 0 obj<>stream 2007-06-18T20:05:07+02:00 TeX 2007-06-18T22:18:32+02:00 2007-06-18T22:18:32+02:00 This is pdfTeX, Version 3.141592-1.30.6 (MiKTeX 2.5.2574) MiKTeX pdfTeX-1.30.6 application/pdf uuid:44b1ebd0-87db-42e2-93de-cc9206ebe052 uuid:b53d5196-8b3f-49b8-ade7-1cf88e9e7697 endstream endobj xref 2 1 0000004857 00000 n 10 3 0000004996 00000 n 0000005057 00000 n 0000005269 00000 n trailer <<10E57D9F9202E54C9FE243C7775614CC>]/Prev 4461 >> startxref 8854 %%EOF dot2tex-2.9.0/docs/img/topaths1.png0000666000000000000000000000664212316606077015242 0ustar 00000000000000PNG  IHDRl iIDATx]LX;S%l:!`ch!`Rwf+(Y]VR& Xаe̬EHÈvbG6tװ&إ:sB?K9?Jy?Nx IbHQT__H$DAlll%IzL& `}l6(JӴG]P-T*mhh}Z*ZVAX$M&+;`ssSno 0L,t(J4-Vt:i-)!{nnn}}E222CX&:&̜SSSd&---EO^"B&$)2EQFelAy$ D5\.}!r\YV- DۭR233766Ξ=R\ET*=~嗲ұl(J$0?vq y<+Df`@DK!"SD$>o00 mK/uuuIR.!==}||<Á Cއ~^3gv #/{=1̜O8qff.̻477l '''sssüKAAB883^qZQC)k4`,?~vO]%<,ד %[ӥwA`O~tt2VDA`)|ٶ< nݪLX_|Żw21-B4| P0 n=|PY Zo8`ccCV(P(>裖W  H/ p8}"ѣSSSBݙ;&x}L^^^ёБv8}.]2333O ~駍F[o'LS8<9sTz $Z"wAQt{{[RY,!.Lmng򾭭ڵk t E 'ƙR4rsssrr[[[KKKE l6CN4yΛ@O<(GSc"|uC?8˅***|GGGJt: ']&iee%.v[,NH֦Vjujj\.WTAh!!dA^(x8n6}p@ǭhU6_9_H=b J~zvvEu(,z^Ĝ2gV|b!ʯh999>cEMLL059߹s'lh4rf/H`A:xqqq1z>bqOOOgggH+}y X{in&r{bq= MlfLGF_hv x(ʨ8v}1X^h4(a6(.r=͛7p`WP$srr*++VWWWVV0 qܟ!{||M'5,JߴWBZ[[KKK+((cĈAdA=U2PmWV\I{{{iiikkk KKKr|#RgΜMd21o.,, <×pƃ(JDټ(ė-777S+X,*j||4lyiѕ Coo>b4A|<s=LX~jN;{~/^ۘv,eaZ^|"j{{;KN!M_jp80 cCSGtFA`x5tDgiRSKKKkkk$??6 Ŀ7h(卍233;;;GGG].W< Dfk9S$Ew7jFD`_i;N^D9l^pqF!,8eRo>jȭBb6c py~Bro_.څ{HkC x̒Sx)'{kџ݁X7H?IJ$2j_}o^]Em1/ñhloo_YY1L1oyfn{ddD{DCxD Xc1 ;C{j uQV `; +^,$IHFb,`0Rf vPcaA~cMMMf9bLNNƮ.tIJ$ľ]i'3@B1;;]WWW3FFcmmmUUx>@VcVSSPq3;;;++̊GDAv "((((bd+fIENDB`dot2tex-2.9.0/docs/img/valignmode0.pdf0000666000000000000000000002463512316606077015673 0ustar 00000000000000%PDF-1.6 % 1 0 obj<> endobj 2 0 obj<> endobj 3 0 obj<> endobj 5 0 obj<> endobj 6 0 obj<>/ProcSet[/PDF/Text]>> endobj 7 0 obj<> endobj 8 0 obj<> endobj 9 0 obj[778 0 0 0 0 0 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 556 0 556 444 306 500 556 278 0 0 278 0 556 500 0 0 392 0 389] endobj 10 0 obj<> endobj 11 0 obj<>stream xgXS[%t@z@B)RB$БB(*"MAH"UtDu|4ϜsjGDBZ àr2rWcs9Y, "x$ïzpW鹢xEI `8$ Rj{qH 4=^0( h!@6 44q~p7 ]$)evD~DaШ@2Vogq=_F77 1npݐ^($L@>z)CQ>_v8"H%mgi!LLH42?L%WHt0+)84@:=$Rh7x@ Ac '@ ,/AJ@7ˑ;4VoR\Mrtߐ ߐ$*A I FRAߐ7$ʤM>80,-O'%sj@5e%_ibw$p`tS>,T 9"끗 Q#Q% %&km .$}ۈN|@j&cVXwVoOul]7ӱ\$kkˊVV#bj/+fx+MRM| G 9ie?*K;uLf\T00_\}\Rs]DX _D型 u&mH5Qv,sVt(>R,ZyzO.t@0-tFK>Mq;jA[v^ 9l+>PV3,W}e=? \F8@WpRLմ]s6~cKW"l*ؤyiEvAh\Dz@4Qɝ߀S3?  XylM\'AAꧏo}8muzF[nܤaAV?~*AmN9Iy\ kt>\ J/5"íw}Y l,*#h8 ̦} d>S}PM&/'ǻalOӦƐW]$}HKfo.\[=|s'6:B8¹L6w#,פ#)\'<6ACXtTixctVx^ſ]c&sdk"nn7QBw*o'<Ɩ"rz<Z5):M*KVBnAN)r*ˌ`솭џ)k1fAi%<Tbu;]ۻr^ȫw|2/z`sjE7Va6!׶RG;3ןr&@LTb5 V['9I2jZX9*hlk =hJ/6 RGW]rb 4;0yRd~wMbaMٝ6XMqWQӨ8SD霉Kлl#3vgCsU)~r%e6n+x '>{.GVdCnWn`>YmO5/+Gi%X b n8#.Vd^Gmabzj2& B&_댂A*Tt6+7A[g(&ޥF,4}W@kN9]#=Sےjn[[*[$\ @v n_ڈbtQ1G\ay#Ȥz"#8v׎ث;~Pr@_vM%+[7rue^Nq| XciOGd4hƗ2hy&W`U~򱱃V6l|#Z+O O]l?\Q2 &&џEOUpdݐx6 ~ePxv' U-ٯ݊1RlQO3O|&U>0%Kb2J3_^-V R樂._C8˘=fP<>9'I $vF\ϛZx@uO*xjrWk&c3tfOeǠrxTCq:wes E e5.ijѲN,?zZK߀\o81ͽZmXޛ~PKHBI=&;[c~n*usu 62LNC:D ēB`lKXQt3b]퍭wkW951[JGM+;B̓}uC*01/xXx틢Qɉ3.g3Rc:00' xK?e seI?ҋ=Mҹw @n7ZĮ(ޞ(0BS+6c s~|ɍ*G8&ާm>ͺN-+׵%@I!$U*XnEO|+rY˞LdDnq_<HC![ pB\Mr.d|pI1֮yo\+%eZ^&ep':QdKWZ΋U5Ux.~'.*Όgͭ.#O!崺JmM6+29J#"qҢ<׫jq,c!WCKZevSjtNcclu}\l}Fl<>i5Vd4ybO3$L&=Q~D~fYNI2v~ޣѳ@lC\ %}چ4z+MFb=K J@d`^R֬{MDX{z@c*TYx:ׅlϚz\'%vr{*-gxLԠ't(Vc^6DcUmBEݻ^EKD/P,LKZ-LRmQ! n_x4v]3ctq[~6=vePg]kb8 DZiF.۵c~/JvSj:ZBM9cxYl@)[wl?;zkkoŹv,C.FD??f,:^(:8' N>+q +`7=7O'X )3\#ذL]G:Qij3-GT]b2h}Kg.O)lt iS?"Gu TV\?a3B1@Q=̩.XJgCdVԒpK /('6D;SjuH)[s󉖛WVx^%3Ʀ8Aq+xe!AՕ5k%+wt|7aĵ4pNӪ"ˁ.nn"z#0;=i (M~uvlO-Qu&Q)KЄᘘ-1VxLe*<*b-=+x>2آk~qc쓴~ޘ~voʑ4o(GENeh60<͒" ?^ AS~|u8h ZqB1 z%~u3^BPZ |#B[G8:~wgtK}LrkM=4rVE&Ҙ>x!j ƒΝ0JX9}lEhOR1&bmn|)󏜪ޖ nF~eT6 cVĻLg!fkE vZm pL=xfg~1\ٞMwn";%WoX[xzƒC/KM׽S3?di+(G9^0/V]DŽ Ҟdzy߽PwgѸl" U@)+0eu37DQ *9}P>̓nj#%e@ s[JʴHVg0ݱZ[tEHÍNQWȱ,^l]p8 LT~KJ]UL4giW>mȊO:USx+^*B2mLWcz'MZ|BZyIRdhu&>MGwú]#pd^KʣD:ˣYgZL 9aduчў y/?QCqx yH endstream endobj 12 0 obj<>stream xڥSMO0 W|H&zC:!8Mt`m<gwhѰW2(䂌3Y.B"x(l ,XYPXCn%HH% cp-N] ebQplbŶ?\8Y!`ϤIz*m䝕h$tJ'v8tI @I3N sSO-IЪşH ,뾹DlȀ_?g77f$)D櫳CY{zZs+(#&1P4vo2]ORP.[-YC$FfEC sn7=Y[I ͏!Az:&]~RųYZfsGY{H7; endstream endobj 13 0 obj<>stream 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 TeX application/pdf uuid:ec9b76a6-4217-439c-811f-cf232bdbd898 uuid:73bc4cab-fafe-40df-989e-7ca817960da1 MiKTeX pdfTeX-1.30.6 endstream endobj xref 0 14 0000000004 65535 f 0000000016 00000 n 0000000076 00000 n 0000000155 00000 n 0000000000 00000 f 0000000289 00000 n 0000000384 00000 n 0000000440 00000 n 0000000581 00000 n 0000000804 00000 n 0000001002 00000 n 0000001225 00000 n 0000006377 00000 n 0000006871 00000 n trailer <<6DF1AD6AE3E3CB48838AFB6B1C817276>]>> startxref 10218 %%EOF dot2tex-2.9.0/docs/img/valignmode0.png0000666000000000000000000000435312316606077015701 0ustar 00000000000000PNG  IHDR4E pHYs==լtIDATxYL[O7hX XH%qD jlA) $$DDi|ZC Q6%A&EĤ(j-HA"m)]އIE*-3̙9973&!!A,J{!L*d25??o;7551@+SggǏl{YO:::ryJJnWW@ ׯlwww  RԪjUSScooP(LspЇ(P]jڅ@B P.jڅ@v!]. @Bv!]jbS ]RN<[={hv!kSAAP\\[$V?~?ߦ rl6OJHIIRhRGGZF$""9;;+ܖhoo:f*pY VgW(o޼immusscGʊe0 |211ӧjOOhRUPP@PFGGϜ9SQQb.1BavvvppJ*ׯkfnnP**jeEp@2zyyx .DEE̡U$ɣG.]:Uhh4ZnXܹߟ/_޳gŋWk'55uii8q޾}z.Z [lu舏_Aϟfrr2[~A옶wމb>V.ٟnݺfT^^a[Hoooxxxii)H)Dh4ߏad2QӼa ~π\.ÉpJKK7^ooo)Ю]RSS-'\`0 5E"Qrr2 ))ќza0jխxsNB!!!njtե듒|V 57739Zm0\.`iiI$j\>22USSCX,hwuU[[[\[[QYYIJJJRSSkjj\:99y@fffnnnQQ͛rt^^^NNN]]]qqN۹sӲ>xyyݼy3000..n5XzZH$MTcN HwwD">>>wޕJ:rFcrrrBa\\dzdRS(:.,,lppd2ݸqbMNNLX{zzvޭVZ-#AT.,,,ۯRT* sss(JlZ],N&`\dQ*ZxJe^[b.OLLT*fggG%Ill,D6npss"$ :::Zt]x3DZL&d,KP~_l6G6=='`0222 Łp8ܡCd2988DE=5˖T*U&Q'0?eH$ŋyQdmF  Ɠ'OZmYYjllYQv@X FۿAA7IIIx<@  x󶽽V5 ؐ?nppT*E| VX,Vk41]@ pqqs[[[ddoߚ"##2ŪTJV;::J"߿x;vW/Fc~~OQQdd z>//o۶m8==dfffMb )`u7]x<jk׮) "i&\8LްaÚ<۷o~LL HDgAAA~Xa0׶w^G$44Ԣ(!]' 67څ@v!]. @Bv!]oD\+^zhl A***KK |||3ׯ_/ 0 6IENDB`dot2tex-2.9.0/docs/img/valignmode1.pdf0000666000000000000000000002462312316606077015671 0ustar 00000000000000%PDF-1.6 % 1 0 obj<> endobj 2 0 obj<> endobj 3 0 obj<> endobj 5 0 obj<> endobj 6 0 obj<>/ProcSet[/PDF/Text]>> endobj 7 0 obj<> endobj 8 0 obj<> endobj 9 0 obj[778 0 0 0 0 0 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 556 0 556 444 306 500 556 278 0 0 278 0 556 500 0 0 392 0 389] endobj 10 0 obj<> endobj 11 0 obj<>stream xgXS[%t@z@B)RB$БB(*"MAH"UtDu|4ϜsjGDBZ àr2rWcs9Y, "x$ïzpW鹢xEI `8$ Rj{qH 4=^0( h!@6 44q~p7 ]$)evD~DaШ@2Vogq=_F77 1npݐ^($L@>z)CQ>_v8"H%mgi!LLH42?L%WHt0+)84@:=$Rh7x@ Ac '@ ,/AJ@7ˑ;4VoR\Mrtߐ ߐ$*A I FRAߐ7$ʤM>80,-O'%sj@5e%_ibw$p`tS>,T 9"끗 Q#Q% %&km .$}ۈN|@j&cVXwVoOul]7ӱ\$kkˊVV#bj/+fx+MRM| G 9ie?*K;uLf\T00_\}\Rs]DX _D型 u&mH5Qv,sVt(>R,ZyzO.t@0-tFK>Mq;jA[v^ 9l+>PV3,W}e=? \F8@WpRLմ]s6~cKW"l*ؤyiEvAh\Dz@4Qɝ߀S3?  XylM\'AAꧏo}8muzF[nܤaAV?~*AmN9Iy\ kt>\ J/5"íw}Y l,*#h8 ̦} d>S}PM&/'ǻalOӦƐW]$}HKfo.\[=|s'6:B8¹L6w#,פ#)\'<6ACXtTixctVx^ſ]c&sdk"nn7QBw*o'<Ɩ"rz<Z5):M*KVBnAN)r*ˌ`솭џ)k1fAi%<Tbu;]ۻr^ȫw|2/z`sjE7Va6!׶RG;3ןr&@LTb5 V['9I2jZX9*hlk =hJ/6 RGW]rb 4;0yRd~wMbaMٝ6XMqWQӨ8SD霉Kлl#3vgCsU)~r%e6n+x '>{.GVdCnWn`>YmO5/+Gi%X b n8#.Vd^Gmabzj2& B&_댂A*Tt6+7A[g(&ޥF,4}W@kN9]#=Sےjn[[*[$\ @v n_ڈbtQ1G\ay#Ȥz"#8v׎ث;~Pr@_vM%+[7rue^Nq| XciOGd4hƗ2hy&W`U~򱱃V6l|#Z+O O]l?\Q2 &&џEOUpdݐx6 ~ePxv' U-ٯ݊1RlQO3O|&U>0%Kb2J3_^-V R樂._C8˘=fP<>9'I $vF\ϛZx@uO*xjrWk&c3tfOeǠrxTCq:wes E e5.ijѲN,?zZK߀\o81ͽZmXޛ~PKHBI=&;[c~n*usu 62LNC:D ēB`lKXQt3b]퍭wkW951[JGM+;B̓}uC*01/xXx틢Qɉ3.g3Rc:00' xK?e seI?ҋ=Mҹw @n7ZĮ(ޞ(0BS+6c s~|ɍ*G8&ާm>ͺN-+׵%@I!$U*XnEO|+rY˞LdDnq_<HC![ pB\Mr.d|pI1֮yo\+%eZ^&ep':QdKWZ΋U5Ux.~'.*Όgͭ.#O!崺JmM6+29J#"qҢ<׫jq,c!WCKZevSjtNcclu}\l}Fl<>i5Vd4ybO3$L&=Q~D~fYNI2v~ޣѳ@lC\ %}چ4z+MFb=K J@d`^R֬{MDX{z@c*TYx:ׅlϚz\'%vr{*-gxLԠ't(Vc^6DcUmBEݻ^EKD/P,LKZ-LRmQ! n_x4v]3ctq[~6=vePg]kb8 DZiF.۵c~/JvSj:ZBM9cxYl@)[wl?;zkkoŹv,C.FD??f,:^(:8' N>+q +`7=7O'X )3\#ذL]G:Qij3-GT]b2h}Kg.O)lt iS?"Gu TV\?a3B1@Q=̩.XJgCdVԒpK /('6D;SjuH)[s󉖛WVx^%3Ʀ8Aq+xe!AՕ5k%+wt|7aĵ4pNӪ"ˁ.nn"z#0;=i (M~uvlO-Qu&Q)KЄᘘ-1VxLe*<*b-=+x>2آk~qc쓴~ޘ~voʑ4o(GENeh60<͒" ?^ AS~|u8h ZqB1 z%~u3^BPZ |#B[G8:~wgtK}LrkM=4rVE&Ҙ>x!j ƒΝ0JX9}lEhOR1&bmn|)󏜪ޖ nF~eT6 cVĻLg!fkE vZm pL=xfg~1\ٞMwn";%WoX[xzƒC/KM׽S3?di+(G9^0/V]DŽ Ҟdzy߽PwgѸl" U@)+0eu37DQ *9}P>̓nj#%e@ s[JʴHVg0ݱZ[tEHÍNQWȱ,^l]p8 LT~KJ]UL4giW>mȊO:USx+^*B2mLWcz'MZ|BZyIRdhu&>MGwú]#pd^KʣD:ˣYgZL 9aduчў y/?QCqx yH endstream endobj 12 0 obj<>stream xڥRKO0 WsE$n!N@O&kM;@y8؟ ]'4hŁ Wi rA ,B i!hkn2E,(,wAs Sn%@H% cp-=q'}.ƅ21(dbv8\8Y!\VEQ0.URG;)uH' N,T}qf4$syZF2/-QЪşH ,۾Dl[Ȁ>stream 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 TeX application/pdf uuid:834c4d47-20e2-4fb4-aea0-74ac8a3f8b41 uuid:d2f662e4-6ce5-4955-a622-067be7751f12 MiKTeX pdfTeX-1.30.6 endstream endobj xref 0 14 0000000004 65535 f 0000000016 00000 n 0000000076 00000 n 0000000155 00000 n 0000000000 00000 f 0000000289 00000 n 0000000384 00000 n 0000000440 00000 n 0000000581 00000 n 0000000804 00000 n 0000001002 00000 n 0000001225 00000 n 0000006377 00000 n 0000006861 00000 n trailer <<799270524B7DDB4EB48BAA0DE8A03535>]>> startxref 10208 %%EOF dot2tex-2.9.0/docs/img/valignmode1.png0000666000000000000000000000426712316606077015706 0ustar 00000000000000PNG  IHDR4E pHYs==լtiIDATxYLO-`P LFV#}FE Ar*1!iBbhTj8DbEj .a{}!Fh?=ݝA^UUebbb8Y333ؙL&pX,֮] $OMMME"ׯB䪱Q$S(M).rA> 7nܰnx<AB"(7oB7} ] ] ] w] w] w. wǏkkk+++S߹vږ-[utX;*tȑ?~w7!VVV۷o_}J$=NB355-LNNd22T*1h?ۛlLZZGBBjD\|YDFFpu]ZnmmujjjlvssΥL&UcPPвIyyygwww||LppN 677N. ùZa~~>&&ܜ@ U5!+ E+Wl,w ~`ffWVVD;wuj3(JP.^AP~~޽{׺ ޼ys=>hXXح[ E~~>A^ fvvVT@hjkkgggE"QTTP(LJJ4- `klll $uuuh4& ȷoP촶IIIIOOGՕ@ Q]p㕖z{{FEE]t)$$ \ZQQAR}}}ccc---vvL*>}O*X,sss,}ll A.L`jjjff=055ð\mͣO655X,##V;555>>>99P(p8 2L ^#`&Xkjj%d25]:::?%h4KKKTT*$ Q(ݻ s/^D"???Yx#""tn'"СCÿ1ݱ0d2baupp111a0kW갰<^ioooee%d2 DKpuud2˗/ eddlm|||`uzzz^|fq8܉' e CT~ ER>4Yۇ|8gJJIIqrrj ::EѤ$ggjڜGe. Ł9CQQ[||۷wؑ377pժTJjbcc?~\QQ`ffv}Vp={V]](ՙ...wޭ\RJP(H$˦j4X<==hmmzZ-iiiݕP(BjH"H$R944466EJ5 [Bh4=ك'jz߾}k/{u" 77wt:۔w] w] w] 'A*@2"˳6Dfj'O}iW螞 dbbNzN {IENDB`dot2tex-2.9.0/docs/img/valignmode2.pdf0000666000000000000000000002460612316606077015673 0ustar 00000000000000%PDF-1.6 % 1 0 obj<> endobj 2 0 obj<> endobj 3 0 obj<> endobj 5 0 obj<> endobj 6 0 obj<>/ProcSet[/PDF/Text]>> endobj 7 0 obj<> endobj 8 0 obj<> endobj 9 0 obj[778 0 0 0 0 0 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 556 0 556 444 306 500 556 278 0 0 278 0 556 500 0 0 392 0 389] endobj 10 0 obj<> endobj 11 0 obj<>stream xgXS[%t@z@B)RB$БB(*"MAH"UtDu|4ϜsjGDBZ àr2rWcs9Y, "x$ïzpW鹢xEI `8$ Rj{qH 4=^0( h!@6 44q~p7 ]$)evD~DaШ@2Vogq=_F77 1npݐ^($L@>z)CQ>_v8"H%mgi!LLH42?L%WHt0+)84@:=$Rh7x@ Ac '@ ,/AJ@7ˑ;4VoR\Mrtߐ ߐ$*A I FRAߐ7$ʤM>80,-O'%sj@5e%_ibw$p`tS>,T 9"끗 Q#Q% %&km .$}ۈN|@j&cVXwVoOul]7ӱ\$kkˊVV#bj/+fx+MRM| G 9ie?*K;uLf\T00_\}\Rs]DX _D型 u&mH5Qv,sVt(>R,ZyzO.t@0-tFK>Mq;jA[v^ 9l+>PV3,W}e=? \F8@WpRLմ]s6~cKW"l*ؤyiEvAh\Dz@4Qɝ߀S3?  XylM\'AAꧏo}8muzF[nܤaAV?~*AmN9Iy\ kt>\ J/5"íw}Y l,*#h8 ̦} d>S}PM&/'ǻalOӦƐW]$}HKfo.\[=|s'6:B8¹L6w#,פ#)\'<6ACXtTixctVx^ſ]c&sdk"nn7QBw*o'<Ɩ"rz<Z5):M*KVBnAN)r*ˌ`솭џ)k1fAi%<Tbu;]ۻr^ȫw|2/z`sjE7Va6!׶RG;3ןr&@LTb5 V['9I2jZX9*hlk =hJ/6 RGW]rb 4;0yRd~wMbaMٝ6XMqWQӨ8SD霉Kлl#3vgCsU)~r%e6n+x '>{.GVdCnWn`>YmO5/+Gi%X b n8#.Vd^Gmabzj2& B&_댂A*Tt6+7A[g(&ޥF,4}W@kN9]#=Sےjn[[*[$\ @v n_ڈbtQ1G\ay#Ȥz"#8v׎ث;~Pr@_vM%+[7rue^Nq| XciOGd4hƗ2hy&W`U~򱱃V6l|#Z+O O]l?\Q2 &&џEOUpdݐx6 ~ePxv' U-ٯ݊1RlQO3O|&U>0%Kb2J3_^-V R樂._C8˘=fP<>9'I $vF\ϛZx@uO*xjrWk&c3tfOeǠrxTCq:wes E e5.ijѲN,?zZK߀\o81ͽZmXޛ~PKHBI=&;[c~n*usu 62LNC:D ēB`lKXQt3b]퍭wkW951[JGM+;B̓}uC*01/xXx틢Qɉ3.g3Rc:00' xK?e seI?ҋ=Mҹw @n7ZĮ(ޞ(0BS+6c s~|ɍ*G8&ާm>ͺN-+׵%@I!$U*XnEO|+rY˞LdDnq_<HC![ pB\Mr.d|pI1֮yo\+%eZ^&ep':QdKWZ΋U5Ux.~'.*Όgͭ.#O!崺JmM6+29J#"qҢ<׫jq,c!WCKZevSjtNcclu}\l}Fl<>i5Vd4ybO3$L&=Q~D~fYNI2v~ޣѳ@lC\ %}چ4z+MFb=K J@d`^R֬{MDX{z@c*TYx:ׅlϚz\'%vr{*-gxLԠ't(Vc^6DcUmBEݻ^EKD/P,LKZ-LRmQ! n_x4v]3ctq[~6=vePg]kb8 DZiF.۵c~/JvSj:ZBM9cxYl@)[wl?;zkkoŹv,C.FD??f,:^(:8' N>+q +`7=7O'X )3\#ذL]G:Qij3-GT]b2h}Kg.O)lt iS?"Gu TV\?a3B1@Q=̩.XJgCdVԒpK /('6D;SjuH)[s󉖛WVx^%3Ʀ8Aq+xe!AՕ5k%+wt|7aĵ4pNӪ"ˁ.nn"z#0;=i (M~uvlO-Qu&Q)KЄᘘ-1VxLe*<*b-=+x>2آk~qc쓴~ޘ~voʑ4o(GENeh60<͒" ?^ AS~|u8h ZqB1 z%~u3^BPZ |#B[G8:~wgtK}LrkM=4rVE&Ҙ>x!j ƒΝ0JX9}lEhOR1&bmn|)󏜪ޖ nF~eT6 cVĻLg!fkE vZm pL=xfg~1\ٞMwn";%WoX[xzƒC/KM׽S3?di+(G9^0/V]DŽ Ҟdzy߽PwgѸl" U@)+0eu37DQ *9}P>̓nj#%e@ s[JʴHVg0ݱZ[tEHÍNQWȱ,^l]p8 LT~KJ]UL4giW>mȊO:USx+^*B2mLWcz'MZ|BZyIRdhu&>MGwú]#pd^KʣD:ˣYgZL 9aduчў y/?QCqx yH endstream endobj 12 0 obj<>stream xڝRKO0 WsE$n!N@O&K<ı?;g#b|ǩ-0靆? ">AIY0ι70ATۢ4Xif=wKn'v"f68dpΫpCm}zδu^`h)i1r,2?3')iedG0uVIpD ̡5F6 ;3H$z 1Y٬ښ{ѽGICs(0 YqXo6<7>@AEا"§5azb R:_((YSA?M'\{RXA;4C43䊱d -.4`^PzY{9)ς0$s"o¶Rx2~`Z endstream endobj 13 0 obj<>stream 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 TeX application/pdf uuid:051e20fb-1604-4e07-8b7f-61ed44797ce2 uuid:22282e85-866e-46d0-a0f4-54c9f17459a1 MiKTeX pdfTeX-1.30.6 endstream endobj xref 0 14 0000000004 65535 f 0000000016 00000 n 0000000076 00000 n 0000000155 00000 n 0000000000 00000 f 0000000289 00000 n 0000000384 00000 n 0000000440 00000 n 0000000581 00000 n 0000000804 00000 n 0000001002 00000 n 0000001225 00000 n 0000006377 00000 n 0000006848 00000 n trailer <<264D7D3635F8E640A82455A442235D3E>]>> startxref 10195 %%EOF dot2tex-2.9.0/docs/img/valignmode2.png0000666000000000000000000000446112316606077015703 0ustar 00000000000000PNG  IHDR4E pHYs==լtIDATxmLRǏb*fI, R͑k4rYzr/e-n'l5iɒMR"<q~cά:u=\x%&&677CB&kkk]]]m$Xjױ8P]]j#6}kƒݻwCCCd2vjmmH$)))7n\e4 nܸ公 )^z$ɐuJVVAXv]h @]hv@. v]h Y/bg233%j]R(?vXII?d2WV{'Nѧ iܻwl 'OLHHaX +~6+~\s /,,<|0N7Lb{ff&|>8""brrouَ5* @Dm۶®sFYU{.bŌM6|e2kllpϡCW؆_ cnnnΝu_.76 }}}xs̷o*++_nooo4^zi2\WWg= FJ)))=ھ};BYƋ8FARN???Bjܬյuqo߾T*  "( AT0 >}B>}zł Hbbbuu5 ===w^suqx<ύFR GdddAJ>==NvJE$???//D~~~d)AFGGwe0\򿩋.WhL&+ __պH-[;;ݻRI_t bB!t:7?????_$쁁2PYYҲbr|||L&a\.Ed2544|uYc5J.hamT7or@V\\<55Njj=hQ[[T*5L'&&PL&^fA߿pE1L YRt԰l4 r|rrr%b5;;;<?g֭G6:::-bs jX,FSx> endobj 2 0 obj<> endobj 3 0 obj<> endobj 5 0 obj<> endobj 6 0 obj<>/ProcSet[/PDF/Text]>> endobj 7 0 obj<> endobj 8 0 obj<> endobj 9 0 obj[778 0 0 0 0 0 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 556 0 556 444 306 500 556 278 0 0 278 0 556 500 0 0 392 0 389] endobj 10 0 obj<> endobj 11 0 obj<>stream xgXS[%t@z@B)RB$БB(*"MAH"UtDu|4ϜsjGDBZ àr2rWcs9Y, "x$ïzpW鹢xEI `8$ Rj{qH 4=^0( h!@6 44q~p7 ]$)evD~DaШ@2Vogq=_F77 1npݐ^($L@>z)CQ>_v8"H%mgi!LLH42?L%WHt0+)84@:=$Rh7x@ Ac '@ ,/AJ@7ˑ;4VoR\Mrtߐ ߐ$*A I FRAߐ7$ʤM>80,-O'%sj@5e%_ibw$p`tS>,T 9"끗 Q#Q% %&km .$}ۈN|@j&cVXwVoOul]7ӱ\$kkˊVV#bj/+fx+MRM| G 9ie?*K;uLf\T00_\}\Rs]DX _D型 u&mH5Qv,sVt(>R,ZyzO.t@0-tFK>Mq;jA[v^ 9l+>PV3,W}e=? \F8@WpRLմ]s6~cKW"l*ؤyiEvAh\Dz@4Qɝ߀S3?  XylM\'AAꧏo}8muzF[nܤaAV?~*AmN9Iy\ kt>\ J/5"íw}Y l,*#h8 ̦} d>S}PM&/'ǻalOӦƐW]$}HKfo.\[=|s'6:B8¹L6w#,פ#)\'<6ACXtTixctVx^ſ]c&sdk"nn7QBw*o'<Ɩ"rz<Z5):M*KVBnAN)r*ˌ`솭џ)k1fAi%<Tbu;]ۻr^ȫw|2/z`sjE7Va6!׶RG;3ןr&@LTb5 V['9I2jZX9*hlk =hJ/6 RGW]rb 4;0yRd~wMbaMٝ6XMqWQӨ8SD霉Kлl#3vgCsU)~r%e6n+x '>{.GVdCnWn`>YmO5/+Gi%X b n8#.Vd^Gmabzj2& B&_댂A*Tt6+7A[g(&ޥF,4}W@kN9]#=Sےjn[[*[$\ @v n_ڈbtQ1G\ay#Ȥz"#8v׎ث;~Pr@_vM%+[7rue^Nq| XciOGd4hƗ2hy&W`U~򱱃V6l|#Z+O O]l?\Q2 &&џEOUpdݐx6 ~ePxv' U-ٯ݊1RlQO3O|&U>0%Kb2J3_^-V R樂._C8˘=fP<>9'I $vF\ϛZx@uO*xjrWk&c3tfOeǠrxTCq:wes E e5.ijѲN,?zZK߀\o81ͽZmXޛ~PKHBI=&;[c~n*usu 62LNC:D ēB`lKXQt3b]퍭wkW951[JGM+;B̓}uC*01/xXx틢Qɉ3.g3Rc:00' xK?e seI?ҋ=Mҹw @n7ZĮ(ޞ(0BS+6c s~|ɍ*G8&ާm>ͺN-+׵%@I!$U*XnEO|+rY˞LdDnq_<HC![ pB\Mr.d|pI1֮yo\+%eZ^&ep':QdKWZ΋U5Ux.~'.*Όgͭ.#O!崺JmM6+29J#"qҢ<׫jq,c!WCKZevSjtNcclu}\l}Fl<>i5Vd4ybO3$L&=Q~D~fYNI2v~ޣѳ@lC\ %}چ4z+MFb=K J@d`^R֬{MDX{z@c*TYx:ׅlϚz\'%vr{*-gxLԠ't(Vc^6DcUmBEݻ^EKD/P,LKZ-LRmQ! n_x4v]3ctq[~6=vePg]kb8 DZiF.۵c~/JvSj:ZBM9cxYl@)[wl?;zkkoŹv,C.FD??f,:^(:8' N>+q +`7=7O'X )3\#ذL]G:Qij3-GT]b2h}Kg.O)lt iS?"Gu TV\?a3B1@Q=̩.XJgCdVԒpK /('6D;SjuH)[s󉖛WVx^%3Ʀ8Aq+xe!AՕ5k%+wt|7aĵ4pNӪ"ˁ.nn"z#0;=i (M~uvlO-Qu&Q)KЄᘘ-1VxLe*<*b-=+x>2آk~qc쓴~ޘ~voʑ4o(GENeh60<͒" ?^ AS~|u8h ZqB1 z%~u3^BPZ |#B[G8:~wgtK}LrkM=4rVE&Ҙ>x!j ƒΝ0JX9}lEhOR1&bmn|)󏜪ޖ nF~eT6 cVĻLg!fkE vZm pL=xfg~1\ٞMwn";%WoX[xzƒC/KM׽S3?di+(G9^0/V]DŽ Ҟdzy߽PwgѸl" U@)+0eu37DQ *9}P>̓nj#%e@ s[JʴHVg0ݱZ[tEHÍNQWȱ,^l]p8 LT~KJ]UL4giW>mȊO:USx+^*B2mLWcz'MZ|BZyIRdhu&>MGwú]#pd^KʣD:ˣYgZL 9aduчў y/?QCqx yH endstream endobj 12 0 obj<>stream xڝSMO0 W|H&zC6!8ml;]?gu_}B..Bo^U;T$BZ ' ρ$r  gHt3Txs|3IhlOIJ2.G8 HAjf0gk*/Ƽŧ ~Qri?FޒJi1ypMD*RxKcs<9j%ۮD mNm<ׇw=Vwݲvdҩfɇ~wFO_hl*0l~> 7GQQAdTt<E|rZH:B./x7;~4ti5- :_b endstream endobj 13 0 obj<>stream 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 2007-11-05T19:20+01:00 TeX application/pdf uuid:13465ae8-bc4d-4102-a808-afbc38acad94 uuid:3b8e26f5-3978-4093-ad64-2da9cb173d1f MiKTeX pdfTeX-1.30.6 endstream endobj xref 0 14 0000000004 65535 f 0000000016 00000 n 0000000076 00000 n 0000000155 00000 n 0000000000 00000 f 0000000289 00000 n 0000000384 00000 n 0000000440 00000 n 0000000581 00000 n 0000000804 00000 n 0000001002 00000 n 0000001225 00000 n 0000006377 00000 n 0000006843 00000 n trailer <<7E314C9FBEAF514BA3BDA5EB5A91F088>]>> startxref 10190 %%EOF dot2tex-2.9.0/docs/img/valignmode3.png0000666000000000000000000000433512316606077015704 0ustar 00000000000000PNG  IHDR4: pHYs==լtIDATxLR G 35e"?ieKe֖k̥٬Κk֌R?2 udeMc"`]CH׵OW3yu=s<{ιȑ#"@`MMMcBHLLZnp88@|||xx>wmmݻ477+ʠ ljPEEEVVVff˚X,3ܹsgrg>P*Dyy9k .@ Yu !PT!*@B PBU@B !BT!U*@ ~bEh4]^oooNMM%jV`PJ''jvvRTƅ*`vI&YPP000hׯ_[`0H$ҳg~.Ik__%0sjھ#2F[l6t@Zc;9dS94! pvvvݺumX__=>>>D"qY-(Wb76hXmsJJJLLJU_Vw}e 77B~mݺQ.x;vl%f555fffhRHTRRڪR2͛,K.yT:99._[TTWᑖ*ܱcGrrkΞ=wޕiZQH$ٶ[lAQD"?T*Eѹv ŋ/bqRRRll|@&A@TTݻwx<^]]ܜG"zJe&&&FFFWY(RԹUݐ/'P NxՏ9E:BDRCC*͐r=Jq8\EEÇ5/K$1?(po}e+HC./TS" /Z...\.WTVVn۶m)DZ֑Rt׮]2ŋ c%EF07J d2&ɴpNNN -f߾}VRb흙333D"KRmذa%fiQZmq1 S*fAoߪ{zz=z$1 3jzlllddDٶZtnnn'N,7 PBTZ,>$-B <~sjbҥKꉉ wJ|銊 z@ yqBa2 Bܥ HJJh4(g48NOOP(tiiiFN;w7.~[ db0VUT&''L&*oM >}G6a͞Z$bxx&ɓ'999$ʼ_ IR@PPP*a2A0>>.  Eaa-fJe||$ɌlCñut:}W- % jIeeesp$Z%..]dׯdu{{{WVVvwwKRgg+Wx{{@BiY,ł[B !BT!U*@ !PT!*@B PBho߾ZZ֭[L0[vE6mtZD"!kQQQ6IENDB`dot2tex-2.9.0/docs/index.rst0000666000000000000000000000214612335465553014054 0ustar 00000000000000dot2tex - A Graphviz to LaTeX converter ======================================= :Author: Kjell Magne Fauske :Version: 2.9.0 :Licence: MIT_ The purpose of dot2tex is to give graphs generated by Graphviz_ a more LaTeX friendly look and feel. This is accomplished by converting xdot output from Graphviz_ to a series of PSTricks_ or `PGF/TikZ`_ commands. This approach allows: * Typesetting labels with LaTeX, allowing mathematical notation * Using native PSTricks and PGF/TikZ commands for drawing arrows * Using backend specific styles to customize the output User's guide ============ .. toctree:: :maxdepth: 2 :numbered: installation_guide usage_guide customization_guide tipsandtricks module_guide Additional notes ================ .. toctree:: :maxdepth: 2 Change log license Acknowledgements ================ The dot parser used by dot2tex is based on code from the pydot_ project. Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` .. include:: common.incdot2tex-2.9.0/docs/installation_guide.rst0000666000000000000000000000444612335455514016624 0ustar 00000000000000Installation guide ================== Dependencies ------------ The following software and modules are required to run dot2tex: - Python_ 2.7 - pyparsing_. Version 1.4.8 or later is recommended. - Graphviz_. A recent version is required. - preview_. A LaTeX package for extracting parts of a document. A free-standing part of the `preview-latex`_/`AUCTeX`_ bundle. - `PGF/TikZ`_ version 2.0 or later. Users have reported problems using dot2tex with old versions of pyparsing and Graphviz. A natural companion to dot2tex is `the dot2texi LaTeX package `_ for embedding graphs directly in your LaTeX source code. Dot2tex was developed and tested using Python_ 2.7. Using pip or easy_install ------------------------- The easiest way to install dot2tex is to use `pip`_ (recommended) or `easy_install`_:: $ pip install dot2tex or `easy_install`_:: $ easy_install dot2tex If you are on Linux or Mac OS X you may have to call `pip`_ or `easy_install`_ using ``sudo``:: $ sudo pip install dot2tex The commands will locate dot2tex and download it automatically. Note that documentation and examples are not installed by default. `Pip` and `easy_install`_ will also create a wrapper script or EXE file for you and install dependencies if necessary. .. _download: https://pypi.python.org/pypi/dot2tex#downloads Binary packages --------------- Binary packages are available for Debian_ and OpenSUSE_. From source ----------- Download a zip or a tarball from the download_ page. Unpack the file to a directory and run ``python`` on the ``setup.py`` file:: $ python setup.py install This will create a dot2tex module in your Python modue directory and a wrapper script in your ``SCRIPTS`` directory. Note that a few warnings will be displayed. You can safely ignore them. The warnings are shown because there is some extra information in the ``setup.py`` file that distutils does not understand. Development version ------------------- The development version of ``dot2tex`` is `hosted on GitHub `_. To get the code you can use the following command:: git clone https://github.com/kjellmf/dot2tex.git .. _Debian: http://packages.qa.debian.org/d/dot2tex.html .. _OpenSUSE: https://build.opensuse.org/package/show/home:jimfunk/dot2tex .. include:: common.incdot2tex-2.9.0/docs/license.rst0000666000000000000000000000061312330457277014363 0ustar 00000000000000License ======= Dot2tex is licensed under the MIT licence. It basically means that you can do whatever you want with it as long as you keep the copyright license in all copies or substantial portions of the software. See :ref:`below ` for details. Authors ------- .. include:: ../AUTHORS .. _license_details: The dot2tex license ------------------- .. include:: ../LICENSEdot2tex-2.9.0/docs/make.bat0000777000000000000000000001064112325531241013605 0ustar 00000000000000@ECHO OFF REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set BUILDDIR=_build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. singlehtml to make a single large HTML file echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. devhelp to make HTML files and a Devhelp project echo. epub to make an epub echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. text to make text files echo. man to make manual pages echo. changes to make an overview over all changed/added/deprecated items echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "singlehtml" ( %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\dot2tex.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\dot2tex.ghc goto end ) if "%1" == "devhelp" ( %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp if errorlevel 1 exit /b 1 echo. echo.Build finished. goto end ) if "%1" == "epub" ( %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub if errorlevel 1 exit /b 1 echo. echo.Build finished. The epub file is in %BUILDDIR%/epub. goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex if errorlevel 1 exit /b 1 echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "text" ( %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text if errorlevel 1 exit /b 1 echo. echo.Build finished. The text files are in %BUILDDIR%/text. goto end ) if "%1" == "man" ( %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man if errorlevel 1 exit /b 1 echo. echo.Build finished. The manual pages are in %BUILDDIR%/man. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes if errorlevel 1 exit /b 1 echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck if errorlevel 1 exit /b 1 echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest if errorlevel 1 exit /b 1 echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) :end dot2tex-2.9.0/docs/Makefile0000666000000000000000000001076212325531245013645 0ustar 00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " text to make text files" @echo " man to make manual pages" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/dot2tex.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/dot2tex.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/dot2tex" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/dot2tex" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." make -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." dot2tex-2.9.0/docs/module_guide.rst0000666000000000000000000000546512334474741015414 0ustar 00000000000000.. _using-dot2tex-as-a-module: Using dot2tex as a module ========================= It is possible to load dot2tex as a module for use in other Python programs. Here is a basic example: .. sourcecode:: python import dot2tex testgraph = """ digraph G { a -> b -> c -> a; } """ texcode = dot2tex.dot2tex(testgraph, format='tikz', crop=True) The ``dot2tex`` function is the main interface: .. sourcecode:: python dot2tex(dotsource,**kwargs) It takes the following input arguments: ====================== =================================================== Argument Description ====================== =================================================== ``dotsource`` A string containing a DOT or XDOT graph. ``**kwargs`` An arbitrary number of conversion options passed as keyword arguments ====================== =================================================== The function returns the resulting LaTeX code as a string. The supported options are the same as the :ref:`command line options ` (long version). Here are a few examples: .. sourcecode:: python import dot2tex as d2t texcode = d2t.dot2tex(testgraph, format='tikz', crop=True) texcode = d2t.dot2tex(testgraph, preproc=True,figonly=True) texcode = d2t.dot2tex(testgraph, debug=True) Option values are either strings or booleans. Note that some of the command line options are not relevant when using dot2tex as a module. To specify a template you can use the ``template`` option like this: .. sourcecode:: python import dot2tex mytemplate = "<>" texcode = dot2tex.dot2tex(graph, template = mytemplate) .. _module-debugging: Debugging --------- You can set ``debug=True`` to create a detailed log useful for debugging. To retrieve the content of the log you can use the ``get_logstream`` function. It will return a ``StringIO`` instance. You can then use the ``getvalue()`` class method to get the actual text. Example: .. sourcecode:: python import dot2tex texcode = dot2tex.dot2tex(testgraph, debug=True) logstream = dot2tex.get_logstream() print logstream.getvalue() .. _positions-output-format: The ``positions`` output format ------------------------------- When you use dot2tex as a module you have access to the special ``positions`` output format if you use ``format=positions``. The ``dot2tex`` function will then return dictionary with node name as key and a (x, y) tuple with the center position of the node as value: .. sourcecode:: python >>> import dot2tex >>> testgraph = """ ... digraph G { ... a -> b -> c -> a; ... } """ >>> dot2tex.dot2tex(testgraph, format='positions') {'a': [54, 162], 'b': [27, 90], 'c': [54, 18]} dot2tex-2.9.0/docs/roadmap.rst0000666000000000000000000000017712333736415014366 0ustar 00000000000000Road map ======== The dot2tex project is relatively old. The first release was back in 2006 3.0 --- - Python 3.0 support dot2tex-2.9.0/docs/tipsandtricks.rst0000666000000000000000000001710012330511103015575 0ustar 00000000000000Tips and tricks =============== Fonts ----- No font information in the DOT file is preserved by dot2tex. However, there are several ways of modifying the generated LaTeX code to achieve some control of fonts and font sizes. - Modifying the templates. - Using the ``d2tdocpreamble`` and ``d2tfigpreamble`` attributes or command line options. - Using the ``lblstyle`` attribute. To increase the font size you can for instance insert a ``\Huge`` command in the figure preamble:: $ dot2tex -tmath --figpreamble="\Huge" ex1.dot > ex1huge.tex .. figure:: img/ex1huge.* :alt: Setting label font size to \Huge Debugging --------- When making your own templates it is easy to make mistakes, and LaTeX markup in graphs may fail to compile. To make it easier to find errors, invoke dot2tex with the ``--debug`` option:: $ dot2tex --preproc --debug test.dot A dot2tex.log file will then be generated with detailed information. In the log file you will find the generated LaTeX code, as well as well as the compilation log. Be consistent ------------- Be aware of differences between the template you use for preprocessing and code used to generate final output. This is especially important if you use the ``--figonly`` option and include the code in a master document. If a 10pt font is used during preprocessing, the result may not be optimal if a 12pt font is used in the final output. Example. A graph is generated with:: $ dot2tex --preproc -tmath --nominsize ex1.dot > ex1tmp.dot Running through dot2tex again with:: $ dot2tex --figpreamble="\Huge" ex1tmp.dot > ex1huge.tex gives labels that do not fit properly inside the nodes. .. figure:: img/consistent.* :alt: Inconsistence between preproc mode and output mode Postprocessing -------------- The output from Graphviz and dot2tex is not perfect. Manual adjustments are sometimes necessary to get the right results for use in a publication. For final and cosmetic adjustments, it is often easier to edit the generated code than to hack the dot source. This is especially true when using the ``tikz`` output format. Use the special graph attributes -------------------------------- Dot2tex has many options for customizing the output. Sometimes is is impractical or boring to type the various options at the command line each time you want to create the graph. To avoid this, you can use the special graph attributes. The ``d2toptions`` attribute is handy because it is interpreted as command line options. So instead of typing:: $ dot2tex -tikz -tmath --tikzedgelabels ex1.dot each time, use ``d2toptions`` like this: .. sourcecode:: dot digraph G { d2toptions ="-tikz -tmath --tikzedgelabels"; ... } .. _use-tikz-format: Use the tikz output format for maximum flexibility -------------------------------------------------- The difference between the ``pgf`` and ``tikz`` output formats is best shown with an example. Consider the following graph: .. sourcecode:: dot graph G { mindist = 0.5; node [shape=circle]; a -- b -- c -- a; } Rendering the graph using ``circo`` and the ``pgf`` and ``tikz`` output formats:: $ circo -Txdot simple.dot | dot2tex -tmath -fpgf -s $ circo -Txdot simple.dot | dot2tex -tmath -ftikz -s gives visually different graphs: .. figure:: img/pgftikzsimple.* :alt: Difference between pgf and tikz output format However, the main difference is in the generated code. Here is the ``pgf`` output: .. sourcecode:: latex % Edge: a -- b \draw [] (19bp,38bp) -- (19bp,60bp); % Edge: b -- c \draw [] (35bp,70bp) -- (55bp,58bp); % Edge: c -- a \draw [] (55bp,40bp) -- (35bp,28bp); % Node: a \begin{scope} \pgfsetstrokecolor{black} \draw (19bp,19bp) ellipse (18bp and 19bp); \draw (19bp,19bp) node {$a$}; \end{scope} % Node: b \begin{scope} \pgfsetstrokecolor{black} \draw (19bp,79bp) ellipse (18bp and 19bp); \draw (19bp,79bp) node {$b$}; \end{scope} % Node: c \begin{scope} \pgfsetstrokecolor{black} \draw (71bp,49bp) ellipse (18bp and 19bp); \draw (71bp,49bp) node {$c$}; \end{scope} Compare the above code with the ``tikz`` output: .. sourcecode:: latex \node (a) at (19bp,19bp) [draw,circle,] {$a$}; \node (b) at (19bp,79bp) [draw,circle,] {$b$}; \node (c) at (71bp,49bp) [draw,circle,] {$c$}; \draw [] (a) -- (b); \draw [] (b) -- (c); \draw [] (c) -- (a); The code is much more compact and it is quite easy to modify the graph. .. _dot2texi_package: The dot2texi LaTeX package -------------------------- The dot2texi package allows you to embed DOT graphs directly in you LaTeX document. The package will automatically run ``dot2tex`` for you and include the generated code. Example: .. sourcecode:: latex \documentclass{article} \usepackage{dot2texi} \usepackage{tikz} \usetikzlibrary{shapes,arrows} \begin{document} \begin{dot2tex}[neato,options=-tmath] digraph G { node [shape="circle"]; a_1 -> a_2 -> a_3 -> a_4 -> a_1; } \end{dot2tex} \end{document} When the above code is run through LaTeX, the following will happen is shell escape is enabled: - The graph is written to file. - ``dot2tex`` is run on the DOT file. - The generated code is included in the document. The whole process is completely automated. The generated graph will look like this: .. figure:: img/dot2texiex1.* :alt: Graph generated with dot2texi The ``codeonly`` option is useful in conjunction with ``dot2texi``, especially when used with the ``tikz`` output format. Here is an example that shows how to annotate a graph: .. sourcecode:: latex \documentclass{article} \usepackage{tikz} \usetikzlibrary{arrows,shapes} \usepackage{dot2texi} \begin{document} % Define layers \pgfdeclarelayer{background} \pgfdeclarelayer{foreground} \pgfsetlayers{background,main,foreground} % The scale option is useful for adjusting spacing between nodes. % Note that this works best when straight lines are used to connect % the nodes. \begin{tikzpicture}[>=latex',scale=0.8] % set node style \tikzstyle{n} = [draw,shape=circle,minimum size=2em, inner sep=0pt,fill=red!20] \begin{dot2tex}[dot,tikz,codeonly,styleonly,options=-s -tmath] digraph G { node [style="n"]; A_1 -> B_1; A_1 -> B_2; A_1 -> B_3; B_1 -> C_1; B_1 -> C_2; B_2 -> C_2; B_2 -> C_3; B_3 -> C_3; B_3 -> C_4; } \end{dot2tex} % annotations \node[left=1em] at (C_1.west) (l3) {Level 3}; \node at (l3 |- B_1) (l2){Level 2}; \node at (l3 |- A_1) (l1) {Level 1}; % Draw lines to separate the levels. First we need to calculate % where the middle is. \path (l3) -- coordinate (l32) (l2) -- coordinate (l21) (l1); \draw[dashed] (C_1 |- l32) -- (l32 -| C_4); \draw[dashed] (C_1 |- l21) -- (l21 -| C_4); \draw[<->,red] (A_1) to[out=-120,in=90] (C_2); % Highlight the A_1 -> B_1 -> C_2 path. Use layers to draw % behind everything. \begin{pgfonlayer}{background} \draw[rounded corners=2em,line width=3em,blue!20,cap=round] (A_1.center) -- (B_1.west) -- (C_2.center); \end{pgfonlayer} \end{tikzpicture} \end{document} .. figure:: img/dot2texiex2.* :alt: Annotated graph .. note:: If you don't want to include the dot directly in your document, you can use the ``\input{..}`` command. See the section :ref:`external_dot_files` for more details. dot2tex-2.9.0/docs/usage_guide.rst0000666000000000000000000004034012334474654015225 0ustar 00000000000000=========== Usage guide =========== .. _invoking-dot2tex: Invoking dot2tex from the command line ====================================== Syntax:: dot2tex [options] [inputfile] Input data is read from standard input if no input file is specified. Output is written to standard output unless a destination file is set with the ``-o`` option. Dot2tex can also be loaded as a module for use in other Python program. See the section :ref:`using-dot2tex-as-a-module` for more details. Dot2tex relies on the `xdot format`_ generated by Graphviz. Dot2tex will automatically run ``dot`` on the input data if it is in the plain dot format. If you want to use other layout tools like ``neato`` and ``circo``, use the ``--prog`` option. You can pass options to the layout program with the ``--progoptions`` option. .. _xdot format: http://www.graphviz.org/doc/info/output.html#d:xdot A few examples on how to invoke dot2tex: Read a file from standard input and write the result to the file ``test.tex``:: $ dot -Txdot test.dot | dot2tex > test.tex $ neato -Txdot -Gstart=rand test.dot | dot2tex > test.tex Load ``test.dot``, convert it to xdot format and output the resulting graph using the ``tikz`` output format to ``testpgf.tex``:: $ dot2tex -ftikz test.dot > testtikz.tex The same as above, but use neato for graph layout:: $ dot2tex --prog=neato -ftikz test.dot > testtikz.tex .. admonition:: Invoking dot2tex If you are on Windows and have installed dot2tex from source, you have to type ``python dot2tex`` to invoke the program. .. _command-line-options: Command line options ==================== The following options are available: -h, --help Display help message. -f fmt, --format fmt Set output format. The following values of `fmt` are supported: ``pgf`` PGF/TikZ. Default. ``pstricks`` or ``pst`` Use PSTricks. ``tikz`` TikZ format. -t mode, --texmode mode Text mode. Specify how text is converted. ``verbatim`` Text is displayed with all special TeX chars escaped (default). ``math`` Output all text in math mode $$. ``raw`` Output text without any processing. Note that you can locally override the text mode by assigning a special ``texlbl`` attribute to a graph element, or by using the ``texmode`` attribute. See :ref:`labels` for details. -s, --straightedges Draw edges using straight lines. Graphviz uses bezier curves to draw straight edges. Use this option to force the use of line to operations instead of curves. Does not work in ``duplicate`` mode. -o filename, --output filename Write output to file. -d, --duplicate Duplicate the xdot output. Uses the drawing information embedded in the xdot output to draw nodes and edges. --template filename Use template from file. See the :ref:`templates` section for more details. -V, --version Print version information and exit. -w, --switchdraworder Switch drawing order of nodes and edges. By default edges are drawn before nodes. -c, --crop Use ``preview.sty`` to crop the graph. Currently only implemented for the ``pgf`` and ``tikz`` output format. --figonly Output the graph without a document preamble. Useful if the graph is to be included in a master document. --codeonly Output only the drawing commands, without wrapping it in a ``tikzpicture`` or ``pspicture`` environment. Useful when used with the dot2texi package. --preproc Preprocess the graph through LaTeX using the preview_ package. Will generate a new dot file where the height and widths of nodes and edge labels are set based on the results from preview_. --autosize Preprocess the graph and run Graphviz on the output. Equivalent to:: $ dot2tex --preproc ex1.dot | dot2tex --prog program Set graph layout program to use when the input is in plain dot format. Allowed values: - ``dot`` (default) - ``neato`` - ``circo`` - ``fdp`` - ``twopi`` --progoptions options Pass options to graph layout program. --usepdflatex Use pdflatex instead of latex for preprocessing the graph. --nominsize Ignore minimum node sizes during preprocessing. --valignmode mode Vertical alignment of node labels, where ``mode`` can have the values: ``center`` Labels are placed in the middle of the node (default). ``dot`` Use the coordinate given by the xdot output from Graphviz. (``pgf`` and ``pstricks`` only) --alignstr Used to pass a default alignment string to the PSTricks ``\rput`` command:: \rput[alignstr] ... Only works for the PSTricks format. PGF/TikZ users can instead pass an ``anchor=...`` style using the ``graphstyle`` option. --tikzedgelabels Bypass Graphviz' edge label placement and use PGF/TikZ instead (``tikz`` and ``pgf`` formats only). --styleonly Use TikZ only styles when drawing nodes. No ``draw`` or ``shape`` option is added (``tikz`` format only). --nodeoptions tikzoptions Wrap node code in a ``scope`` environment with ``tikzoptions`` as parameter (``tikz`` format only). --edgeoptions tikzoptions Wrap edge code in a ``scope`` environment with ``tikzoptions`` as parameter (``tikz`` format only). --debug Write detailed debug information to the file dot2tex.log in the current directory. --pgf118 Generate code compatible with PGF 1.18 and earlier. --pgf210 Generate code compatible with PGF 2.10. The following options are used by the output :ref:`templates `. -e encoding, --encoding encoding Set text encoding. Supported encodings are: - ``utf8`` - ``latin1`` --docpreamble TeXcode Insert TeX code in the document preamble. --figpreamble TeXcode Insert TeX code in the figure preamble. --figpostamble TeXcode Insert TeX code in the figure postamble. --graphstyle style Sets the ``<>`` tag. --margin margin Set margin around the graph when using ``preview.sty``. ``margin`` must be a valid TeX unit. By default ``margin`` is set to ``0pt``. .. _output-formats: Output formats ============== The output format is specified with the ``-f fmt`` or ``--format fmt`` command line option. The following output formats are available form the command line. Additionally there is a special :ref:`positions output format ` only available when using dot2tex as Python module. .. _output-fomat-pgf: PGF --- This is the default output format. Generates code for the `Portable Graphics Format`_ (PGF) package . Mixes both PGF and TikZ commands. .. _Portable Graphics Format: http://www.ctan.org/pkg/pgf .. _output-fomat-pstricks: PSTricks -------- Generates code for the PSTricks_ package. .. _output-fomat-tikz: TikZ ---- The ``tikz`` output format also uses the PGF and TikZ package. However, it relies on TikZ node and edge mechanisms to draw nodes and edges, instead of using the drawing information provided by Graphviz. This allows much tighter integration with TikZ and in some cases prettier results. Advantages of the ``tikz`` format: - The generated code is very compact and clean. - Easy to modify the output. - Labels will fit inside nodes without preprocessing. - Full access to the power of PGF and TikZ. You can find more details in the section: :ref:`use-tikz-format`. .. note:: The ``tikz`` output format requires detailed knowledge of the PGF and TikZ package. Some of Graphviz' features will not work with this output format. .. _labels: Labels ====== The main purpose of dot2tex is to allow text and labels to be typeset by LaTeX. Labels are treated differently according to the current TeX mode: ``verbatim`` Text is displayed with all special TeX chars escaped (default). ``math`` Output all text in math mode $$. ``raw`` Output text without any processing. The TeX mode can be set on the command line using the ``-t`` option. It can also be set locally in a graph by using the special ``texmode`` attribute. You can also use the special ``texlbl`` attribute on a graph element, which is interpreted as ``raw`` TeX string. If a ``texlbl`` attribute is found, it will be used regardless of the current TeX mode. It also has precedence over the ``label`` attribute. .. note:: The ``\`` character needs to be escaped with ``\\`` if used in the ``label`` attribute. Note that only position and alignment information is converted. Any font information is lost. This may result in some odd behavior. Some tweaking may be necessary to get it right. See the section :ref:`vertical-label-alignment` for tips. .. note:: If you use ``texlbl`` for edges, you have to provide a dummy ``label`` attribute. Otherwise Graphviz will not generate the necessary code for placing edge labels. Label examples -------------- Consider the following graph: .. sourcecode:: dot digraph G { a_1-> a_2 -> a_3 -> a_1; } Converting the graph using:: $ dot2tex -tmath ex1.dot > ex1.tex gives the result shown in the left hand side of the figure below. The default rendering is shown to the right. Using the ``raw`` mode will result in a compilation error because of the underscore character. .. figure:: img/ex1comb.* :alt: Difference between math and verbatim mode Example of using ``texlbl``: .. sourcecode:: dot digraph G { a_1 [texlbl="$\frac{\gamma}{x^2}$"]; a_1-> a_2 -> a_3 -> a_1; } .. figure:: img/ex2.* :alt: Using the special texlbl attribute Example of using the ``texmode`` attribute: .. sourcecode:: dot digraph G { a_1 [texlbl="$\frac{\gamma}{2x^2+y^3}$"]; a_1 -> a_2 -> a_3 -> a_1 node [texmode="math"]; a_1 -> b_1 -> b_2 -> a_3; b_1 [label="\\frac{\\gamma}{x^2}"]; node [texmode="verbatim"] b_4 [label="\\beta"] a_3 -> b_4 -> a_1; } .. figure:: img/texmode.* :alt: Using the special texmode attribute The above example shows two important things: - The backslash ``\`` character needs to be written as ``\\`` in the ``label`` attribute. - Using LaTeX markup in the ``label`` attribute gives oversized nodes. A workaround is to use the ``texlbl`` attribute, and manually pad the ``label`` attribute to an appropriate length. A much better solution is to use the ``--preproc`` option. Preprocessing the above graph with:: $ dot2tex --preproc ex4.dot | dot2tex > ex4.tex gives correctly sized nodes: .. figure:: img/texmodeb.* :alt: Preprocessing the graph to get correct node sizes. Read more about preprocessing in the `Preprocessing graphs`_ section. .. _vertical-label-alignment: Vertical label alignment ------------------------ Dot2tex relies on the xdot format for drawing nodes and placing node labels. The fonts that Graphviz and LaTeX use are different, so using the label coordinates from Graphviz does not always give good results. Dot2tex's default behavior is to place node labels in the middle of the node. However, you can change this behavior by setting the ``valignmode`` option to ``dot``. Labels will then be placed using the coordinates supplied by Graphviz. Here is an example graph where it is necessary to use the ``valignmode`` option: .. sourcecode:: dot digraph G { node0 [label="{left|right}", shape=record]; node1 [shape=rectangle, label="node 1"]; node0 -> node1; rankdir=LR; } For record nodes dot2tex has to use Graphviz coordinates. This is shown in the following figure rendered with:: $ dot2tex valign.dot .. figure:: img/valignmode0.* :alt: Vertical alignment for record shapes To get the same vertical alignment for both nodes, you can use:: $ dot2tex --valignmode=dot valign.dot .. figure:: img/valignmode1.* :alt: Vertical alignment with --valignmode=dot Now the labels are aligned, but the labels are still placed too low. The reason for this is that both PSTricks and PGF by default centers text vertically on the current coordinate. The alignment point should in this case be set to the baseline. For PGF/TikZ you can use the ``--graphstyle`` option like this:: $ dot2tex --valignmode=dot --graphstyle="anchor=base" valign.dot PSTricks users have to use the ``--alingstr`` option:: $ dot2tex --valignmode=dot --alignstr=B valign.dot .. figure:: img/valignmode2.* :alt: blabla The result is better, but to get even better alignment you have to change the node font size. Graphviz' default font size is 14pt, which is larger than the typical 10pt or 11pt used in LaTeX documents. By changing the node font size to 10pt we can trick Graphviz to give us a better alignment: .. sourcecode:: dot digraph G { node [fontsize=10]; node0 [label="{left|right}", shape=record]; node1 [shape=rectangle, label="node 1"]; node0 -> node1; rankdir=LR; } .. figure:: img/valignmode3.* :alt: blabla .. _preprocessing-graphs: Preprocessing graphs ==================== A problem with using LaTeX for typesetting node and edge labels, is that Graphviz does not know the sizes of the resulting labels. To circumvent this problem, you can use the ``--preproc`` or ``--autosize`` option. The following will then happen: 1. Node and edge labels are extracted and the corresponding LaTeX markup is saved to a temporary file. 2. The file is typeset with LaTeX and information about sizes is extracted using the preview_ package. 3. A new dot file is created where node and edge label sizes are set using the dot language's ``width`` and ``height`` attributes. 4. The generated graph can now be processed using Graphviz and dot2tex. Label sizes will now correspond with the output from LaTeX. Widths and heights of nodes are handled the in same way as Graphviz does it. The ``width`` and ``height`` attributes set the minimum size of the node. If label size + margins is larger that the minimum size, the node size will grow accordingly. Default values are width=0.75in and height=0.5in. Node margins are set using the `margin`_ attribute. This also works for edge labels. ``margin==value`` sets both the horizontal and vertical margin to ``value``, ``margin=="hvalue,vvalue"`` sets the horizontal and vertical margins respectively. .. note:: All sizes are given in inches. If you do not want a minimum node size, you can use the '--nominsize' option. Dot2tex will then use size of label + margins as node size. Nodes with ``fixedsize=True`` attributes are not processed. Limitations: - Does not work for HTML-labels - Does not work for record-based nodes .. _preprocessing-examples: Examples -------- Consider the following graph: .. sourcecode:: dot digraph G { node [shape=circle]; a_1 [texlbl="$x^2+\frac{\sin y}{y^2+\cos \beta}+\gamma_3$"]; a_1 -> a_2 [label=" ", texlbl="$x_1+x_3^2+z+c+v~~$"]; a_2 -> a_1; } Rendered with:: $ dot2tex -tmath example.dot > example.tex the graph will look like this: .. figure:: img/preproc1a.* :alt: Graph with oversized edge and node labels You could improve the result by adding a longer ``label`` attribute or setting a fixed width. A better solution is to preprocess the graph like this:: $ dot2tex -tmath --preproc example.dot > exampletmp.dot $ dot2tex exampletmp.dot > example.tex You can also chain the commands:: $ dot2tex -tmath --preproc example.dot | dot2tex > example.tex A shorter alternative is:: $ dot2tex -tmath --autosize example.dot > example.tex The resulting graph now has correctly sized nodes and edge labels: .. figure:: img/preproc1b.* :alt: Graph with preprocessed labels Modifying node sizes using the ``widht/height`` and ``margin`` attributes can be a bit counterintuitive. A few examples will hopefully make it clearer: .. sourcecode:: dot digraph G { node [shape=rectangle]; a_1 [margin="0"]; a_2 [margin="0.7,0.4"]; a_3 [width="2",height="1"]; a_1-> a_2 -> a_3 -> a_1; } Processing the graph with:: $ dot2tex -tmath --preproc example.dot | dot2tex > example.tex gives .. figure:: img/nodewidth1.* :alt: Graph with preprocessed labels Setting the margin of ``a_1`` to 0 has no effect because of the minimum node width. Processing the graph with:: $ dot2tex -tmath --preproc --nominsize example.dot | dot2tex > example.tex gives a different graph, where only label widths and margins affect the node sizes: .. figure:: img/nodewidth2.* :alt: Graph with preprocessed labels .. _margin: http://graphviz.org/doc/info/attrs.html#d:margin .. include:: common.inc dot2tex-2.9.0/dot2tex/0000777000000000000000000000000012335470751012645 5ustar 00000000000000dot2tex-2.9.0/dot2tex/dot2tex0000666000000000000000000000013112325531157014151 0ustar 00000000000000#!/usr/bin/python from dot2tex.dot2tex import main if __name__ == '__main__': main()dot2tex-2.9.0/dot2tex/dot2tex.py0000666000000000000000000032214312335465553014621 0ustar 00000000000000# -*- coding: utf-8 -*- """Convert graphviz graphs to LaTeX-friendly formats Various tools for converting graphs generated by the graphviz library to formats for use with LaTeX. Copyright (c) 2006-2014, Kjell Magne Fauske """ # Copyright (c) 2006-2014, Kjell Magne Fauske # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS # IN THE SOFTWARE. __author__ = 'Kjell Magne Fauske' __version__ = '2.9.0' __license__ = 'MIT' from itertools import izip from optparse import OptionParser import os.path as path import sys, tempfile, os, re import logging import warnings import dotparsing # Silence DeprecationWarnings about os.popen3 in Python 2.6 warnings.filterwarnings('ignore', category=DeprecationWarning, message=r'os\.popen3') # initialize logging module log = logging.getLogger("dot2tex") DEFAULT_TEXTENCODING = 'utf8' DEFAULT_OUTPUT_FORMAT = 'pgf' # label margins in inches DEFAULT_LABEL_XMARGIN = 0.11 DEFAULT_LABEL_YMARGIN = 0.055 DEFAULT_EDGELABEL_XMARGIN = 0.01 DEFAULT_EDGELABEL_YMARGIN = 0.01 DEFAULT_GRAPHLABEL_XMARGIN = 0.01 DEFAULT_GRAPHLABEL_YMARGIN = 0.01 DEFAULT_NODE_WIDTH = 0.75 DEFAULT_NODE_HEIGHT = 0.5 # Todo: set papersize based on bb # Todo: Fontcolor # Todo: Support linewidth in draw string # Todo: Support linestyle in draw string # Todo: Need to reconsider edge draw order. # See for instance html2.xdot # Inch to bp conversion factor INCH2BP = 72.0 # Examples of draw strings # c 5 -black F 14.000000 11 -Times-Roman T 99 159 0 44 8 -a_1 test SPECIAL_CHARS = ['$', '\\', '%', '_', '#', '{', r'}', '^', '&'] SPECIAL_CHARS_REPLACE = [r'\$', r'$\backslash$', r'\%', r'\_', r'\#', r'\{', r'\}', r'\^{}', r'\&'] charmap = dict(zip(SPECIAL_CHARS, SPECIAL_CHARS_REPLACE)) helpmsg = """\ Failed to parse the input data. Is it a valid dot file? Try to input xdot data directly. Example: dot -Txdot file.dot | dot2tex > file.tex If this does not work, check that you have an updated version of PyParsing and Graphviz. Users have reported problems with old versions. You can also run dot2tex in debug mode using the --debug option: dot2tex --debug file.dot A file dot2tex.log will be written to the current directory with detailed information useful for debugging.""" def mreplace(s, chararray, newchararray): for a, b in zip(chararray, newchararray): s = s.replace(a, b) return s def escape_texchars(string): r"""Escape the special LaTeX-chars %{}_^ Examples: >>> escape_texchars('10%') '10\\%' >>> escape_texchars('%{}_^\\$') '\\%\\{\\}\\_\\^{}$\\backslash$\\$' """ return "".join([charmap.get(c, c) for c in string]) def tikzify(s): if s.strip(): return mreplace(s, r'\,:.()', '-+_*{}') else: return "d2tnn%i" % (len(s) + 1) def nsplit(seq, n=2): """Split a sequence into pieces of length n If the length of the sequence isn't a multiple of n, the rest is discarded. Note that nsplit will strings into individual characters. Examples: >>> nsplit('aabbcc') [('a', 'a'), ('b', 'b'), ('c', 'c')] >>> nsplit('aabbcc',n=3) [('a', 'a', 'b'), ('b', 'c', 'c')] # Note that cc is discarded >>> nsplit('aabbcc',n=4) [('a', 'a', 'b', 'b')] """ return [xy for xy in izip(*[iter(seq)] * n)] def chunks(s, cl): """Split a string or sequence into pieces of length cl and return an iterator """ for i in xrange(0, len(s), cl): yield s[i:i + cl] def replace_tags(template, tags, tagsreplace): """Replace occurrences of tags with tagsreplace Example: >>> replace_tags('a b c d',('b','d'),{'b':'bbb','d':'ddd'}) 'a bbb c ddd' """ s = template for tag in tags: replacestr = tagsreplace.get(tag, '') if not replacestr: replacestr = '' s = s.replace(tag, replacestr) return s def getboolattr(item, key, default): if str(getattr(item, key, '')).lower() == 'true': return True else: return False def smart_float(number): number_as_string = "%s" % float(number) if 'e' in number_as_string: return "%.4f" % float(number) else: return number_as_string def create_xdot(dotdata, prog='dot', options=''): """Run a graph through Graphviz and return an xdot-version of the graph""" # The following code is from the pydot module written by Ero Carrera progs = dotparsing.find_graphviz() #prog = 'dot' if progs is None: log.error('Could not locate Graphviz binaries') return None if not progs.has_key(prog): log.error('Invalid prog=%s', prog) raise NameError('The %s program is not recognized. Valid values are %s' % (prog, progs.keys())) tmp_fd, tmp_name = tempfile.mkstemp() os.close(tmp_fd) f = open(tmp_name, 'w') f.write(dotdata) f.close() output_format = 'xdot' progpath = '"%s"' % progs[prog].strip() cmd = progpath + ' -T' + output_format + ' ' + options + ' ' + tmp_name log.debug('Creating xdot data with: %s', cmd) stdin, stdout, stderr = os.popen3(cmd, 't') stdin.close() try: data = stdout.read() finally: stdout.close() try: error_data = stderr.read() if error_data: if 'Error:' in error_data: log.error("Graphviz returned with the following message: %s", error_data) else: # Graphviz raises a lot of warnings about too small labels, # we therefore log them using log.debug to "hide" them log.debug('Graphviz STDERR %s', error_data) finally: stderr.close() os.unlink(tmp_name) return data def parse_dot_data(dotdata): """Wrapper for pydot.graph_from_dot_data Redirects error messages to the log. """ parser = dotparsing.DotDataParser() try: graph = parser.parse_dot_data(dotdata) except dotparsing.ParseException: raise finally: del parser log.debug('Parsed graph:\n%s', str(graph)) return graph def parse_drawstring(drawstring): """Parse drawstring and returns a list of draw operations""" # The draw string parser is a bit clumsy and slow def doeE(c, s): # E x0 y0 w h Filled ellipse ((x-x0)/w)^2 + ((y-y0)/h)^2 = 1 # e x0 y0 w h Unfilled ellipse ((x-x0)/w)^2 + ((y-y0)/h)^2 = 1 tokens = s.split()[0:4] if not tokens: return None points = map(int, tokens) didx = sum(map(len, tokens)) + len(points) + 1 return didx, (c, points[0], points[1], points[2], points[3]) def doPLB(c, s): # P n x1 y1 ... xn yn Filled polygon using the given n points # p n x1 y1 ... xn yn Unfilled polygon using the given n points # L n x1 y1 ... xn yn Polyline using the given n points # B n x1 y1 ... xn yn B-spline using the given n control points # b n x1 y1 ... xn yn Filled B-spline using the given n control points tokens = s.split() n = int(tokens[0]) points = map(int, tokens[1:n * 2 + 1]) didx = sum(map(len, tokens[1:n * 2 + 1])) + n * 2 + 2 npoints = nsplit(points, 2) return didx, (c, npoints) def doCS(c, s): # C n -c1c2...cn Set fill color. # c n -c1c2...cn Set pen color. # Graphviz uses the following color formats: # "#%2x%2x%2x" Red-Green-Blue (RGB) # "#%2x%2x%2x%2x" Red-Green-Blue-Alpha (RGBA) # H[, ]+S[, ]+V Hue-Saturation-Value (HSV) 0.0 <= H,S,V <= 1.0 # string color name tokens = s.split() n = int(tokens[0]) tmp = len(tokens[0]) + 3 d = s[tmp:tmp + n] didx = len(d) + tmp + 1 return didx, (c, d) def doFont(c, s): # F s n -c1c2...cn # Set font. The font size is s points. The font name consists of # the n characters following '-'. tokens = s.split() size = tokens[0] n = int(tokens[1]) tmp = len(size) + len(tokens[1]) + 4 d = s[tmp:tmp + n] didx = len(d) + tmp return didx, (c, size, d) def doText(c, s): # T x y j w n -c1c2...cn # Text drawn using the baseline point (x,y). The text consists of the # n characters following '-'. The text should be left-aligned #(centered, right-aligned) on the point if j is -1 (0, 1), respectively. # The value w gives the width of the text as computed by the library. tokens = s.split() x, y, j, w = tokens[0:4] n = int(tokens[4]) tmp = sum(map(len, tokens[0:5])) + 7 text = s[tmp:tmp + n] didx = len(text) + tmp return didx, [c, x, y, j, w, text] cmdlist = [] stat = {} idx = 0 s = drawstring.strip() while idx < len(s) - 1: didx = 1 c = s[idx] stat[c] = stat.get(c, 0) + 1 try: if c in ('e', 'E'): didx, cmd = doeE(c, s[idx + 1:]) cmdlist.append(cmd) elif c in ('p', 'P', 'L', 'b', 'B'): didx, cmd = doPLB(c, s[idx + 1:]) cmdlist.append(cmd) elif c in ('c', 'C', 'S'): didx, cmd = doCS(c, s[idx + 1:]) cmdlist.append(cmd) elif c == 'F': didx, cmd = doFont(c, s[idx + 1:]) cmdlist.append(cmd) elif c == 'T': didx, cmd = doText(c, s[idx + 1:]) cmdlist.append(cmd) except: pass idx += didx return cmdlist, stat def get_graphlist(gg, l=[]): """Traverse a graph with subgraphs and return them as a list""" if not l: outer = True else: outer = False l.append(gg) if gg.get_subgraphs(): for g in gg.get_subgraphs(): get_graphlist(g, l) if outer: return l class EndOfGraphElement(object): def __init__(self): pass def get_all_graph_elements(graph, l=[]): """Return all nodes and edges, including elements in subgraphs""" if not l: outer = True l.append(graph) else: outer = False for element in graph.allitems: if isinstance(element, dotparsing.DotSubGraph): l.append(element) get_all_graph_elements(element, l) else: l.append(element) if outer: return l else: l.append(EndOfGraphElement()) class DotConvBase(object): """Dot2TeX converter base""" def __init__(self, options=None): self.color = "" self.opacity = None try: self.template except AttributeError: self.template = options.get('template', '') self.textencoding = options.get('encoding', DEFAULT_TEXTENCODING) self.templatevars = {} self.body = "" if options.get('templatefile', ''): self.load_template(options['templatefile']) if options.get('template', ''): self.template = options['template'] self.options = options or {} if options.get('texpreproc', False) or options.get('autosize', False): self.dopreproc = True else: self.dopreproc = False def load_template(self, templatefile): try: self.template = open(templatefile).read() except: pass def convert_file(self, filename): """Load dot file and convert""" pass def start_fig(self): return "" def end_fig(self): return "" def draw_ellipse(self, drawop, style=None): return "" def draw_bezier(self, drawop, style=None): return "" def draw_polygon(self, drawop, style=None): return "" def draw_polyline(self, drawop, style=None): return "" def draw_text(self, drawop, style=None): return "" def output_node_comment(self, node): return " %% Node: %s\n" % node.name def output_edge_comment(self, edge): src = edge.get_source() dst = edge.get_destination() if self.directedgraph: edge = '->' else: edge = '--' return " %% Edge: %s %s %s\n" % (src, edge, dst) def set_color(self, node): return "" def set_style(self, node): return "" def draw_edge(self, edge): return "" def start_node(self, node): return "" def end_node(self, node): return "" def start_graph(self, graph): return "" def end_graph(self, graph): return "" def start_edge(self): return "" def end_edge(self): return "" def filter_styles(self, style): return style def convert_color(self, drawopcolor, pgf=False): """Convert color to a format usable by LaTeX and XColor""" # Graphviz uses the following color formats: # "#%2x%2x%2x" Red-Green-Blue (RGB) # "#%2x%2x%2x%2x" Red-Green-Blue-Alpha (RGBA) # H[, ]+S[, ]+V Hue-Saturation-Value (HSV) 0.0 <= H,S,V <= 1.0 # string color name # Is the format RBG(A)? if drawopcolor.startswith('#'): t = list(chunks(drawopcolor[1:], 2)) # parallell lines not yet supported if len(t) > 6: t = t[0:3] rgb = [(round((int(n, 16) / 255.0), 2)) for n in t] if pgf: colstr = "{rgb}{%s,%s,%s}" % tuple(rgb[0:3]) opacity = "1" if len(rgb) == 4: opacity = rgb[3] return colstr, opacity else: return "[rgb]{%s,%s,%s}" % tuple(rgb[0:3]) elif (len(drawopcolor.split(' ')) == 3) or (len(drawopcolor.split(',')) == 3): # are the values space or comma separated? hsb = drawopcolor.split(',') if not len(hsb) == 3: hsb = drawopcolor.split(' ') if pgf: return "{hsb}{%s,%s,%s}" % tuple(hsb) else: return "[hsb]{%s,%s,%s}" % tuple(hsb) else: drawopcolor = drawopcolor.replace('grey', 'gray') drawopcolor = drawopcolor.replace('_', '') drawopcolor = drawopcolor.replace(' ', '') return drawopcolor def do_drawstring(self, drawstring, drawobj, texlbl_name="texlbl", use_drawstring_pos=False): """Parse and draw drawsting Just a wrapper around do_draw_op. """ drawoperations, stat = parse_drawstring(drawstring) return self.do_draw_op(drawoperations, drawobj, stat, texlbl_name, use_drawstring_pos) def do_draw_op(self, drawoperations, drawobj, stat, texlbl_name="texlbl", use_drawstring_pos=False): """Excecute the operations in drawoperations""" s = "" for drawop in drawoperations: op = drawop[0] style = getattr(drawobj, 'style', None) # styles are not passed to the draw operations in the # duplicate mode if style and not self.options.get('duplicate', False): # map Graphviz styles to backend styles style = self.filter_styles(style) styles = [self.styles.get(key.strip(), key.strip()) for key in style.split(',') if key] style = ','.join(styles) else: style = None if op in ['e', 'E']: s += self.draw_ellipse(drawop, style) elif op in ['p', 'P']: s += self.draw_polygon(drawop, style) elif op == 'L': s += self.draw_polyline(drawop, style) elif op in ['C', 'c']: s += self.set_color(drawop) elif op == 'S': s += self.set_style(drawop) elif op in ['B']: s += self.draw_bezier(drawop, style) elif op in ['T']: # Need to decide what to do with the text # Note that graphviz removes the \ character from the draw # string. Use \\ instead # Todo: Use text from node|edge.label or name # Todo: What about multiline labels? text = drawop[5] # head and tail label texmode = self.options.get('texmode', 'verbatim') if drawobj.attr.get('texmode', ''): texmode = drawobj.attr['texmode'] if texlbl_name in drawobj.attr: # the texlbl overrides everything text = drawobj.attr[texlbl_name] elif texmode == 'verbatim': # verbatim mode text = escape_texchars(text) pass elif texmode == 'math': # math mode text = "$%s$" % text drawop[5] = text if self.options.get('alignstr', ''): drawop.append(self.options.get('alignstr')) if stat['T'] == 1 and \ self.options.get('valignmode', 'center') == 'center': # do this for single line only # force centered alignment drawop[3] = '0' if not use_drawstring_pos: if texlbl_name == "tailtexlbl": pos = drawobj.attr.get('tail_lp', None) or \ drawobj.attr.get('pos', None) elif texlbl_name == "headtexlbl": pos = drawobj.attr.get('head_lp', None) or \ drawobj.attr.get('pos', None) else: pos = drawobj.attr.get('lp', None) or \ drawobj.attr.get('pos', None) if pos: coord = pos.split(',') if len(coord) == 2: drawop[1] = coord[0] drawop[2] = coord[1] pass lblstyle = drawobj.attr.get('lblstyle', None) exstyle = drawobj.attr.get('exstyle', '') if exstyle: if lblstyle: lblstyle += ',' + exstyle else: lblstyle = exstyle s += self.draw_text(drawop, lblstyle) return s def do_nodes(self): s = "" for node in self.nodes: self.currentnode = node general_draw_string = node.attr.get('_draw_', "") label_string = node.attr.get('_ldraw_', "") drawstring = general_draw_string + " " + label_string if not drawstring.strip(): continue # detect node type shape = node.attr.get('shape', '') if not shape: shape = 'ellipse' # default # extract size information x, y = node.attr.get('pos', '').split(',') # width and height are in inches. Convert to bp units w = float(node.attr['width']) * INCH2BP h = float(node.attr['height']) * INCH2BP s += self.output_node_comment(node) s += self.start_node(node) #drawoperations = parse_drawstring(drawstring) s += self.do_drawstring(drawstring, node) s += self.end_node(node) self.body += s def get_edge_points(self, edge): # edge BNF # :: (';' )* # :: ? ? + # :: ',' # :: # :: "e" "," "," ## spline ( ';' spline )* ##where spline = (endp)? (startp)? point (triple)+ ##and triple = point point point ##and endp = "e,%d,%d" ##and startp = "s,%d,%d" ##If a spline has points p1 p2 p3 ... pn, (n = 1 (mod 3)), the points correspond to the control points of a B-spline from p1 to pn. If startp is given, it touches one node of the edge, and the arrowhead goes from p1 to startp. If startp is not given, p1 touches a node. Similarly for pn and endp. pos = edge.attr.get('pos') if pos: segments = pos.split(';') else: return [] return_segments = [] for pos in segments: points = pos.split(' ') # check direction arrow_style = '--' i = 0 if points[i].startswith('s'): p = points[0].split(',') tmp = "%s,%s" % (p[1], p[2]) if points[1].startswith('e'): points[2] = tmp else: points[1] = tmp del points[0] arrow_style = '<-' i += 1 if points[0].startswith('e'): p = points[0].split(',') points.pop() points.append("%s,%s" % (p[1], p[2])) del points[0] arrow_style = '->' i += 1 if i > 1: arrow_style = '<->' arrow_style = self.get_output_arrow_styles(arrow_style, edge) return_segments.append((arrow_style, points)) return return_segments def do_edges(self): s = "" s += self.set_color(('cC', "black")) for edge in self.edges: general_draw_string = edge.attr.get('_draw_', "") label_string = edge.attr.get('_ldraw_', "") head_arrow_string = edge.attr.get('_hdraw_', "") tail_arrow_string = edge.attr.get('_tdraw_', "") tail_label_string = edge.attr.get('_tldraw_', "") head_label_string = edge.attr.get('_hldraw_', "") # Note that the order of the draw strings should be the same # as in the xdot output. drawstring = general_draw_string + " " + head_arrow_string + " " + tail_arrow_string \ + " " + label_string + " " + tail_label_string + " " + head_label_string drawop, stat = parse_drawstring(drawstring) if not drawstring.strip(): continue s += self.output_edge_comment(edge) if self.options.get('duplicate', False): s += self.start_edge() s += self.do_draw_op(drawop, edge, stat) s += self.end_edge() else: s += self.draw_edge(edge) s += self.do_drawstring(label_string + " " + tail_label_string + " " + head_label_string, edge) self.body += s def do_graph(self): general_draw_string = self.graph.attr.get('_draw_', "") label_string = self.graph.attr.get('_ldraw_', "") # Avoid filling background of graphs with white if general_draw_string.startswith('c 5 -white C 5 -white') \ and not self.graph.attr.get('style'): general_draw_string = '' if getattr(self.graph, '_draw_', None): # bug general_draw_string = "c 5 -black " + general_draw_string # self.graph._draw_ pass drawstring = general_draw_string + " " + label_string if drawstring.strip(): s = self.start_graph(self.graph) g = self.do_drawstring(drawstring, self.graph) e = self.end_graph(self.graph) if g.strip(): self.body += s + g + e def set_options(self): # process options # Warning! If graph attribute is true and command line option is false, # the graph attribute will be used. Command line option should have # precedence. self.options['alignstr'] = self.options.get('alignstr', '') \ or getattr(self.main_graph, 'd2talignstr', '') # Todo: bad! self.options['valignmode'] = getattr(self.main_graph, 'd2tvalignmode', '') \ or self.options.get('valignmode', 'center') def convert(self, dotdata): # parse data processed by dot. log.debug('Start conversion') main_graph = parse_dot_data(dotdata) if not self.dopreproc and not hasattr(main_graph, 'xdotversion'): # Older versions of Graphviz does not include the xdotversion # attribute if not (dotdata.find('_draw_') > 0 or dotdata.find('_ldraw_') > 0): # need to convert to xdot format # Warning. Pydot will not include custom attributes log.info('Trying to create xdotdata') tmpdata = create_xdot(dotdata, self.options.get('prog', 'dot'), options=self.options.get('progoptions', '')) if tmpdata is None or not tmpdata.strip(): log.error('Failed to create xdotdata. Is Graphviz installed?') sys.exit(1) log.debug('xdotdata:\n' + str(tmpdata)) main_graph = parse_dot_data(tmpdata) log.debug('dotparsing graph:\n' + str(main_graph)) else: # old version pass self.main_graph = main_graph self.pencolor = "" self.fillcolor = "" self.linewidth = 1 # Detect graph type self.directedgraph = main_graph.directed if self.dopreproc: return self.do_preview_preproc() # Remove annoying square # Todo: Remove squares from subgraphs. See pgram.dot dstring = self.main_graph.attr.get('_draw_', "") if dstring: self.main_graph.attr['_draw_'] = "" self.set_options() # A graph can consists of nested graph. Extract all graphs graphlist = get_graphlist(self.main_graph, []) self.body += self.start_fig() # To get correct drawing order we need to iterate over the graphs # multiple times. First we draw the graph graphics, then nodes and # finally the edges. # todo: support the outputorder attribute for graph in graphlist: self.graph = graph self.do_graph() if True: self.nodes = list(main_graph.allnodes) self.edges = list(main_graph.alledges) if not self.options.get('switchdraworder', False): self.do_edges() # tmp self.do_nodes() else: self.do_nodes() self.do_edges() self.body += self.end_fig() return self.output() def clean_template(self, template): """Remove preprocsection or outputsection""" if not self.dopreproc and self.options.get('codeonly', False): r = re.compile('<>(.*?)<>', re.DOTALL | re.MULTILINE) m = r.search(template) if m: return m.group(1).strip() if not self.dopreproc and self.options.get('figonly', False): r = re.compile('<>(.*?)<>', re.DOTALL | re.MULTILINE) m = r.search(template) if m: return m.group(1) r = re.compile('<>(.*?)<>', re.DOTALL | re.MULTILINE) m = r.search(template) if m: return m.group(1) if self.dopreproc: r = re.compile('<>.*?<>', re.DOTALL | re.MULTILINE) else: r = re.compile('<>.*?<>', re.DOTALL | re.MULTILINE) # remove codeonly and figonly section r2 = re.compile('<>.*?<>', re.DOTALL | re.MULTILINE) tmp = r2.sub('', template) r2 = re.compile('<>.*?<>', re.DOTALL | re.MULTILINE) tmp = r2.sub('', tmp) return r.sub('', tmp) def init_template_vars(self): variables = {} # get bounding box bbstr = self.main_graph.attr.get('bb', '') if bbstr: bb = bbstr.split(',') variables['<>'] = "(%sbp,%sbp)(%sbp,%sbp)\n" % ( smart_float(bb[0]), smart_float(bb[1]), smart_float(bb[2]), smart_float(bb[3])) variables['<>'] = bb[0] variables['<>'] = bb[1] variables['<>'] = bb[2] variables['<>'] = bb[3] variables['<>'] = self.body.strip() variables['<>'] = self.body.strip() variables['<>'] = self.textencoding docpreamble = self.options.get('docpreamble', '') \ or getattr(self.main_graph, 'd2tdocpreamble', '') ## if docpreamble: ## docpreamble = docpreamble.replace('\\n','\n') variables['<>'] = docpreamble variables['<>'] = self.options.get('figpreamble', '') \ or getattr(self.main_graph, 'd2tfigpreamble', '%') variables['<>'] = self.options.get('figpostamble', '') \ or getattr(self.main_graph, 'd2tfigpostamble', '') variables['<>'] = self.options.get('graphstyle', '') \ or getattr(self.main_graph, 'd2tgraphstyle', '') variables['<>'] = self.options.get('margin', '0pt') variables['<>'] = variables['<>'] = '' variables['<>'] = variables['<>'] = '' if self.options.get('gvcols', False): variables['<>'] = "\input{gvcols.tex}" else: variables['<>'] = "" self.templatevars = variables def output(self): self.init_template_vars() template = self.clean_template(self.template) code = replace_tags(template, self.templatevars.keys(), self.templatevars) #code = self.template.replace('<>', self.body) return code def get_label(self, drawobj, label_attribute="label", tex_label_attribute="texlbl"): text = "" texmode = self.options.get('texmode', 'verbatim') if getattr(drawobj, 'texmode', ''): texmode = drawobj.texmode text = getattr(drawobj, label_attribute, None) #log.warning('text %s %s',text,str(drawobj)) if text is None or text.strip() == '\N': if not isinstance(drawobj, dotparsing.DotEdge): text = getattr(drawobj, 'name', None) or \ getattr(drawobj, 'graph_name', '') text = text.replace("\\\\", "\\") else: text = '' elif text.strip() == '\N': text = '' else: text = text.replace("\\\\", "\\") if getattr(drawobj, tex_label_attribute, ''): # the texlbl overrides everything text = drawobj.texlbl elif texmode == 'verbatim': # verbatim mode text = escape_texchars(text) pass elif texmode == 'math': # math mode text = "$%s$" % text return text def get_node_preproc_code(self, node): return node.attr.get('texlbl', '') def get_edge_preproc_code(self, edge, attribute="texlbl"): return edge.attr.get(attribute, '') def get_graph_preproc_code(self, graph): return graph.attr.get('texlbl', '') def get_margins(self, element): """Return element margins""" margins = element.attr.get('margin', None) if margins: margins = margins.split(',') if len(margins) == 1: xmargin = ymargin = float(margins[0]) else: xmargin = float(margins[0]) ymargin = float(margins[1]) else: # use default values if isinstance(element, dotparsing.DotEdge): xmargin = DEFAULT_EDGELABEL_XMARGIN ymargin = DEFAULT_EDGELABEL_YMARGIN else: xmargin = DEFAULT_LABEL_XMARGIN ymargin = DEFAULT_LABEL_YMARGIN return xmargin, ymargin # Todo: Add support for head and tail labels! # Todo: Support rect nodes if possible. def do_preview_preproc(self): #setDotAttr(self.maingraph) self.init_template_vars() template = self.clean_template(self.template) template = replace_tags(template, self.templatevars.keys(), self.templatevars) pp = TeXDimProc(template, self.options) usednodes = {} usededges = {} usedgraphs = {} # iterate over every element in the graph counter = 0 for node in self.main_graph.allnodes: name = node.name if node.attr.get('fixedsize', '') == 'true' \ or node.attr.get('style', '') in ['invis', 'invisible']: continue if node.attr.get('shape', '') == 'record': log.warning('Record nodes not supported in preprocessing mode: %s', name) continue texlbl = self.get_label(node) if texlbl: node.attr['texlbl'] = texlbl code = self.get_node_preproc_code(node) pp.add_snippet(name, code) usednodes[name] = node for edge in dotparsing.flatten(self.main_graph.alledges): if not edge.attr.get('label') and not edge.attr.get('texlbl') and not edge.attr.get("headlabel") \ and not edge.attr.get("taillabel"): continue # Ensure that the edge name is unique. name = edge.src.name + edge.dst.name + str(counter) label = self.get_label(edge) headlabel = self.get_label(edge, "headlabel", "headtexlbl") taillabel = self.get_label(edge, "taillabel", "tailtexlbl") if label: name = edge.src.name + edge.dst.name + str(counter) edge.attr['texlbl'] = label code = self.get_edge_preproc_code(edge) pp.add_snippet(name, code) if headlabel: headlabel_name = name+"headlabel" edge.attr['headtexlbl'] = headlabel code = self.get_edge_preproc_code(edge, "headtexlbl") pp.add_snippet(headlabel_name, code) if taillabel: taillabel_name = name+"taillabel" edge.attr['tailtexlbl'] = taillabel code = self.get_edge_preproc_code(edge, "tailtexlbl") pp.add_snippet(taillabel_name, code) counter += 1 usededges[name] = edge for graph in self.main_graph.allgraphs: if not graph.attr.get('label', None) and not graph.attr.get('texlbl', None): continue # Make sure that the name is unique name = graph.name + str(counter) counter += 1 label = self.get_label(graph) graph.attr['texlbl'] = label code = self.get_graph_preproc_code(graph) pp.add_snippet(name, code) usedgraphs[name] = graph ok = pp.process() if not ok: errormsg = """\ Failed to preprocess the graph. Is the preview LaTeX package installed? ((Debian package preview-latex-style) To see what happened, run dot2tex with the --debug option. """ log.error(errormsg) sys.exit(1) for name, item in usednodes.items(): if not item.attr.get('texlbl'): continue node = item hp, dp, wt = pp.texdims[name] if self.options.get('rawdim', False): # use dimensions from preview.sty directly node.attr['width'] = wt node.attr['height'] = hp + dp node.attr['label'] = " " node.attr['fixedsize'] = 'true' self.main_graph.allitems.append(node) continue xmargin, ymargin = self.get_margins(node) ht = hp + dp minwidth = float(item.attr.get('width') or DEFAULT_NODE_WIDTH) minheight = float(item.attr.get('height') or DEFAULT_NODE_HEIGHT) if self.options.get('nominsize', False): width = wt + 2 * xmargin height = ht + 2 * ymargin else: if (wt + 2 * xmargin) < minwidth: width = minwidth else: width = wt + 2 * xmargin height = ht if ((hp + dp) + 2 * ymargin) < minheight: height = minheight else: height = ht + 2 * ymargin # Treat shapes with equal width and height differently # Warning! Rectangles will not always fit inside a circle # Should use the diagonal. if item.attr.get('shape', '') in ['circle', 'Msquare', 'doublecircle', 'Mcircle']: if wt < height and width < height: width = height else: height = width node.attr['width'] = width node.attr['height'] = height node.attr['label'] = " " node.attr['fixedsize'] = 'true' self.main_graph.allitems.append(node) for name, item in usededges.items(): edge = item hp, dp, wt = pp.texdims[name] xmargin, ymargin = self.get_margins(edge) labelcode = '<<' \ '' \ '
a
>>' if "texlbl" in edge.attr: edge.attr['label'] = labelcode % ((wt + 2 * xmargin) * 72, (hp + dp + 2 * ymargin) * 72) if "tailtexlbl" in edge.attr: hp, dp, wt = pp.texdims[name+"taillabel"] edge.attr['taillabel'] = labelcode % ((wt + 2 * xmargin) * 72, (hp + dp + 2 * ymargin) * 72) if "headtexlbl" in edge.attr: hp, dp, wt = pp.texdims[name+"headlabel"] edge.attr['headlabel'] = labelcode % ((wt + 2 * xmargin) * 72, (hp + dp + 2 * ymargin) * 72) for name, item in usedgraphs.items(): graph = item hp, dp, wt = pp.texdims[name] xmargin, ymargin = self.get_margins(graph) labelcode = '<<' \ '' \ '
a
>>' graph.attr['label'] = labelcode % ((wt + 2 * xmargin) * 72, (hp + dp + 2 * ymargin) * 72) self.main_graph.attr['d2toutputformat'] = self.options.get('format', DEFAULT_OUTPUT_FORMAT) graphcode = str(self.main_graph) graphcode = graphcode.replace('<<<', '<<') graphcode = graphcode.replace('>>>', '>>') return graphcode def get_output_arrow_styles(self, arrow_style, edge): return arrow_style PSTRICKS_TEMPLATE = r"""\documentclass{article} % <> \usepackage[x11names]{xcolor} \usepackage[<>]{inputenc} \usepackage{graphicx} \usepackage{pstricks} \usepackage{amsmath} <>% \usepackage[active,auctex]{preview} <>% <>% <>% \begin{document} \pagestyle{empty} <>% <>% <>% <>% \enlargethispage{100cm} % Start of code \begin{pspicture}[linewidth=1bp<>]<> \pstVerb{2 setlinejoin} % set line join style to 'mitre' <>% <> <>% \end{pspicture} % End of code <>% \end{document} % <> \begin{pspicture}[linewidth=1bp<>]<> \pstVerb{2 setlinejoin} % set line join style to 'mitre' <>% <> <>% \end{pspicture} <> % <> <>% <> <>% <> """ class Dot2PSTricksConv(DotConvBase): """PSTricks converter backend""" def __init__(self, options=None): DotConvBase.__init__(self, options) if not self.template: self.template = PSTRICKS_TEMPLATE self.styles = dict( dotted="linestyle=dotted", dashed="linestyle=dashed", bold="linewidth=2pt", solid="", filled="", ) def do_graphtmp(self): self.pencolor = "" self.fillcolor = "" self.color = "" self.body += '{\n' DotConvBase.do_graph(self) self.body += '}\n' def start_fig(self): # get bounding box bbstr = self.main_graph.bb if bbstr: bb = bbstr.split(',') #fillcolor=black, s = "\\begin{pspicture}[linewidth=1bp](%sbp,%sbp)(%sbp,%sbp)\n" % \ (smart_float(bb[0]), smart_float(bb[1]), smart_float(bb[2]), smart_float(bb[3])) # Set line style to mitre s += " \pstVerb{2 setlinejoin} % set line join style to 'mitre'\n" #return s return "" def end_fig(self): #return '\end{pspicture}\n' return "" def draw_ellipse(self, drawop, style=None): op, x, y, w, h = drawop s = "" #s = " %% Node: %s\n" % node.name if op == 'E': if style: style = style.replace('filled', '') stylestr = 'fillstyle=solid' else: stylestr = "" if style: if stylestr: stylestr += ',' + style else: stylestr = style s += " \psellipse[%s](%sbp,%sbp)(%sbp,%sbp)\n" % (stylestr, smart_float(x), smart_float(y), # w+self.linewidth,h+self.linewidth) smart_float(w), smart_float(h)) return s def draw_polygon(self, drawop, style=None): op, points = drawop pp = ['(%sbp,%sbp)' % (smart_float(p[0]), smart_float(p[1])) for p in points] stylestr = "" if op == 'P': if style: style = style.replace('filled', '') stylestr = "fillstyle=solid" if style: if stylestr: stylestr += ',' + style else: stylestr = style s = " \pspolygon[%s]%s\n" % (stylestr, "".join(pp)) return s def draw_polyline(self, drawop, style=None): op, points = drawop pp = ['(%sbp,%sbp)' % (smart_float(p[0]), smart_float(p[1])) for p in points] s = " \psline%s\n" % "".join(pp) return s def draw_bezier(self, drawop, style=None): op, points = drawop pp = [] for point in points: pp.append("(%sbp,%sbp)" % (smart_float(point[0]), smart_float(point[1]))) arrowstyle = "" return " \psbezier{%s}%s\n" % (arrowstyle, "".join(pp)) def draw_text(self, drawop, style=None): if len(drawop) == 7: c, x, y, align, w, text, valign = drawop else: c, x, y, align, w, text = drawop valign = "" if align == "-1": alignstr = 'l' # left aligned elif align == "1": alignstr = 'r' # right aligned else: alignstr = "" # centered (default) if alignstr or valign: alignstr = '[' + alignstr + valign + ']' s = " \\rput%s(%sbp,%sbp){%s}\n" % (alignstr, smart_float(x), smart_float(y), text) return s def set_color(self, drawop): c, color = drawop color = self.convert_color(color) s = "" if c == 'c': # set pen color if self.pencolor != color: self.pencolor = color s = " \psset{linecolor=%s}\n" % color else: return "" elif c == 'C': # set fill color if self.fillcolor != color: self.fillcolor = color s = " \psset{fillcolor=%s}\n" % color else: return "" elif c == 'cC': if self.color != color: self.color = color self.pencolor = self.fillcolor = color s = " \psset{linecolor=%s}\n" % color else: log.warning('Unhandled color: %s', drawop) return s def set_style(self, drawop): c, style = drawop psstyle = self.styles.get(style, "") if psstyle: return " \psset{%s}\n" % psstyle else: return "" def filter_styles(self, style): fstyles = [] for item in style.split(','): keyval = item.strip() if keyval.find('setlinewidth') < 0: fstyles.append(keyval) return ', '.join(fstyles) def start_node(self, node): self.pencolor = "" self.fillcolor = "" self.color = "" return "{%\n" def end_node(self, node): return "}%\n" def start_edge(self): self.pencolor = "" self.fillcolor = "" return "{%\n" def end_edge(self): return "}%\n" def start_graph(self, graph): self.pencolor = "" self.fillcolor = "" self.color = "" return "{\n" def end_graph(self, node): return "}\n" def draw_edge(self, edge): s = "" if edge.attr.get('style', '') in ['invis', 'invisible']: return "" edges = self.get_edge_points(edge) for arrowstyle, points in edges: if arrowstyle == '--': arrowstyle = '' color = getattr(edge, 'color', '') if self.color != color: if color: s += self.set_color(('c', color)) else: # reset to default color s += self.set_color(('c', 'black')) pp = [] for point in points: p = point.split(',') pp.append("(%sbp,%sbp)" % (smart_float(p[0]), smart_float(p[1]))) edgestyle = edge.attr.get('style', '') styles = [] if arrowstyle: styles.append('arrows=%s' % arrowstyle) if edgestyle: edgestyles = [self.styles.get(key.strip(), key.strip()) \ for key in edgestyle.split(',') if key] styles.extend(edgestyles) if styles: stylestr = ",".join(styles) else: stylestr = "" if not self.options.get('straightedges', False): s += " \psbezier[%s]%s\n" % (stylestr, "".join(pp)) else: s += " \psline[%s]%s%s\n" % (stylestr, pp[0], pp[-1]) #s += " \psbezier[%s]{%s}%s\n" % (stylestr, arrowstyle,"".join(pp)) ## if edge.label: ## x,y = edge.lp.split(',') ## #s += "\\rput(%s,%s){%s}\n" % (x,y,edge.label) return s def init_template_vars(self): DotConvBase.init_template_vars(self) # Put a ',' before <> graphstyle = self.templatevars.get('<>', '') if graphstyle: graphstyle = graphstyle.strip() if not graphstyle.startswith(','): graphstyle = ',' + graphstyle self.templatevars['<>'] = graphstyle PGF_TEMPLATE = r"""\documentclass{article} \usepackage[x11names, rgb]{xcolor} \usepackage[<>]{inputenc} \usepackage{tikz} \usetikzlibrary{snakes,arrows,shapes} \usepackage{amsmath} <>% \usepackage[active,auctex]{preview} <>% <>% <> <>% <> <>% \begin{document} \pagestyle{empty} % <>% <> <>% % <> \enlargethispage{100cm} % Start of code % \begin{tikzpicture}[anchor=mid,>=latex',line join=bevel,<>] \begin{tikzpicture}[>=latex',line join=bevel,<>] \pgfsetlinewidth{1bp} <>% <> <>% \end{tikzpicture} % End of code <> % \end{document} % <> \begin{tikzpicture}[>=latex,line join=bevel,<>] \pgfsetlinewidth{1bp} <>% <> <>% \end{tikzpicture} <> <> <>% <> <>% <> """ PGF210_TEMPLATE = r"""\documentclass{article} % dot2tex template for PGF 2.10 \usepackage[x11names, rgb]{xcolor} \usepackage[<>]{inputenc} \usepackage{tikz} \usetikzlibrary{snakes,arrows,shapes} \usepackage{amsmath} <>% \usepackage[active,auctex]{preview} <>% <>% <> <>% <> <>% \begin{document} \pagestyle{empty} % <>% <> <>% % <> \enlargethispage{100cm} % Start of code % \begin{tikzpicture}[anchor=mid,>=latex',line join=bevel,<>] \begin{tikzpicture}[>=latex',line join=bevel,<>] \pgfsetlinewidth{1bp} <>% <> <>% \end{tikzpicture} % End of code <> % \end{document} % <> \begin{tikzpicture}[>=latex,line join=bevel,<>] \pgfsetlinewidth{1bp} <>% <> <>% \end{tikzpicture} <> <> <>% <> <>% <> """ PGF118_TEMPLATE = r"""\documentclass{article} \usepackage[x11names, rgb]{xcolor} \usepackage[<>]{inputenc} \usepackage{tikz} \usepackage{pgflibrarysnakes} \usepackage{pgflibraryarrows,pgflibraryshapes} \usepackage{amsmath} <>% \usepackage[active,auctex]{preview} <>% <>% <>% <>% \begin{document} \pagestyle{empty} % <>% <> <>% % <> \enlargethispage{100cm} % Start of code \begin{tikzpicture}[>=latex',join=bevel,<>] \pgfsetlinewidth{1bp} <>% <> <>% \end{tikzpicture} % End of code <> % \end{document} % <> \begin{tikzpicture}[>=latex,join=bevel,<>] \pgfsetlinewidth{1bp} <>% <> <>% \end{tikzpicture} <> <> <>% <> <>% <> """ class Dot2PGFConv(DotConvBase): """PGF/TikZ converter backend""" arrows_map_210 = {"dot": "*", "odot": "o", "empty": "open triangle 45", "invempty": "open triangle 45 reversed", "diamond": "diamond", "odiamond": "open diamond", "ediamond": "open diamond", "box": "square", "obox": "open square", "vee": "stealth'", "open": "stealth'", "tee": "|", "crow": "stealth reversed"} def __init__(self, options=None): DotConvBase.__init__(self, options) if not self.template: if options.get('pgf118', False): self.template = PGF118_TEMPLATE elif options.get('pgf210', False): self.template = PGF210_TEMPLATE else: self.template = PGF_TEMPLATE self.styles = dict(dashed='dashed', dotted='dotted', bold='very thick', filled='fill', invis="", rounded='rounded corners', ) self.dashstyles = dict( dashed='\pgfsetdash{{3pt}{3pt}}{0pt}', dotted='\pgfsetdash{{\pgflinewidth}{2pt}}{0pt}', bold='\pgfsetlinewidth{1.2pt}') def start_fig(self): # get bounding box # get bounding box s = "" return s def end_fig(self): #return '\end{tikzpicture}' return "" def start_node(self, node): # Todo: Should find a more elgant solution self.pencolor = "" self.fillcolor = "" self.color = "" return "\\begin{scope}\n" def end_node(self, node): return "\\end{scope}\n" def start_edge(self): # Todo: Should find a more elgant solution #self.pencolor = ""; #self.fillcolor = "" #self.color = "" return "\\begin{scope}\n" def end_edge(self): return "\\end{scope}\n" def start_graph(self, graph): # Todo: Should find a more elgant solution self.pencolor = "" self.fillcolor = "" self.color = "" return "\\begin{scope}\n" def end_graph(self, graph): return "\\end{scope}\n" #return "\\end{scope}" def set_color(self, drawop): c, color = drawop # Todo: Should find a more elgant solution #self.pencolor = ""; #self.fillcolor = "" #self.color = "" res = self.convert_color(color, True) opacity = None if len(res) == 2: ccolor, opacity = res else: ccolor = res s = "" if c == 'cC': #self.pencolor = color #self.fillcolor = color if self.color != color: self.color = color self.pencolor = color self.fillcolor = color if ccolor.startswith('{'): # rgb or hsb s += " \definecolor{newcol}%s;\n" % ccolor ccolor = 'newcol' s += " \pgfsetcolor{%s}\n" % ccolor #s += " \pgfsetfillcolor{%s}\n" % ccolor elif c == 'c': # set pen color if self.pencolor != color: self.pencolor = color self.color = '' if ccolor.startswith('{'): # rgb or hsb s += " \definecolor{strokecol}%s;\n" % ccolor ccolor = 'strokecol' s += " \pgfsetstrokecolor{%s}\n" % ccolor else: return "" elif c == 'C': # set fill color if self.fillcolor != color: self.fillcolor = color self.color = '' if ccolor.startswith('{'): # rgb s += " \definecolor{fillcol}%s;\n" % ccolor ccolor = 'fillcol' s += " \pgfsetfillcolor{%s}\n" % ccolor if not opacity is None: self.opacity = opacity # Todo: The opacity should probably be set directly when drawing # The \pgfsetfillcopacity cmd affects text as well #s += " \pgfsetfillopacity{%s};\n" % opacity else: self.opacity = None else: return "" return s def set_style(self, drawop): c, style = drawop pgfstyle = self.dashstyles.get(style, "") if pgfstyle: return " %s\n" % pgfstyle else: return "" def filter_styles(self, style): fstyles = [] for item in style.split(','): keyval = item.strip() if keyval.find('setlinewidth') < 0 and not keyval == 'filled': fstyles.append(keyval) return ', '.join(fstyles) def draw_ellipse(self, drawop, style=None): op, x, y, w, h = drawop s = "" #s = " %% Node: %s\n" % node.name if op == 'E': if self.opacity is not None: # Todo: Need to know the state of the current node cmd = 'filldraw [opacity=%s]' % self.opacity else: cmd = 'filldraw' else: cmd = "draw" if style: stylestr = " [%s]" % style else: stylestr = '' s += " \%s%s (%sbp,%sbp) ellipse (%sbp and %sbp);\n" % (cmd, stylestr, smart_float(x), smart_float(y), # w+self.linewidth,h+self.linewidth) smart_float(w), smart_float(h)) return s def draw_polygon(self, drawop, style=None): op, points = drawop pp = ['(%sbp,%sbp)' % (smart_float(p[0]), smart_float(p[1])) for p in points] cmd = "draw" if op == 'P': cmd = "filldraw" if style: stylestr = " [%s]" % style else: stylestr = '' s = " \%s%s %s -- cycle;\n" % (cmd, stylestr, " -- ".join(pp)) return s def draw_polyline(self, drawop, style=None): op, points = drawop pp = ['(%sbp,%sbp)' % (smart_float(p[0]), smart_float(p[1])) for p in points] ##if style: ## stylestr = " [%s]" % style ## else: ## stylestr = '' stylestr = '' return " \draw%s %s;\n" % (stylestr, " -- ".join(pp)) def draw_text(self, drawop, style=None): # The coordinates given by drawop are not the same as the node # coordinates! This may give som odd results if graphviz' and # LaTeX' fonts are very different. if len(drawop) == 7: c, x, y, align, w, text, valign = drawop else: c, x, y, align, w, text = drawop valign = "" styles = [] if align == "-1": alignstr = 'right' # left aligned elif align == "1": alignstr = 'left' # right aligned else: alignstr = "" # centered (default) styles.append(alignstr) styles.append(style) ## if alignstr: ## alignstr = "[" + alignstr+", anchor=mid" + "]" ## else: ## alignstr = "[anchor=mid]" lblstyle = ",".join([i for i in styles if i]) if lblstyle: lblstyle = '[' + lblstyle + ']' s = " \draw (%sbp,%sbp) node%s {%s};\n" % (smart_float(x), smart_float(y), lblstyle, text) return s def draw_bezier(self, drawop, style=None): s = "" c, points = drawop arrowstyle = '--' pp = [] for point in points: pp.append("(%sbp,%sbp)" % (smart_float(point[0]), smart_float(point[1]))) pstrs = ["%s .. controls %s and %s " % p for p in nsplit(pp, 3)] stylestr = '' s += " \draw%s %s .. %s;\n" % (stylestr, " .. ".join(pstrs), pp[-1]) return s def do_edges(self): s = "" s += self.set_color(('cC', "black")) for edge in self.edges: general_draw_string = getattr(edge, '_draw_', "") label_string = getattr(edge, '_ldraw_', "") head_arrow_string = getattr(edge, '_hdraw_', "") tail_arrow_string = getattr(edge, '_tdraw_', "") tail_label_string = getattr(edge, '_tldraw_', "") head_label_string = getattr(edge, '_hldraw_', "") # Note that the order of the draw strings should be the same # as in the xdot output. drawstring = general_draw_string + " " + head_arrow_string + " " + tail_arrow_string \ + " " + label_string + " " + tail_label_string + " " + head_label_string draw_operations, stat = parse_drawstring(drawstring) if not drawstring.strip(): continue s += self.output_edge_comment(edge) if self.options.get('duplicate', False): s += self.start_edge() s += self.do_draw_op(draw_operations, edge, stat) s += self.end_edge() else: topath = getattr(edge, 'topath', None) s += self.draw_edge(edge) if not self.options.get('tikzedgelabels', False) and not topath: s += self.do_drawstring(label_string, edge) s += self.do_drawstring(tail_label_string, edge, "tailtexlbl") s += self.do_drawstring(head_label_string, edge, "headtexlbl") else: s += self.do_drawstring(tail_label_string, edge, "tailtexlbl") s += self.do_drawstring(head_label_string, edge, "headtexlbl") self.body += s def draw_edge(self, edge): s = "" if edge.attr.get('style', '') in ['invis', 'invisible']: return "" edges = self.get_edge_points(edge) for arrowstyle, points in edges: #arrowstyle, points = self.get_edge_points(edge) # PGF uses the fill style when drawing some arrowheads. We have to # ensure that the fill color is the same as the pen color. color = getattr(edge, 'color', '') if self.color != color: if color: s += self.set_color(('cC', color)) else: # reset to default color s += self.set_color(('cC', 'black')) pp = [] for point in points: p = point.split(',') pp.append("(%sbp,%sbp)" % (smart_float(p[0]), smart_float(p[1]))) edgestyle = edge.attr.get('style', '') styles = [] if arrowstyle != '--': #styles.append(arrowstyle) styles = [arrowstyle] if edgestyle: edgestyles = [self.styles.get(key.strip(), key.strip()) for key in edgestyle.split(',') if key] styles.extend(edgestyles) stylestr = ",".join(styles) topath = getattr(edge, 'topath', None) pstrs = ["%s .. controls %s and %s " % p for p in nsplit(pp, 3)] extra = "" if self.options.get('tikzedgelabels', False) or topath: edgelabel = self.get_label(edge) #log.warning('label: %s', edgelabel) lblstyle = getattr(edge, 'lblstyle', '') if lblstyle: lblstyle = '[' + lblstyle + ']' else: lblstyle = '' if edgelabel: extra = " node%s {%s}" % (lblstyle, edgelabel) src = pp[0] dst = pp[-1] if topath: s += " \draw [%s] %s to[%s]%s %s;\n" % (stylestr, src, topath, extra, dst) elif not self.options.get('straightedges', False): s += " \draw [%s] %s ..%s %s;\n" % (stylestr, " .. ".join(pstrs), extra, pp[-1]) else: s += " \draw [%s] %s --%s %s;\n" % (stylestr, pp[0], extra, pp[-1]) return s def get_output_arrow_styles(self, arrow_style, edge): dot_arrow_head = edge.attr.get("arrowhead") dot_arrow_tail = edge.attr.get("arrowtail") output_arrow_style = arrow_style if dot_arrow_head: pgf_arrow_head = self.arrows_map_210.get(dot_arrow_head) if pgf_arrow_head: output_arrow_style = output_arrow_style.replace(">", pgf_arrow_head) if dot_arrow_tail: pgf_arrow_tail = self.arrows_map_210.get(dot_arrow_tail) if pgf_arrow_tail: output_arrow_style = output_arrow_style.replace("<", pgf_arrow_tail) return output_arrow_style def init_template_vars(self): DotConvBase.init_template_vars(self) if self.options.get('crop', False): cropcode = "\usepackage[active,tightpage]{preview}\n" + \ "\PreviewEnvironment{tikzpicture}\n" + \ "\setlength\PreviewBorder{%s}" % self.options.get('margin', '0pt') else: cropcode = "" variables = {'<>': cropcode} self.templatevars.update(variables) def get_node_preproc_code(self, node): lblstyle = node.attr.get('lblstyle', '') text = node.attr.get('texlbl', '') if lblstyle: return " \\tikz \\node[%s] {%s};\n" % (lblstyle, text) else: return r"\tikz \node {" + text + "};" def get_edge_preproc_code(self, edge, attribute="texlbl"): lblstyle = edge.attr.get('lblstyle', '') text = edge.attr.get(attribute, '') if lblstyle: return " \\tikz \\node[%s] {%s};\n" % (lblstyle, text) else: return r"\tikz \node " + "{" + text + "};" def get_graph_preproc_code(self, graph): lblstyle = graph.attr.get('lblstyle', '') text = graph.attr.get('texlbl', '') if lblstyle: return " \\tikz \\node[%s] {%s};\n" % (lblstyle, text) else: return r"\tikz \node {" + text + "};" TIKZ_TEMPLATE = r"""\documentclass{article} \usepackage[x11names, rgb]{xcolor} \usepackage[<>]{inputenc} \usepackage{tikz} \usetikzlibrary{snakes,arrows,shapes} \usepackage{amsmath} <>% \usepackage[active,auctex]{preview} <>% <>% <> <>% <> <>% \begin{document} \pagestyle{empty} % <>% <> <>% % <> \enlargethispage{100cm} % Start of code \begin{tikzpicture}[>=latex',line join=bevel,<>] <>% <> <>% \end{tikzpicture} % End of code <> % \end{document} % <> \begin{tikzpicture}[>=latex,line join=bevel,<>] <>% <> <>% \end{tikzpicture} <> <> <>% <> <>% <> """ TIKZ210_TEMPLATE = r"""\documentclass{article} % dot2tex template for PGF 2.10 \usepackage[x11names, rgb]{xcolor} \usepackage[<>]{inputenc} \usepackage{tikz} \usetikzlibrary{snakes,arrows,shapes} \usepackage{amsmath} <>% \usepackage[active,auctex]{preview} <>% <>% <> <>% <> <>% \begin{document} \pagestyle{empty} % <>% <> <>% % <> \enlargethispage{100cm} % Start of code \begin{tikzpicture}[>=latex',line join=bevel,<>] <>% <> <>% \end{tikzpicture} % End of code <> % \end{document} % <> \begin{tikzpicture}[>=latex,line join=bevel,<>] <>% <> <>% \end{tikzpicture} <> <> <>% <> <>% <> """ TIKZ118_TEMPLATE = r"""\documentclass{article} \usepackage[x11names, rgb]{xcolor} \usepackage[<>]{inputenc} \usepackage{tikz} \usepackage{pgflibrarysnakes} \usepackage{pgflibraryarrows,pgflibraryshapes} \usepackage{amsmath} <>% \usepackage[active,auctex]{preview} <>% <>% <>% <>% \begin{document} \pagestyle{empty} % <>% <> <>% % <> \enlargethispage{100cm} % Start of code \begin{tikzpicture}[>=latex',join=bevel,<>] <>% <> <>% \end{tikzpicture} % End of code <> % \end{document} % <> \begin{tikzpicture}[>=latex,join=bevel,<>] <>% <> <>% \end{tikzpicture} <> <> <>% <> <>% <> """ class Dot2TikZConv(Dot2PGFConv): """A backend that utilizes the node and edge mechanism of PGF/TikZ""" shape_map = {'doublecircle': 'circle, double', 'box': 'rectangle', 'rect': 'rectangle', 'none': 'draw=none', 'plaintext': 'draw=none', 'polygon': 'regular polygon, regular polygon sides=7', 'triangle': 'regular polygon, regular polygon sides=3', 'square': 'regular polygon, regular polygon sides=4', 'pentagon': 'regular polygon, regular polygon sides=5', 'hexagon': 'regular polygon, regular polygon sides=6', 'septagon': 'regular polygon, regular polygon sides=7', 'octagon': 'regular polygon, regular polygon sides=8', 'point': 'circle, fill', 'ellipse': 'ellipse', 'oval': 'ellipse', 'diamond': 'diamond', 'trapezium': 'trapezium', 'star': 'star' } compass_map = {'n': 'north', 'ne': 'north east', 'e': 'east', 'se': 'south east', 's': 'south', 'sw': 'south west', 'w': 'west', 'nw': 'north west', 'center': 'center'} def __init__(self, options=None): # to connect nodes they have to defined. Therefore we have to ensure # that code for generating nodes is outputted first. options = options or {} options['switchdraworder'] = True options['flattengraph'] = True options['rawdim'] = True if options.get('pgf118', False): self.template = TIKZ118_TEMPLATE elif options.get('pgf210', False): self.template = TIKZ210_TEMPLATE else: self.template = TIKZ_TEMPLATE DotConvBase.__init__(self, options) self.styles = dict(dashed='dashed', dotted='dotted', bold='very thick', filled='fill', invis="", invisible="", rounded='rounded corners', ) self.dashstyles = dict( dashed='\pgfsetdash{{3pt}{3pt}}{0pt}', dotted='\pgfsetdash{{\pgflinewidth}{2pt}}{0pt}', bold='\pgfsetlinewidth{1.2pt}') def set_options(self): Dot2PGFConv.set_options(self) self.options['tikzedgelabels'] = self.options.get('tikzedgelabels', '') \ or getboolattr(self.main_graph, 'd2ttikzedgelabels', '') self.options['styleonly'] = self.options.get('styleonly', '') \ or getboolattr(self.main_graph, 'd2tstyleonly', '') self.options['nodeoptions'] = self.options.get('nodeoptions', '') \ or getattr(self.main_graph, 'd2tnodeoptions', '') self.options['edgeoptions'] = self.options.get('edgeoptions', '') \ or getattr(self.main_graph, 'd2tedgeoptions', '') def output_node_comment(self, node): # With the node syntax comments are unnecessary return "" def set_tikzcolor(self, color, colorname): res = self.convert_color(color, True) if len(res) == 2: ccolor, opacity = res if not (opacity == '1'): log.warning('Opacity not supported yet: %s', res) else: ccolor = res s = "" if ccolor.startswith('{'): # rgb or hsb s += " \definecolor{%s}%s;\n" % (colorname, ccolor) cname = colorname else: cname = color return s, cname def get_node_preproc_code(self, node): lblstyle = node.attr.get('lblstyle', '') shape = node.attr.get('shape', 'ellipse') shape = self.shape_map.get(shape, shape) #s += "%% %s\n" % (shape) label = node.attr.get('texlbl', '') style = node.attr.get('style', " ") or " " if lblstyle: if style.strip(): style += ',' + lblstyle else: style = lblstyle sn = "" if self.options.get('styleonly'): sn += "\\tikz \\node [%s] {%s};\n" % \ (style, label) else: sn += "\\tikz \\node [draw,%s,%s] {%s};\n" % \ (shape, style, label) return sn def do_nodes(self): s = "" nodeoptions = self.options.get('nodeoptions', None) if nodeoptions: s += "\\begin{scope}[%s]\n" % nodeoptions for node in self.nodes: self.currentnode = node # detect node type dotshape = getattr(node, 'shape', 'ellipse') shape = None if node.attr.get('style') in ['invis', 'invisible']: shape = "coordinate" else: shape = self.shape_map.get(dotshape, shape) if shape is None: shape = 'ellipse' pos = getattr(node, 'pos', None) if not pos: continue x, y = pos.split(',') if dotshape != 'point': label = self.get_label(node) else: label = '' pos = "%sbp,%sbp" % (smart_float(x), smart_float(y)) style = node.attr.get('style') or "" if node.attr.get('lblstyle'): if style: style += ',' + node.attr['lblstyle'] else: style = node.attr['lblstyle'] if node.attr.get('exstyle'): if style: style += ',' + node.attr['exstyle'] else: style = node.attr['exstyle'] sn = "" sn += self.output_node_comment(node) sn += self.start_node(node) if shape == "coordinate": sn += " \\coordinate (%s) at (%s);\n" % (tikzify(node.name), pos) elif self.options.get('styleonly'): sn += " \\node (%s) at (%s) [%s] {%s};\n" % \ (tikzify(node.name), pos, style, label) else: color = node.attr.get('color', '') drawstr = 'draw' if style.strip() == 'filled': fillcolor = node.attr.get('fillcolor') or \ node.attr.get('color') or "gray" drawstr = 'fill,draw' style = '' if color: code, color = self.set_tikzcolor(color, 'strokecolor') sn += code code, fillcolor = self.set_tikzcolor(fillcolor, 'fillcolor') sn += code drawstr = "draw=%s,fill=%s" % (color, fillcolor) else: code, fillcolor = self.set_tikzcolor(fillcolor, 'fillcolor') sn += code drawstr = "draw,fill=%s" % fillcolor elif color: code, color = self.set_tikzcolor(color, 'strokecolor') sn += code drawstr += '=' + color if style.strip(): sn += " \\node (%s) at (%s) [%s,%s,%s] {%s};\n" % \ (tikzify(node.name), pos, drawstr, shape, style, label) else: sn += " \\node (%s) at (%s) [%s,%s] {%s};\n" % \ (tikzify(node.name), pos, drawstr, shape, label) sn += self.end_node(node) s += sn if nodeoptions: s += "\\end{scope}\n" self.body += s def do_edges(self): s = "" edgeoptions = self.options.get('edgeoptions', None) if edgeoptions: s += "\\begin{scope}[%s]\n" % edgeoptions for edge in self.edges: general_draw_string = getattr(edge, '_draw_', "") label_string = getattr(edge, '_ldraw_', "") head_arrow_string = getattr(edge, '_hdraw_', "") tail_arrow_string = getattr(edge, '_tdraw_', "") tail_label_string = getattr(edge, '_tldraw_', "") head_label_string = getattr(edge, '_hldraw_', "") topath = getattr(edge, 'topath', None) s += self.draw_edge(edge) if not self.options.get('tikzedgelabels', False) and not topath: s += self.do_drawstring(label_string, edge) s += self.do_drawstring(tail_label_string, edge, "tailtexlbl") s += self.do_drawstring(head_label_string, edge, "headtexlbl") else: s += self.do_drawstring(tail_label_string, edge, "tailtexlbl") s += self.do_drawstring(head_label_string, edge, "headtexlbl") if edgeoptions: s += "\\end{scope}\n" self.body += s def draw_edge(self, edge): s = "" if edge.attr.get('style', '') in ['invis', 'invisible']: return "" edges = self.get_edge_points(edge) if len(edges) > 1: log.warning('The tikz output format does not support edge' 'concentrators yet. Expect ugly output or try the pgf or ' 'pstricks output formats.') for arrowstyle, points in edges: # PGF uses the fill style when drawing some arrowheads. We have to # ensure that the fill color is the same as the pen color. color = edge.attr.get('color', '') pp = [] for point in points: p = point.split(',') pp.append("(%sbp,%sbp)" % (smart_float(p[0]), smart_float(p[1]))) edgestyle = edge.attr.get('style') styles = [] if arrowstyle != '--': #styles.append(arrowstyle) styles = [arrowstyle] if edgestyle: edgestyles = [self.styles.get(key.strip(), key.strip()) \ for key in edgestyle.split(',') if key] styles.extend(edgestyles) stylestr = ",".join(styles) if color: code, color = self.set_tikzcolor(color, 'strokecolor') s += code stylestr = color + ',' + stylestr src = tikzify(edge.get_source()) # check for a port if edge.src_port: src_anchor = self.compass_map.get(edge.src_port.split(':')[-1], '') if src_anchor: src = "%s.%s" % (src, src_anchor) dst = tikzify(edge.get_destination()) if edge.dst_port: dst_anchor = self.compass_map.get(edge.dst_port.split(':')[-1], '') if dst_anchor: dst = "%s.%s" % (dst, dst_anchor) topath = edge.attr.get('topath', None) pstrs = ["%s .. controls %s and %s " % p for p in nsplit(pp, 3)] pstrs[0] = "(%s) ..controls %s and %s " % (src, pp[1], pp[2]) extra = "" if self.options.get('tikzedgelabels', False) or topath: edgelabel = self.get_label(edge) #log.warning('label: %s', edgelabel) lblstyle = getattr(edge, 'lblstyle', '') exstyle = getattr(edge, 'exstyle', '') if exstyle: if lblstyle: lblstyle += ',' + exstyle else: lblstyle = exstyle if lblstyle: lblstyle = '[' + lblstyle + ']' else: lblstyle = '' if edgelabel: extra = " node%s {%s}" % (lblstyle, edgelabel) if topath: s += " \draw [%s] (%s) to[%s]%s (%s);\n" % (stylestr, src, topath, extra, dst) elif not self.options.get('straightedges', False): s += " \draw [%s] %s ..%s (%s);\n" % (stylestr, " .. ".join(pstrs), extra, dst) else: s += " \draw [%s] (%s) --%s (%s);\n" % (stylestr, src, extra, dst) return s def start_node(self, node): return "" def end_node(self, node): return "" PSTRICKSN_TEMPLATE = r"""\documentclass{article} % <> \usepackage[x11names]{xcolor} \usepackage[<>]{inputenc} \usepackage{graphicx} \usepackage{pst-all} \usepackage[a3paper,landscape]{geometry} \usepackage{amsmath} <>% \usepackage[active,auctex]{preview} <>% <>% <>% \begin{document} \pagestyle{empty} <>% <>% <>% <>% \enlargethispage{100cm} % Start of code \begin{pspicture}[linewidth=1bp<>]<> \pstVerb{2 setlinejoin} % set line join style to 'mitre' <>% <> <>% \end{pspicture} % End of code <>% \end{document} % <> \begin{pspicture}[linewidth=1bp<>]<> \pstVerb{2 setlinejoin} % set line join style to 'mitre' <>% <> <>% \end{pspicture} <> % <> <>% <> <>% <> """ # ----------------- mgn -------------- class Dot2PSTricksNConv(Dot2PSTricksConv): """A backend that utilizes the node and edge mechanism of PSTricks-Node""" def __init__(self, options=None): options = options or {} # to connect nodes they have to defined. Therefore we have to ensure # that code for generating nodes is outputted first. options['switchdraworder'] = True options['flattengraph'] = True options['rawdim'] = True self.template = PSTRICKSN_TEMPLATE Dot2PSTricksConv.__init__(self, options) def output_node_comment(self, node): # With the node syntax comments are unnecessary return "" def do_nodes(self): s = "" for node in self.nodes: self.currentnode = node psshadeoption = getattr(node, 'psshadeoption', '') psshape = getattr(node, 'psshape', '') # detect node type, if psshape is not set if len(psshape) == 0: shape = getattr(node, 'shape', 'ellipse') # box -> psframebox # circle -> pscirclebox # rectangle -> psframebox psshape = "psframebox" if shape == "circle": psshape = "pscirclebox" if shape == "ellipse": psshape = "psovalbox" if shape == "triangle": psshape = "pstribox" # TODO incomplete width = getattr(node, 'width', '1') height = getattr(node, 'height', '1') psbox = getattr(node, 'psbox', 'false') color = getattr(node, 'color', '') fillcolor = getattr(node, 'fillcolor', '') if len(color) > 0: psshadeoption = "linecolor=" + color + "," + psshadeoption if len(fillcolor) > 0: psshadeoption = "fillcolor=" + fillcolor + "," + psshadeoption style = getattr(node, 'style', '') if len(style) > 0: if style == "dotted": psshadeoption = "linestyle=dotted," + psshadeoption if style == "dashed": psshadeoption = "linestyle=dashed," + psshadeoption if style == "solid": psshadeoption = "linestyle=solid," + psshadeoption if style == "bold": psshadeoption = "linewidth=2pt," + psshadeoption pos = getattr(node, 'pos', None) if not pos: continue x, y = pos.split(',') label = self.get_label(node) pos = "%sbp,%sbp" % (smart_float(x), smart_float(y)) # TODO style sn = "" sn += self.output_node_comment(node) sn += self.start_node(node) if psbox == "false": sn += "\\rput(%s){\\rnode{%s}{\\%s[%s]{%s}}}\n" % \ (pos, tikzify(node.name), psshape, psshadeoption, label) else: sn += "\\rput(%s){\\rnode{%s}{\\%s[%s]{\parbox[c][%sin][c]{%sin}{\centering %s}}}}\n" % \ (pos, tikzify(node.name), psshape, psshadeoption, height, width, label) sn += self.end_node(node) s += sn self.body += s def do_edges(self): s = "" for edge in self.edges: s += self.draw_edge(edge) self.body += s def draw_edge(self, edge): s = "" edges = self.get_edge_points(edge) for arrowstyle, points in edges: styles = [] psarrow = getattr(edge, 'psarrow', '') if len(psarrow) == 0: stylestr = '-' else: stylestr = psarrow psedge = getattr(edge, 'psedge', 'ncline') psedgeoption = getattr(edge, 'psedgeoption', '') color = getattr(edge, 'color', '') fillcolor = getattr(edge, 'fillcolor', '') if len(color) > 0: psedgeoption = "linecolor=" + color + "," + psedgeoption if len(fillcolor) > 0: psedgeoption = "fillcolor=" + fillcolor + "," + psedgeoption style = getattr(edge, 'style', '') if len(style) > 0: if style == "dotted": psedgeoption = "linestyle=dotted," + psedgeoption if style == "dashed": psedgeoption = "linestyle=dashed," + psedgeoption if style == "solid": psedgeoption = "linestyle=solid," + psedgeoption if style == "bold": psedgeoption = "linewidth=2pt," + psedgeoption pslabel = getattr(edge, 'pslabel', 'ncput') pslabeloption = getattr(edge, 'pslabeloption', '') label = getattr(edge, 'label', '') headlabel = getattr(edge, 'headlabel', '') taillabel = getattr(edge, 'taillabel', '') src = tikzify(edge.get_source()) dst = tikzify(edge.get_destination()) s = "\\%s[%s]{%s}{%s}{%s}\n" % (psedge, psedgeoption, stylestr, src, dst) if len(label) != 0: s += "\\%s[%s]{%s}\n" % (pslabel, pslabeloption, label) if len(headlabel) != 0: pslabelhead = 'npos=0.8,' + pslabeloption s += "\\%s[%s]{%s}\n" % (pslabel, pslabelhead, headlabel) if len(taillabel) != 0: pslabeltail = 'npos=0.2,' + pslabeloption s += "\\%s[%s]{%s}\n" % (pslabel, pslabeltail, taillabel) return s def start_node(self, node): return "" def end_node(self, node): return "" # ------------------ mgn ------------------ class PositionsDotConv(Dot2PGFConv): """A converter that returns a dictionary with node positions Returns a dictionary with node name as key and a (x, y) tuple as value. """ def output(self): positions = {} for node in self.nodes: pos = getattr(node, 'pos', None) if pos: try: positions[node.name] = map(int, pos.split(',')) except ValueError: positions[node.name] = map(float, pos.split(',')) return positions dimext = r""" ^.*? Preview:\s Snippet\s (?P\d*)\s ended. \((?P\d*)\+(?P\d*)x(?P\d*)\)""" class TeXDimProc: """Helper class for for finding the size of TeX snippets Uses preview.sty """ # Produce document # Create a temporary directory # Compile file with latex # Parse log file # Update graph with with and height parameters # Clean up def __init__(self, template, options): self.template = template self.snippets_code = [] self.snippets_id = [] self.options = options self.dimext_re = re.compile(dimext, re.MULTILINE | re.VERBOSE) pass def add_snippet(self, id, code): """A a snippet of code to be processed""" self.snippets_id.append(id) self.snippets_code.append(code) def process(self): """Process all snippets of code with TeX and preview.sty Results are stored in the texdimlist and texdims class attributes. Returns False if preprocessing fails """ import shutil if len(self.snippets_code) == 0: log.warning('No labels to preprocess') return True self.tempdir = tempfile.mkdtemp(prefix='dot2tex') log.debug('Creating temporary directroy %s' % self.tempdir) self.tempfilename = os.path.join(self.tempdir, 'dot2tex.tex') log.debug('Creating temporary file %s' % self.tempfilename) f = open(self.tempfilename, 'w') s = "" for n in self.snippets_code: s += "\\begin{preview}%\n" s += n.strip() + "%\n" s += "\end{preview}%\n" f.write(self.template.replace('<>', s)) f.close() s = open(self.tempfilename, 'r').read() log.debug('Code written to %s\n' % self.tempfilename + s) self.parse_log_file() shutil.rmtree(self.tempdir) log.debug('Temporary directory and files deleted') if self.texdims: return True else: return False # cleanup def parse_log_file(self): logfilename = os.path.splitext(self.tempfilename)[0] + '.log' tmpdir = os.getcwd() os.chdir(os.path.split(logfilename)[0]) if self.options.get('usepdflatex', False): command = 'pdflatex -interaction=nonstopmode %s' % self.tempfilename else: command = 'latex -interaction=nonstopmode %s' % self.tempfilename log.debug('Running command: %s' % command) sres = os.popen(command) resdata = sres.read() #log.debug('resdata: %s' % resdata) errcode = sres.close() log.debug('errcode: %s' % errcode) f = open(logfilename, 'r') logdata = f.read() log.debug('Logfile from LaTeX run: \n' + logdata) f.close() os.chdir(tmpdir) texdimdata = self.dimext_re.findall(logdata) log.debug('Texdimdata: ' + str(texdimdata)) if len(texdimdata) == 0: log.error('No dimension data could be extracted from dot2tex.tex.') self.texdims = None return c = 1.0 / 4736286 self.texdims = {} self.texdimlist = [(float(i[1]) * c, float(i[2]) * c, float(i[3]) * c) for i in texdimdata] self.texdims = dict(zip(self.snippets_id, self.texdimlist)) def create_options_parser(): """Create and and return an options parser""" usage = "Usage: %prog [options] " parser = OptionParser(usage) parser.add_option("-f", "--format", action="store", dest="format", choices=('pstricks', 'pgf', 'pst', 'tikz', 'psn'), help="Set output format to 'v' (pstricks, pgf, pst, tikz, psn) ", metavar="v") parser.add_option('-t', '--texmode', dest='texmode', default='verbatim', choices=('math', 'verbatim', 'raw'), help="Set text mode (verbatim, math, raw).") parser.add_option('-d', '--duplicate', dest='duplicate', action='store_true', default=False, help='Try to duplicate Graphviz graphics') parser.add_option('-s', '--straightedges', dest='straightedges', action='store_true', default=False, help='Force straight edges') parser.add_option('--template', dest='templatefile', action='store', metavar="FILE") parser.add_option('-o', '--output', dest='outputfile', action='store', metavar="FILE", default='', help="Write output to FILE") parser.add_option('-e', '--encoding', dest='encoding', action='store', choices=('utf8', 'latin1'), default=DEFAULT_TEXTENCODING, help="Set text encoding to utf8 or latin1") parser.add_option('-V', '--version', dest='printversion', action='store_true', help="Print version information and exit", default=False), parser.add_option('-w', '--switchdraworder', dest='switchdraworder', action="store_true", help="Switch draw order", default=False), parser.add_option('-p', '-c', '--preview', '--crop', dest='crop', action='store_true', help="Use preview.sty to crop graph", default=False), parser.add_option('--margin', dest='margin', action='store', help="Set preview margin", default="0pt"), parser.add_option('--docpreamble', dest='docpreamble', action='store', help="Insert TeX code in document preamble", metavar="TEXCODE"), parser.add_option('--figpreamble', dest='figpreamble', action='store', help="Insert TeX code in figure preamble", metavar="TEXCODE"), parser.add_option('--figpostamble', dest='figpostamble', action='store', help="Insert TeX code in figure postamble", metavar="TEXCODE"), parser.add_option('--graphstyle', dest='graphstyle', action='store', help="Insert graph style", metavar="STYLE"), parser.add_option('--gvcols', dest='gvcols', action="store_true", default=False, help="Include gvcols.tex"), parser.add_option('--figonly', dest='figonly', action="store_true", help="Output graph with no preamble", default=False) parser.add_option('--codeonly', dest='codeonly', action="store_true", help="Output only drawing commands", default=False) parser.add_option('--styleonly', dest='styleonly', action="store_true", help="Use style parameter only", default=False) parser.add_option('--debug', dest='debug', action="store_true", help="Show additional debugging information", default=False) parser.add_option('--preproc', dest='texpreproc', action="store_true", help='Preprocess graph through TeX', default=False) parser.add_option('--alignstr', dest='alignstr', action='store') parser.add_option('--valignmode', dest='valignmode', default='center', choices=('center', 'dot'), help="Set vertical alginment mode (center, dot).") parser.add_option('--nominsize', dest='nominsize', action="store_true", help="No minimum node sizes", default=False) parser.add_option('--usepdflatex', dest='usepdflatex', action="store_true", help="Use PDFLaTeX for preprocessing", default=False) parser.add_option('--tikzedgelabels', dest='tikzedgelabels', action="store_true", help="Let TikZ place edge labels", default=False) parser.add_option('--nodeoptions', dest='nodeoptions', action='store', help="Set options for nodes", metavar="OPTIONS"), parser.add_option('--edgeoptions', dest='edgeoptions', action='store', help="Set options for edges", metavar="OPTIONS"), parser.add_option('--runtests', dest='runtests', help="Run testes", action="store_true", default=False) parser.add_option("--prog", action="store", dest="prog", default='dot', choices=('dot', 'neato', 'circo', 'fdp', 'twopi'), help="Use v to process the graph", metavar="v") parser.add_option("--progoptions", action="store", dest="progoptions", default="", help="Pass options to graph layout engine", metavar="OPTIONS") parser.add_option('--autosize', dest='autosize', help="Preprocess graph and then run Graphviz", action="store_true", default=False) parser.add_option('--cache', dest='cache', action='store_true', default=False) parser.add_option('--pgf118', dest='pgf118', action='store_true', help="Generate code compatible with PGF 1.18", default=False) parser.add_option('--pgf210', dest='pgf210', action='store_true', help="Generate code compatible with PGF 2.10", default=False) return parser def process_cmd_line(): """Set up and parse command line options""" parser = create_options_parser() (options, args) = parser.parse_args() return options, args, parser def _runtests(): import doctest doctest.testmod() def print_version_info(): print "Dot2tex version % s" % __version__ def load_dot_file(filename): dotdata = open(filename, 'rU').readlines() log.info('Data read from %s' % filename) return dotdata ## Program interface def main(run_as_module=False, dotdata=None, options=None): """Run dot2tex and convert graph """ import platform global log if not run_as_module: options, args, parser = process_cmd_line() # configure console logger console = logging.StreamHandler() console.setLevel(logging.WARNING) # set a format which is simpler for console use formatter = logging.Formatter('%(levelname)-8s %(message)s') # tell the handler to use this format console.setFormatter(formatter) log.addHandler(console) if options.runtests: log.warning('running tests') _runtests() sys.exit(0) if options.debug: # initalize log handler if run_as_module: pass else: hdlr = logging.FileHandler('dot2tex.log') log.addHandler(hdlr) formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s') hdlr.setFormatter(formatter) log.setLevel(logging.DEBUG) nodebug = False else: nodebug = True log.info('------- Start of run -------') log.info("Dot2tex version % s" % __version__) log.info("System information:\n" " Python: %s \n" " Platform: %s\n" " Pyparsing: %s", sys.version_info, platform.platform(), dotparsing.pyparsing_version) log.info('dot2tex called with: %s' % sys.argv) log.info('Program started in %s' % os.getcwd()) if not run_as_module: if options.printversion: print_version_info() sys.exit(0) if len(args) == 0: log.info('Data read from standard input') dotdata = sys.stdin.readlines() elif len(args) == 1: try: log.debug('Attempting to read data from %s', args[0]) dotdata = load_dot_file(args[0]) except: if options.debug: log.exception('Failed to load file %s', args[0]) else: log.error('Failed to load file %s', args[0]) sys.exit(1) else: # Make sure dotdata is compatitle with the readlines data dotdata = dotdata.splitlines(True) s = "" # look for a line containing an \input m = re.search(r"^\s*\\input\{(?P.+?)\}\s*$", "".join(dotdata), re.MULTILINE) if m: filename = m.group(1) log.info('Found \\input{%s}', filename) try: dotdata = load_dot_file(filename) except: if options.debug: log.exception('Failed to load \\input{%s}', filename) else: log.error('Failed to load \\input{%s}', filename) if run_as_module: raise else: sys.exit(1) # I'm not quite sure why this is necessary, but some files # produces data with line endings that confuses pydot/pyparser. # Note: Whitespace at end of line is sometimes significant log.debug('Input data:\n' + "".join(dotdata)) lines = [line for line in dotdata if line.strip()] dotdata = "".join(lines) if options.cache and not run_as_module: import hashlib, cPickle if len(args) == 1 and options.outputfile: log.info('Caching enabled') inputfilename = args[0] # calculate hash from command line options and dotdata m = hashlib.md5() m.update(dotdata + "".join(sys.argv)) inputhash = m.digest() log.debug('Hash for %s and command line : %s', inputfilename, inputhash) # now look for a hash file hashfilename = path.join(path.dirname(inputfilename), 'dot2tex.cache') key = path.basename(inputfilename) hashes = {} if path.exists(hashfilename): log.info('Loading hash file %s', hashfilename) f = open(hashfilename, 'r') try: hashes = cPickle.load(f) except: log.exception('Failed to load hashfile') f.close() if hashes.get(key) == inputhash and path.exists(options.outputfile): log.info('Input has not changed. Will not convert input file') sys.exit(0) else: log.info('Hash or output file not found. Converting file') hashes[key] = inputhash f = open(hashfilename, 'w') try: cPickle.dump(hashes, f) except: log.warning('Failed to write hashfile') f.close() else: log.warning('You need to specify an input and output file for caching to work') pass # check for output format attribute fmtattr = re.findall(r'd2toutputformat=([a-z]*)', dotdata) extraoptions = re.findall(r'^\s*d2toptions\s*=\s*"(.*?)"\s*;?', dotdata, re.MULTILINE) if fmtattr: log.info('Found outputformat attribute: %s', fmtattr[0]) gfmt = fmtattr[0] else: gfmt = None if extraoptions: log.debug('Found d2toptions attribute in graph: %s', extraoptions[0]) if run_as_module: parser = create_options_parser() (options, args) = parser.parse_args(extraoptions[0].split(), options) if options.debug and nodebug: # initalize log handler if not run_as_module: hdlr = logging.FileHandler('dot2tex.log') log.addHandler(hdlr) formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s') hdlr.setFormatter(formatter) log.setLevel(logging.DEBUG) nodebug = False output_format = options.format or gfmt or DEFAULT_OUTPUT_FORMAT options.format = output_format if output_format in ('pstricks', 'pst'): conv = Dot2PSTricksConv(options.__dict__) elif output_format == 'psn': conv = Dot2PSTricksNConv(options.__dict__) elif output_format == 'pgf': conv = Dot2PGFConv(options.__dict__) elif output_format == 'tikz': conv = Dot2TikZConv(options.__dict__) elif output_format == 'positions': conv = PositionsDotConv(options.__dict__) else: log.error("Unknown output format %s" % options.format) sys.exit(1) try: s = conv.convert(dotdata) log.debug('Output:\n%s', s) if options.autosize: conv.dopreproc = False s = conv.convert(s) log.debug('Output after preprocessing:\n%s', s) if options.outputfile: f = open(options.outputfile, 'w') f.write(s) f.close() else: if not run_as_module: print s except dotparsing.ParseException, err: errmsg = "Parse error:\n%s\n" % err.line + " " * (err.column - 1) + "^\n" + str(err) log.error(errmsg) if options.debug: log.exception('Failed to parse graph') if run_as_module: raise else: log.error(helpmsg) except SystemExit: if run_as_module: raise except: #log.error("Could not convert the xdot input.") log.exception('Failed to process input') if run_as_module: raise log.info('------- End of run -------') if run_as_module: return s def convert_graph(dotsource, **kwargs): """Process dotsource and return LaTeX code Conversion options can be specified as keyword options. Example: convert_graph(data,format='tikz',crop=True) """ parser = create_options_parser() (options, args) = parser.parse_args([]) if kwargs.get('preproc', None): kwargs['texpreproc'] = kwargs['preproc'] del kwargs['preproc'] options.__dict__.update(kwargs) tex = main(True, dotsource, options) return tex if __name__ == '__main__': main() dot2tex-2.9.0/dot2tex/dotparsing.py0000666000000000000000000010616712335465553015410 0ustar 00000000000000# -*- coding: utf-8 -*- """Graphviz dot language parser. This parser is derived from the the parser distributed with the pydot module. Original authors are Michael Krause Ero Carrera """ __version__ = '2.9.0' __author__ = ['Michael Krause', 'Ero Carrera', 'Kjell Magne Fauske'] __license__ = 'MIT' import re import itertools import os import logging from itertools import izip import string from exceptions import KeyError, AttributeError import pyparsing from pyparsing import __version__ as pyparsing_version from pyparsing import (Literal, CaselessLiteral, Word, OneOrMore, Forward, Group, Optional, Combine, restOfLine, cStyleComment, nums, alphanums, ParseException, CharsNotIn, Suppress, Regex, removeQuotes) dot_keywords = ['graph', 'subgraph', 'digraph', 'node', 'edge', 'strict'] id_re_alpha_nums = re.compile('^[_a-zA-Z][a-zA-Z0-9_]*$') id_re_num = re.compile('^-?(\.[0-9]+|[0-9]+(\.[0-9]*)?)$') id_re_with_port = re.compile('^.*:([^"]+|[^"]*\"[^"]*\"[^"]*)$') id_re_dbl_quoted = re.compile('^\".*\"$', re.S) id_re_html = re.compile('^<<.*>>$', re.S) log = logging.getLogger("dot2tex") def needs_quotes(s): """Checks whether a string is a dot language ID. It will check whether the string is solely composed by the characters allowed in an ID or not. If the string is one of the reserved keywords it will need quotes too. """ if s in dot_keywords: return True chars = [ord(c) for c in s if ord(c) > 0x7f or ord(c) == 0] if chars: return True res = id_re_alpha_nums.match(s) if not res: res = id_re_num.search(s) if not res: #res = id_re_dbl_quoted.match(s) if not res: res = id_re_html.match(s) pass ## if not res: ## res = id_re_with_port.match(s) if not res: return True return False def quote_if_necessary(s): if not isinstance(s, basestring): return s tmp = s if needs_quotes(tmp): tmp = '"%s"' % s #.replace('"','\\"') tmp = tmp.replace('<<', '<') tmp = tmp.replace('>>', '>') return tmp def flatten(lst): for elem in lst: if type(elem) in (tuple, list): for i in flatten(elem): yield i else: yield elem # Code snippet from Python Cookbook, 2nd Edition by David Ascher, Alex Martelli # and Anna Ravenscroft; O'Reilly 2005 def windows(iterable, length=2, overlap=0, padding=True): it = iter(iterable) results = list(itertools.islice(it, length)) while len(results) == length: yield results results = results[length - overlap:] results.extend(itertools.islice(it, length - overlap)) if padding and results: results.extend(itertools.repeat(None, length - len(results))) yield results def nsplit(seq, n=2): """Split a sequence into pieces of length n If the lengt of the sequence isn't a multiple of n, the rest is discareded. Note that nsplit will strings into individual characters. Examples: >>> nsplit('aabbcc') [('a', 'a'), ('b', 'b'), ('c', 'c')] >>> nsplit('aabbcc',n=3) [('a', 'a', 'b'), ('b', 'c', 'c')] # Note that cc is discarded >>> nsplit('aabbcc',n=4) [('a', 'a', 'b', 'b')] """ return [xy for xy in izip(*[iter(seq)] * n)] # The following function is from the pydot project def __find_executables(path): """Used by find_graphviz path - single directory as a string If any of the executables are found, it will return a dictionary containing the program names as keys and their paths as values. Otherwise returns None """ success = False progs = {'dot': '', 'twopi': '', 'neato': '', 'circo': '', 'fdp': ''} was_quoted = False path = path.strip() if path.startswith('"') and path.endswith('"'): path = path[1:-1] was_quoted = True if os.path.isdir(path): for prg in progs.keys(): if progs[prg]: continue if os.path.exists(os.path.join(path, prg)): if was_quoted: progs[prg] = '"' + os.path.join(path, prg) + '"' else: progs[prg] = os.path.join(path, prg) success = True elif os.path.exists(os.path.join(path, prg + '.exe')): if was_quoted: progs[prg] = '"' + os.path.join(path, prg + '.exe') + '"' else: progs[prg] = os.path.join(path, prg + '.exe') success = True if success: return progs else: return None # The following function is from the pydot project # The multi-platform version of this 'find_graphviz' function was # contributed by Peter Cock # def find_graphviz(): """Locate Graphviz's executables in the system. Tries three methods: First: Windows Registry (Windows only) This requires Mark Hammond's pywin32 is installed. Secondly: Search the path It will look for 'dot', 'twopi' and 'neato' in all the directories specified in the PATH environment variable. Thirdly: Default install location (Windows only) It will look for 'dot', 'twopi' and 'neato' in the default install location under the "Program Files" directory. It will return a dictionary containing the program names as keys and their paths as values. If this fails, it returns None. """ # Method 1 (Windows only) # if os.sys.platform == 'win32': try: import win32api, win32con # Get the GraphViz install path from the registry # hkey = win32api.RegOpenKeyEx(win32con.HKEY_LOCAL_MACHINE, "SOFTWARE\AT&T Research Labs\Graphviz", 0, win32con.KEY_QUERY_VALUE) path = win32api.RegQueryValueEx(hkey, "InstallPath")[0] win32api.RegCloseKey(hkey) # Now append the "bin" subdirectory: # path = os.path.join(path, "bin") progs = __find_executables(path) if progs is not None: #print "Used Windows registry" return progs except ImportError: # Print a messaged suggesting they install these? # log.debug('The win32api is not installed') pass except: log.debug('Failed to access the registry key') # Method 2 (Linux, Windows etc) # if os.environ.has_key('PATH'): for path in os.environ['PATH'].split(os.pathsep): progs = __find_executables(path) if progs is not None: return progs # Method 3 (Windows only) # if os.sys.platform == 'win32': # Try and work out the equivalent of "C:\Program Files" on this # machine (might be on drive D:, or in a different language) # if os.environ.has_key('PROGRAMFILES'): # Note, we could also use the win32api to get this # information, but win32api may not be installed. path = os.path.join(os.environ['PROGRAMFILES'], 'ATT', 'GraphViz', 'bin') else: #Just in case, try the default... path = r"C:\Program Files\att\Graphviz\bin" progs = __find_executables(path) if progs is not None: #print "Used default install location" return progs for path in ( '/usr/bin', '/usr/local/bin', '/opt/local/bin', '/opt/bin', '/sw/bin', '/usr/share', '/Applications/Graphviz.app/Contents/MacOS/'): progs = __find_executables(path) if progs is not None: #print "Used path" return progs # Failed to find GraphViz # return None ADD_NODE = 'add_node' ADD_EDGE = 'add_edge' ADD_GRAPH_TO_NODE_EDGE = 'add_graph_to_node_edge' ADD_NODE_TO_GRAPH_EDGE = 'add_node_to_graph_edge' ADD_GRAPH_TO_GRAPH_EDGE = 'add_graph_to_graph_edge' ADD_SUBGRAPH = 'add_subgraph' SET_DEF_NODE_ATTR = 'set_def_node_attr' SET_DEF_EDGE_ATTR = 'set_def_edge_attr' SET_DEF_GRAPH_ATTR = 'set_def_graph_attr' SET_GRAPH_ATTR = 'set_graph_attr' class DotDataParser(object): """Container class for parsing Graphviz dot data""" def __init__(self): pass self.dotparser = self.define_dot_parser() # parse actions def _proc_node_id(self, toks): if len(toks) > 1: return toks[0], toks[1] else: return toks def _proc_attr_list(self, toks): return dict(nsplit(toks, 2)) def _proc_attr_list_combine(self, toks): if toks: first_dict = toks[0] for d in toks: first_dict.update(d) return first_dict return toks def _proc_attr_assignment(self, toks): return SET_GRAPH_ATTR, dict(nsplit(toks, 2)) def _proc_node_stmt(self, toks): """Return (ADD_NODE, node_name, options)""" if len(toks) == 2: return tuple([ADD_NODE] + list(toks)) else: return tuple([ADD_NODE] + list(toks) + [{}]) def _proc_edge_stmt(self, toks): """Return (ADD_EDGE, src, dest, options)""" edgelist = [] opts = toks[-1] if not isinstance(opts, dict): opts = {} for src, op, dest in windows(toks, length=3, overlap=1, padding=False): # is src or dest a subgraph? srcgraph = destgraph = False if len(src) > 1 and src[0] == ADD_SUBGRAPH: edgelist.append(src) srcgraph = True if len(dest) > 1 and dest[0] == ADD_SUBGRAPH: edgelist.append(dest) destgraph = True if srcgraph or destgraph: if srcgraph and destgraph: edgelist.append((ADD_GRAPH_TO_GRAPH_EDGE, src[1], dest[1], opts)) elif srcgraph: edgelist.append((ADD_GRAPH_TO_NODE_EDGE, src[1], dest, opts)) else: edgelist.append((ADD_NODE_TO_GRAPH_EDGE, src, dest[1], opts)) else: # ordinary edge edgelist.append((ADD_EDGE, src, dest, opts)) return edgelist def _proc_default_attr_stmt(self, toks): """Return (ADD_DEFAULT_NODE_ATTR,options""" if len(toks) == 1: gtype = toks attr = {} else: gtype, attr = toks if gtype == 'node': return SET_DEF_NODE_ATTR, attr elif gtype == 'edge': return SET_DEF_EDGE_ATTR, attr elif gtype == 'graph': return SET_DEF_GRAPH_ATTR, attr else: return 'unknown', toks def _proc_subgraph_stmt(self, toks): """Returns (ADD_SUBGRAPH, name, elements)""" return 'add_subgraph', toks[1], toks[2].asList() def _main_graph_stmt(self, toks): return toks[0], toks[1], toks[2], toks[3].asList() # The dot grammar is based on the dot parser from the pydot project. def define_dot_parser(self): """Define dot grammar Based on the grammar http://www.graphviz.org/doc/info/lang.html """ # punctuation colon = Literal(":") lbrace = Suppress("{") rbrace = Suppress("}") lbrack = Suppress("[") rbrack = Suppress("]") lparen = Literal("(") rparen = Literal(")") equals = Suppress("=") comma = Literal(",") dot = Literal(".") slash = Literal("/") bslash = Literal("\\") star = Literal("*") semi = Suppress(";") at = Literal("@") minus = Literal("-") pluss = Suppress("+") # keywords strict_ = CaselessLiteral("strict") graph_ = CaselessLiteral("graph") digraph_ = CaselessLiteral("digraph") subgraph_ = CaselessLiteral("subgraph") node_ = CaselessLiteral("node") edge_ = CaselessLiteral("edge") punctuation_ = "".join([c for c in string.punctuation if c not in '_']) + string.whitespace # token definitions identifier = Word(alphanums + "_").setName("identifier") #double_quoted_string = QuotedString('"', multiline=True,escChar='\\', # unquoteResults=True) # dblQuotedString double_quoted_string = Regex(r'\"(?:\\\"|\\\\|[^"])*\"', re.MULTILINE) double_quoted_string.setParseAction(removeQuotes) quoted_string = Combine(double_quoted_string + Optional(OneOrMore(pluss + double_quoted_string)), adjacent=False) alphastring_ = OneOrMore(CharsNotIn(punctuation_)) def parse_html(s, loc, toks): return '<<%s>>' % ''.join(toks[0]) opener = '<' closer = '>' try: html_text = pyparsing.nestedExpr(opener, closer, ((CharsNotIn( opener + closer).setParseAction(lambda t: t[0])) )).setParseAction(parse_html) except: log.debug('nestedExpr not available.') log.warning('Old version of pyparsing detected. Version 1.4.8 or ' 'later is recommended. Parsing of html labels may not ' 'work properly.') html_text = Combine(Literal("<<") + OneOrMore(CharsNotIn(",]"))) ID = (alphastring_ | html_text | quoted_string | #.setParseAction(strip_quotes) | identifier).setName("ID") float_number = Combine(Optional(minus) + OneOrMore(Word(nums + "."))).setName("float_number") righthand_id = (float_number | ID).setName("righthand_id") port_angle = (at + ID).setName("port_angle") port_location = ((OneOrMore(Group(colon + ID)) | Group(colon + lparen + ID + comma + ID + rparen))).setName("port_location") port = Combine((Group(port_location + Optional(port_angle)) | Group(port_angle + Optional(port_location)))).setName("port") node_id = (ID + Optional(port)) a_list = OneOrMore(ID + Optional(equals + righthand_id) + Optional(comma.suppress())).setName("a_list") attr_list = OneOrMore(lbrack + Optional(a_list) + rbrack).setName("attr_list").setResultsName('attrlist') attr_stmt = ((graph_ | node_ | edge_) + attr_list).setName("attr_stmt") edgeop = (Literal("--") | Literal("->")).setName("edgeop") stmt_list = Forward() graph_stmt = (lbrace + Optional(stmt_list) + rbrace + Optional(semi)).setName("graph_stmt") edge_point = Forward() edgeRHS = OneOrMore(edgeop + edge_point) edge_stmt = edge_point + edgeRHS + Optional(attr_list) subgraph = (Optional(subgraph_, '') + Optional(ID, '') + Group(graph_stmt)).setName("subgraph").setResultsName( 'ssubgraph') edge_point <<= (subgraph | graph_stmt | node_id) node_stmt = (node_id + Optional(attr_list) + Optional(semi)).setName("node_stmt") assignment = (ID + equals + righthand_id).setName("assignment") stmt = (assignment | edge_stmt | attr_stmt | subgraph | graph_stmt | node_stmt).setName("stmt") stmt_list <<= OneOrMore(stmt + Optional(semi)) graphparser = ((Optional(strict_, 'notstrict') + ((graph_ | digraph_)) + Optional(ID, '') + lbrace + Group(Optional(stmt_list)) + rbrace).setResultsName("graph")) singleLineComment = Group("//" + restOfLine) | Group("#" + restOfLine) # actions graphparser.ignore(singleLineComment) graphparser.ignore(cStyleComment) node_id.setParseAction(self._proc_node_id) assignment.setParseAction(self._proc_attr_assignment) a_list.setParseAction(self._proc_attr_list) edge_stmt.setParseAction(self._proc_edge_stmt) node_stmt.setParseAction(self._proc_node_stmt) attr_stmt.setParseAction(self._proc_default_attr_stmt) attr_list.setParseAction(self._proc_attr_list_combine) subgraph.setParseAction(self._proc_subgraph_stmt) #graph_stmt.setParseAction(self._proc_graph_stmt) graphparser.setParseAction(self._main_graph_stmt) return graphparser def build_graph(self, graph, tokens): subgraph = None for element in tokens: cmd = element[0] if cmd == ADD_NODE: cmd, nodename, opts = element node = graph.add_node(nodename, **opts) graph.allitems.append(node) elif cmd == ADD_EDGE: cmd, src, dest, opts = element srcport = destport = "" if isinstance(src, tuple): srcport = src[1] src = src[0] if isinstance(dest, tuple): destport = dest[1] dest = dest[0] edge = graph.add_edge(src, dest, srcport, destport, **opts) graph.allitems.append(edge) elif cmd in [ADD_GRAPH_TO_NODE_EDGE, ADD_GRAPH_TO_GRAPH_EDGE, ADD_NODE_TO_GRAPH_EDGE]: cmd, src, dest, opts = element srcport = destport = "" if isinstance(src, tuple): srcport = src[1] if isinstance(dest, tuple): destport = dest[1] if not (cmd == ADD_NODE_TO_GRAPH_EDGE): if cmd == ADD_GRAPH_TO_NODE_EDGE: src = subgraph else: src = prev_subgraph dest = subgraph else: dest = subgraph edges = graph.add_special_edge(src, dest, srcport, destport, **opts) graph.allitems.extend(edges) elif cmd == SET_GRAPH_ATTR: graph.set_attr(**element[1]) elif cmd == SET_DEF_NODE_ATTR: graph.add_default_node_attr(**element[1]) defattr = DotDefaultAttr('node', **element[1]) graph.allitems.append(defattr) elif cmd == SET_DEF_EDGE_ATTR: graph.add_default_edge_attr(**element[1]) defattr = DotDefaultAttr('edge', **element[1]) graph.allitems.append(defattr) elif cmd == SET_DEF_GRAPH_ATTR: graph.add_default_graph_attr(**element[1]) defattr = DotDefaultAttr('graph', **element[1]) graph.allitems.append(defattr) elif cmd == ADD_SUBGRAPH: cmd, name, elements = element #print "Adding subgraph" if subgraph: prev_subgraph = subgraph subgraph = graph.add_subgraph(name) subgraph = self.build_graph(subgraph, elements) graph.allitems.append(subgraph) return graph def build_top_graph(self, tokens): """Build a DotGraph instance from parsed data""" # get basic graph information strict = tokens[0] == 'strict' graphtype = tokens[1] directed = graphtype == 'digraph' graphname = tokens[2] # lets build the graph graph = DotGraph(graphname, strict, directed) self.graph = self.build_graph(graph, tokens[3]) def parse_dot_data(self, data): """Parse dot data and return a DotGraph instance""" try: try: self.dotparser.parseWithTabs() except: log.warning('Old version of pyparsing. Parser may not work correctly') ndata = data.replace('\\\n', '') #lines = data.splitlines() #lines = [l.rstrip('\\') for l in lines] tokens = self.dotparser.parseString(ndata) self.build_top_graph(tokens[0]) return self.graph except ParseException, err: #print err.line #print " "*(err.column-1) + "^" #print err #return None raise def parse_dot_data_debug(self, data): """Parse dot data""" try: try: self.dotparser.parseWithTabs() except: log.warning('Old version of pyparsing. Parser may not work correctly') tokens = self.dotparser.parseString(data) self.build_top_graph(tokens[0]) return tokens[0] except ParseException, err: print err.line print " " * (err.column - 1) + "^" print err return None from UserDict import DictMixin class OrderedDict(DictMixin): def __init__(self): self._keys = [] self._data = {} def __setitem__(self, key, value): if key not in self._data: self._keys.append(key) self._data[key] = value def __getitem__(self, key): return self._data[key] def __delitem__(self, key): del self._data[key] self._keys.remove(key) def __iter__(self): for key in self._keys: yield key def keys(self): return list(self._keys) def copy(self): ordered_dict_copy = OrderedDict() ordered_dict_copy._data = self._data.copy() ordered_dict_copy._keys = self._keys[:] return ordered_dict_copy class DotDefaultAttr(object): def __init__(self, element_type, **kwds): self.element_type = element_type self.attr = kwds def __str__(self): attrstr = ",".join(["%s=%s" % \ (quote_if_necessary(key), quote_if_necessary(val)) \ for key, val in self.attr.items()]) if attrstr: attrstr = "[%s]" % attrstr return "%s%s;\n" % (self.element_type, attrstr) else: return "" class DotParsingException(Exception): """Base class for dotparsing exceptions.""" class DotNode(object): """Class representing a DOT node""" def __init__(self, name, **kwds): """Create a Node instance Input: name - name of node. Have to be a string **kwds node attributes """ self.name = name self.attr = {} self.parent = None self.attr.update(kwds) def __str__(self): attrstr = ",".join(["%s=%s" % \ (quote_if_necessary(key), quote_if_necessary(val)) \ for key, val in self.attr.items()]) if attrstr: attrstr = "[%s]" % attrstr return "%s%s;\n" % (quote_if_necessary(self.name), attrstr) def __hash__(self): return hash(self.name) def __cmp__(self, other): try: if self.name == other: return 0 except: pass return -1 def __getattr__(self, name): try: return self.attr[name] except KeyError: raise AttributeError class DotGraph(object): """Class representing a DOT graph""" def __init__(self, name='G', strict=True, directed=False, **kwds): self._nodes = OrderedDict() self._allnodes = {} self._alledges = {} self._allgraphs = [] self._edges = {} self.strict = strict self.directed = directed self.subgraphs = [] self.name = name self.padding = " " self.seq = 0 self.allitems = [] self.attr = {} self.strict = strict self.level = 0 self.parent = None self.root = self self.adj = {} self.default_node_attr = {} self.default_edge_attr = {} self.default_graph_attr = {} self.attr.update(kwds) self._allgraphs.append(self) pass def __len__(self): return len(self._nodes) def __getattr__(self, name): try: return self.attr[name] except KeyError: raise AttributeError def get_name(self): if self.name.strip(): return quote_if_necessary(self.name) else: return "" def add_node(self, node, **kwds): if not isinstance(node, DotNode): node = DotNode(str(node), **kwds) n = node.name ## if n not in self.adj: ## self.adj[n]={} if n in self._allnodes: self._allnodes[n].attr.update(kwds) else: node.attr.update(self.default_node_attr) node.attr.update(kwds) self._allnodes[n] = node if not n in self._nodes: self._nodes[n] = node # Todo: Adding a node to a subgraph should insert it in parent graphs ## parent = self.parent ## if parent: ## print "Parent %s " % parent.name ## while parent: ## print "Parent %s " % parent.name ## if n not in parent._nodes: ## parent._nodes[n] = node ## parent = parent.parent ## else: ## parent = None return node def add_edge(self, src, dst, srcport="", dstport="", **kwds): u = self.add_node(src) v = self.add_node(dst) edge = DotEdge(u, v, self.directed, srcport, dstport, **self.default_edge_attr) edge.attr.update(kwds) ## if not self.strict: ## self.adj[u][v]=self.adj[u].get(v,[])+ [edge] ## if not self.directed: ## self.adj[v][u]=self.adj[v].get(u,[])+ [edge] ## ## else: ## self.adj[u][v]=edge ## if not self.directed: ## self.adj[v][u]=edge edgekey = (u.name, v.name) if edgekey in self._alledges: edgs = self._alledges[edgekey] if not self.strict: #edge.parent = edge_parent if edgekey in self._edges: self._edges[edgekey].append(edge) edgs.append(edge) ## else: ## edgs[0].attributes.update(edge.attributes) ## return edgs[0] else: ## edge.parent = edge_parent #edge.attr.update(self.default_edge_attr) self._alledges[edgekey] = [edge] self._edges[edgekey] = [edge] return edge def add_special_edge(self, src, dst, srcport="", dstport="", **kwds): src_is_graph = isinstance(src, DotSubGraph) dst_is_graph = isinstance(dst, DotSubGraph) edges = [] if src_is_graph: src_nodes = src.get_all_nodes() else: src_nodes = [src] if dst_is_graph: dst_nodes = dst.get_all_nodes() else: dst_nodes = [dst] for src_node in src_nodes: for dst_node in dst_nodes: edge = self.add_edge(src_node, dst_node, srcport, dstport, **kwds) edges.append(edge) return edges def add_default_node_attr(self, **kwds): self.default_node_attr.update(kwds) def add_default_edge_attr(self, **kwds): self.default_edge_attr.update(kwds) def add_default_graph_attr(self, **kwds): self.attr.update(kwds) ## #nodecls = self._allnodes[name] ## #nodeparent = nodecls.parent ## ## parent = self.parent ## if parent and (not (nodeparent == self)): ## while parent: ## ## if name in parent._nodes: ## ## del parent._nodes[name] ## # changing a node parent may trigger a change in ## # edge parent ## nodecls.parent = self ## parent = None ## self._nodes[name] = nodecls ## else: ## parent = parent.parent ## ## ## ## ## else: ## nodecls.parent = self ## self._allnodes[name]=nodecls ## self._nodes[name] = nodecls def delete_node(self, node): if isinstance(node, DotNode): name = node.name else: name = node try: del self._nodes[name] del self._allnodes[name] except: raise DotParsingException, "Node %s does not exists" % name def get_node(self, nodename): """Return node with name=nodename Returns None if node does not exists. """ return self._allnodes.get(nodename, None) ## def add_edge(self, src, dst,attributes={},**kwds): ## src = self.add_node(src) ## dst = self.add_node(dst) ## edge = DotEdge(src,dst,self,attributes=attributes,**kwds) ## edgekey = (src.name,dst.name) ## # Need to set correct edge parent ## # The edge should belong to the node with the lowest level number ## if src.parent.level <= dst.parent.level: ## edge_parent = src.parent ## else: ## edge_parent = dst.parent ## ## if edgekey in self._alledges: ## edgs = self._alledges[edgekey] ## if not self.strict: ## edge.parent = edge_parent ## edgs.append(edge) ## ## else: ## edgs[0].attributes.update(edge.attributes) ## return edgs[0] ## else: ## edge.parent = edge_parent ## ## self._alledges[edgekey] = [edge] ## self._edges[edgekey] = [edge] ## ## ## ## ## return edge def add_subgraph(self, subgraph, **kwds): if isinstance(subgraph, DotSubGraph): subgraphcls = subgraph else: subgraphcls = DotSubGraph(subgraph, self.strict, self.directed, **kwds) subgraphcls._allnodes = self._allnodes subgraphcls._alledges = self._alledges subgraphcls._allgraphs = self._allgraphs subgraphcls.parent = self subgraphcls.root = self.root subgraphcls.level = self.level + 1 subgraphcls.add_default_node_attr(**self.default_node_attr) subgraphcls.add_default_edge_attr(**self.default_edge_attr) subgraphcls.add_default_graph_attr(**self.attr) subgraphcls.padding += self.padding self.subgraphs.append(subgraphcls) self._allgraphs.append(subgraphcls) return subgraphcls def get_subgraphs(self): return self.subgraphs def get_edges(self): return self._edges def get_all_nodes(self): nodes = [] for subgraph in self.get_subgraphs(): nodes.extend(subgraph.get_all_nodes()) nodes.extend(self._nodes) return nodes def set_attr(self, **kwds): """Set graph attributes""" self.attr.update(kwds) #self.set_default_graph_attr(kwds) nodes = property(lambda self: self._nodes.itervalues()) allnodes = property(lambda self: self._allnodes.itervalues()) allgraphs = property(lambda self: self._allgraphs.__iter__()) alledges = property(lambda self: flatten(self._alledges.itervalues())) edges = property(get_edges) def __str__(self): s = "" padding = self.padding if len(self.allitems) > 0: grstr = "".join(["%s%s" % (padding, n) for n in map(str, flatten(self.allitems))]) attrstr = ",".join(["%s=%s" % \ (quote_if_necessary(key), quote_if_necessary(val)) \ for key, val in self.attr.items()]) if attrstr: attrstr = "%sgraph [%s];" % (padding, attrstr) if not isinstance(self, DotSubGraph): s = "" if self.strict: s += 'strict ' if self.directed: s += "digraph" else: s += "graph" return "%s %s{\n%s\n%s\n}" % (s, self.get_name(), grstr, attrstr) else: return "%s %s{\n%s\n%s\n%s}" % ('subgraph', self.get_name(), grstr, attrstr, padding) subgraphstr = "\n".join(["%s%s" % (padding, n) for n in map(str, self.subgraphs)]) nodestr = "".join(["%s%s" % (padding, n) for n in \ map(str, self._nodes.itervalues())]) edgestr = "".join(["%s%s" % (padding, n) for n in \ map(str, flatten(self.edges.itervalues()))]) attrstr = ",".join(["%s=%s" % \ (quote_if_necessary(key), quote_if_necessary(val)) \ for key, val in self.attr.items()]) if attrstr: attrstr = "%sgraph [%s];" % (padding, attrstr) if not isinstance(self, DotSubGraph): s = "" if self.strict: s += 'strict ' if self.directed: s += "digraph" else: s += "graph" return "%s %s{\n%s\n%s\n%s\n%s\n}" % (s, self.get_name(), subgraphstr, attrstr, nodestr, edgestr) else: return "%s %s{\n%s\n%s\n%s\n%s\n%s}" % ( 'subgraph', self.get_name(), subgraphstr, attrstr, nodestr, edgestr, padding) class DotEdge(object): """Class representing a DOT edge""" def __init__(self, src, dst, directed=False, src_port="", dst_port="", **kwds): self.src = src self.dst = dst self.src_port = src_port self.dst_port = dst_port #self.parent = parent_graph self.attr = {} if directed: self.conn = "->" else: self.conn = "--" self.attr.update(kwds) def __str__(self): attrstr = ",".join(["%s=%s" % \ (quote_if_necessary(key), quote_if_necessary(val)) \ for key, val in self.attr.items()]) if attrstr: attrstr = "[%s]" % attrstr return "%s%s %s %s%s %s;\n" % (quote_if_necessary(self.src.name), \ self.src_port, self.conn, \ quote_if_necessary(self.dst.name), self.dst_port, attrstr) def get_source(self): return self.src.name def get_destination(self): return self.dst.name def __getattr__(self, name): try: return self.attr[name] except KeyError: raise AttributeError class DotSubGraph(DotGraph): """Class representing a DOT subgraph""" def __init__(self, name='subgG', strict=True, directed=False, **kwds): DotGraph.__init__(self, name, strict, directed, **kwds) testgraph = r""" /* Test that the various id types are parsed correctly */ digraph G { TPR [label=TехПрог]; LFP [label=ЛиФП, pos="420,686", width="0.86"]; //"aa\\" -> b [label="12"]; } """ if __name__ == '__main__': import pprint print "Creating parser" gp = DotDataParser() tok = gp.parse_dot_data_debug(testgraph) #dg = parse_dot_data(testgraph) pprint.pprint(tok) print gp.graph dot2tex-2.9.0/dot2tex/__init__.py0000666000000000000000000000362712325531151014755 0ustar 00000000000000# -*- coding: utf-8 -*- """Convert graphviz graphs to LaTeX-friendly formats Various tools for converting graphs generated by the graphviz library to formats for use with LaTeX. Copyright (c) 2006-2014, Kjell Magne Fauske """ # Copyright (c) 2006-2014, Kjell Magne Fauske # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS # IN THE SOFTWARE. __author__ = 'Kjell Magne Fauske' __license__ = 'MIT' import dot2tex as d2t __version__ = d2t.__version__ from pyparsing import ParseException import logging class _NullHandler(logging.Handler): def emit(self, record): pass _h = _NullHandler() logging.getLogger("dot2tex").addHandler(_h) def get_logstream(): return None def dot2tex(dotsource, **kwargs): """Process dotsource and return LaTeX code Conversion options can be specified as keyword options. Example: dot2tex(data,format='tikz',crop=True) """ return d2t.convert_graph(dotsource, **kwargs) dot2tex-2.9.0/dot2tex.egg-info/0000777000000000000000000000000012335470751014337 5ustar 00000000000000dot2tex-2.9.0/dot2tex.egg-info/dependency_links.txt0000666000000000000000000000000112335470751020405 0ustar 00000000000000 dot2tex-2.9.0/dot2tex.egg-info/entry_points.txt0000666000000000000000000000006212335470751017633 0ustar 00000000000000[console_scripts] dot2tex = dot2tex.dot2tex:main dot2tex-2.9.0/dot2tex.egg-info/PKG-INFO0000666000000000000000000000265612335470751015445 0ustar 00000000000000Metadata-Version: 1.0 Name: dot2tex Version: 2.9.0 Summary: A Graphviz to LaTeX converter Home-page: https://github.com/kjellmf/dot2tex Author: Kjell Magne Fauske Author-email: kjellmf@gmail.com License: UNKNOWN Description: The purpose of dot2tex is to give graphs generated by the graph layout tool Graphviz_, a more LaTeX friendly look and feel. This is accomplished by: - Using native PSTricks_ and `PGF/TikZ`_ commands for drawing arrows, edges and nodes. - Typesetting labels with LaTeX, allowing mathematical notation. - Using backend specific styles to customize the output. .. _Graphviz: http://www.graphviz.org/ .. _PSTricks: http://tug.org/PSTricks/main.cgi/ .. _PGF/TikZ: http://www.ctan.org/tex-archive/help/Catalogue/entries/pgf.html Platform: UNKNOWN Classifier: Development Status :: 4 - Beta Classifier: Environment :: Console Classifier: Intended Audience :: Science/Research Classifier: License :: OSI Approved :: MIT License Classifier: Natural Language :: English Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Topic :: Scientific/Engineering :: Visualization Classifier: Topic :: Text Processing :: Markup :: LaTeX Classifier: Topic :: Utilities dot2tex-2.9.0/dot2tex.egg-info/requires.txt0000666000000000000000000000001112335470751016727 0ustar 00000000000000pyparsingdot2tex-2.9.0/dot2tex.egg-info/SOURCES.txt0000666000000000000000000000663612335470751016236 0ustar 00000000000000AUTHORS CHANGES LICENSE MANIFEST.in readme.md setup.py docs/Makefile docs/changelog.rst docs/common.inc docs/conf.py docs/customization_guide.rst docs/index.rst docs/installation_guide.rst docs/license.rst docs/make.bat docs/module_guide.rst docs/roadmap.rst docs/tipsandtricks.rst docs/usage_guide.rst docs/docgraphs/balls.dot docs/docgraphs/ex1.dot docs/docgraphs/ex1b.dot docs/docgraphs/ex2.dot docs/docgraphs/ex3.dot docs/docgraphs/ex4.dot docs/docgraphs/lblstyle.dot docs/docgraphs/nodesize.dot docs/docgraphs/pgfarrows.dot docs/docgraphs/preproc1.dot docs/docgraphs/pstarrows.dot docs/docgraphs/simple.dot docs/docgraphs/simplelbl.dot docs/docgraphs/topaths1.dot docs/docgraphs/valignmode1.dot docs/img/balls.pdf docs/img/balls.png docs/img/consistent.pdf docs/img/consistent.png docs/img/dot2texiex1.pdf docs/img/dot2texiex1.png docs/img/dot2texiex2.pdf docs/img/dot2texiex2.png docs/img/ex1.png docs/img/ex1bcomb.png docs/img/ex1comb.pdf docs/img/ex1comb.png docs/img/ex1def.png docs/img/ex1gstyle.pdf docs/img/ex1gstyle.png docs/img/ex1huge.pdf docs/img/ex1huge.png docs/img/ex2.pdf docs/img/ex2.png docs/img/fsm1.pdf docs/img/fsm1.png docs/img/lblstyle.pdf docs/img/lblstyle.png docs/img/nodewidth1.pdf docs/img/nodewidth1.png docs/img/nodewidth2.pdf docs/img/nodewidth2.png docs/img/pgfarrows.pdf docs/img/pgfarrows.png docs/img/pgfsimple.png docs/img/pgftikzsimple.pdf docs/img/pgftikzsimple.png docs/img/preproc1a.pdf docs/img/preproc1a.png docs/img/preproc1b.pdf docs/img/preproc1b.png docs/img/pstarrows.pdf docs/img/pstarrows.png docs/img/texmode.pdf docs/img/texmode.png docs/img/texmodeb.pdf docs/img/texmodeb.png docs/img/tikzedgelabels.pdf docs/img/tikzedgelabels.png docs/img/tikzsimple.png docs/img/topaths1.pdf docs/img/topaths1.png docs/img/valignmode0.pdf docs/img/valignmode0.png docs/img/valignmode1.pdf docs/img/valignmode1.png docs/img/valignmode2.pdf docs/img/valignmode2.png docs/img/valignmode3.pdf docs/img/valignmode3.png dot2tex/__init__.py dot2tex/dot2tex dot2tex/dot2tex.py dot2tex/dotparsing.py dot2tex.egg-info/PKG-INFO dot2tex.egg-info/SOURCES.txt dot2tex.egg-info/dependency_links.txt dot2tex.egg-info/entry_points.txt dot2tex.egg-info/requires.txt dot2tex.egg-info/top_level.txt examples/automata.dot examples/balls.dot examples/distances.dot examples/dotarrows.dot examples/dropshadows.dot examples/ex1.dot examples/graphanndtti.tex examples/graphofgraphs.dot examples/gvcols.tex examples/latexmarkup.dot examples/pgfarrows.dot examples/pgfsnakes.dot examples/poltab.dot examples/pstarrows.dot examples/showpoints.dot examples/sportsbracket.dot examples/subgraphs.dot examples/tank.dot examples/tikzautomata.dot examples/tikzshapes.dot examples/transp.dot tests/test_dot2tex.py tests/testgraphs/autosize.dot tests/testgraphs/clust.dot tests/testgraphs/colors.dot tests/testgraphs/compassports.dot tests/testgraphs/concentrate.dot tests/testgraphs/d2topts.dot tests/testgraphs/dot2tikznodeshapesmapping.dot tests/testgraphs/escstr.dot tests/testgraphs/invis.dot tests/testgraphs/issue.dot tests/testgraphs/latin1.dot tests/testgraphs/markup.dot tests/testgraphs/markup2.dot tests/testgraphs/multilines.dot tests/testgraphs/nodenames.dot tests/testgraphs/pststyles.dot tests/testgraphs/specialchars.dot tests/testgraphs/styles.dot tests/testgraphs/transp.dot tests/testgraphs/utf8.dot tests/testgraphs/parsetests/ids.dot tests/testgraphs/parsetests/multilines.dot tests/testgraphs/parsetests/quoting.dot tests/testgraphs/parsetests/subgraphs.dotdot2tex-2.9.0/dot2tex.egg-info/top_level.txt0000666000000000000000000000001012335470751017060 0ustar 00000000000000dot2tex dot2tex-2.9.0/examples/0000777000000000000000000000000012335470751013072 5ustar 00000000000000dot2tex-2.9.0/examples/automata.dot0000666000000000000000000000154712316606077015425 0ustar 00000000000000/* :Title: State machine :Tags: PGF, Preproc This state machine is `based on an example`_ from the PGF and TikZ manual. The original looks much better. For small graphs you usually get better looking results by drawing them manually. .. _based on an example: http://www.fauskes.net/pgftikzexamples/state-machine/ Generated with:: $ dot2tex -tmath --autosize --crop automata.dot > automata.tex */ digraph automata { rankdir=LR; node [shape=circle]; edge [style=">=stealth',shorten >=1pt"]; q_a [shape=doublecircle]; q_a -> q_b [label="0,1,L"]; q_b -> q_b [label="1,1,L"]; q_b -> q_c [label="0,1,L"]; q_c -> q_e [label="1,0,R"]; q_e -> q_a [label="1,0,R"]; q_a -> q_c [label="1,1,R"]; q_c -> q_d [label="0,1,L"]; q_d -> q_d [label="1,1,R"]; q_d -> q_a [label="0,1,R"]; } dot2tex-2.9.0/examples/balls.dot0000666000000000000000000000125612316606077014704 0ustar 00000000000000/* :Title: Snaked edges :Tags: PGF This graph uses special `PGF/TikZ`_ styles to create some interesting visual effects. To get the snaked edges run dot2tex with the ``-s`` option to force straight edges. Generated with:: $ dot2tex -s --prog fdp balls.dot > balls.tex .. _PGF/TikZ: http://www.ctan.org/tex-archive/help/Catalogue/entries/pgf.html */ graph G { node [shape=circle, fixedsize=True, width="0.2", style="ball color = green", label=""]; edge [style="snake=zigzag, green"]; a_1 -- c -- a_2; c [style="ball color=black"]; edge [style="snake=snake, blue", color=red]; node [style="ball color = red", label=""]; a_3 -- c -- a_4 --a_3; }dot2tex-2.9.0/examples/distances.dot0000666000000000000000000000113712316606077015562 0ustar 00000000000000/* :Title: Distances :Tags: TikZ, tikzedgelabels Generated with:: $ circo -Txdot distances.dot | dot2tex --crop --tikzedgelabels -ftikz -tmath -s > distances.tex */ graph G { node [shape=circle,fixedsize = true,width=0.1,style="fill=blue!20"]; edge [lblstyle="fill=black!10,inner sep=1pt,sloped"]; K -- F [label="120"]; H -- S [label="650"]; H -- M [label="780"]; D -- B [label="490"]; D -- M [label="600"]; B -- M [label="580"]; H -- N [label="600"]; F -- H [label="490"]; S -- B [label="630"]; S -- N [label="210"]; S -- M [label="230"]; F --M [label="100"]; }dot2tex-2.9.0/examples/dotarrows.dot0000666000000000000000000000256312334216704015627 0ustar 00000000000000/* :Title: Graphviz arrows :Tags: PGF Shows how Graphviz arrows are mapped to PGF/TikZ arrows Generated with:: $ dot2tex --prog=circo -s -ftikz dotarrows.dot > dotarrows.tex */ digraph G { graph [mindist=0.5]; node [texmode="math", shape=circle, style="circle, fill=green!20"]; edge [lblstyle="above,sloped"]; d2ttikzedgelabels=true; c -> n_1 [arrowhead="normal", label="normal"]; c -> n_2 [arrowhead="inv", label="inv"]; c -> n_3 [arrowhead="dot", label="dot"]; c -> n_4 [arrowhead="invdot", label="invdot"]; c -> n_5 [arrowhead="odot", label="odot"]; c -> n_6 [arrowhead="invodot", label="invodot"]; c -> n_7 [arrowhead="none", label="none"]; c -> n_8 [arrowhead="tee", label="tee"]; c -> n_9 [arrowhead="empty", label="empty"]; c -> "n_{10}" [arrowhead="invempty", label="invempty"]; c -> "n_{11}" [arrowhead="diamond", label="diamond"]; c -> "n_{12}" [arrowhead="odiamond", label="odiamond"]; c -> "n_{13}" [arrowhead="ediamond", label="ediamond"]; c -> "n_{14}" [arrowhead="crow", label="crow"]; c -> "n_{15}" [arrowhead="box", label="box"]; c -> "n_{16}" [arrowhead="obox", label="obox"]; c -> "n_{17}" [arrowhead="open", label="open"]; c -> "n_{18}" [arrowhead="halfopen", label="halfopen"]; c -> "n_{19}" [arrowhead="vee", label="vee"]; c -> "n_{20}" [arrowhead="circle", label="circle"]; c [style="fill=red!80"]; }dot2tex-2.9.0/examples/dropshadows.dot0000666000000000000000000000144412316606077016143 0ustar 00000000000000/* :Title: Node drop shadows :Tags: TikZ The ``tikz`` output format is highly customizable thanks to TikZ' powerful style options. In this example drop shadows have been added to all the nodes. **Note**: This example requires PGF 2.00 or later. Download the PDF to fully see the drop shadow effect. The bitmap rendering does not render transparency well. Generated with:: $ dot2tex -ftikz --prog neato -s --crop dropshadows.dot > dropshadows.tex */ graph G { d2tdocpreamble = "\usetikzlibrary{shadows}"; node [shape=circle,style="fill=red!20,circular drop shadow"]; "Node A" -- {"Node B"; "Node C"}; "Node B" -- {"Node E"; "Node G"}; "Node C" -- "Node D"; "Node D" -- {"Node F"; "Node H"}; "Node E" -- {"Node F"; "Node H"; "Node G"}; } dot2tex-2.9.0/examples/ex1.dot0000666000000000000000000000030212316606077014273 0ustar 00000000000000/* :Title: Basic example :Tags: PGF A basic example. Generated with:: $ dot2tex --preproc -tmath ex1.dot | dot2tex > ex1.tex */ digraph G { a_1-> a_2 -> a_3 -> a_1; }dot2tex-2.9.0/examples/graphanndtti.tex0000666000000000000000000000316412316606077016304 0ustar 00000000000000\documentclass{article} \usepackage{tikz} \usetikzlibrary{arrows,shapes} \usepackage{dot2texi} \begin{document} % Define layers \pgfdeclarelayer{background} \pgfdeclarelayer{foreground} \pgfsetlayers{background,main,foreground} % The scale option is useful for adjusting spacing between nodes. % Note that this works best when straight lines are used to connect % the nodes. \begin{tikzpicture}[>=latex',scale=0.8] % set node style \tikzstyle{n} = [draw,shape=circle,minimum size=2em, inner sep=0pt,fill=red!20] \begin{dot2tex}[dot,tikz,codeonly,styleonly,options=-s -tmath] digraph G { node [style="n"]; A_1 -> B_1; A_1 -> B_2; A_1 -> B_3; B_1 -> C_1; B_1 -> C_2; B_2 -> C_2; B_2 -> C_3; B_3 -> C_3; B_3 -> C_4; } \end{dot2tex} % annotations \node[left=1em] at (C_1.west) (l3) {Level 3}; \node at (l3 |- B_1) (l2){Level 2}; \node at (l3 |- A_1) (l1) {Level 1}; % Draw lines to separate the levels. First we need to calculate % where the middle is. \path (l3) -- coordinate (l32) (l2) -- coordinate (l21) (l1); \draw[dashed] (C_1 |- l32) -- (l32 -| C_4); \draw[dashed] (C_1 |- l21) -- (l21 -| C_4); \draw[<->,red] (A_1) to[out=-120,in=90] (C_2); % Highlight the A_1 -> B_1 -> C_2 path. Use layers to draw % behind everything. \begin{pgfonlayer}{background} \draw[rounded corners=2em,line width=3em,blue!20,cap=round] (A_1.center) -- (B_1.west) -- (C_2.center); \end{pgfonlayer} \end{tikzpicture} \end{document}dot2tex-2.9.0/examples/graphofgraphs.dot0000666000000000000000000000166412316606077016445 0ustar 00000000000000/* :Title: Graph of graphs :Tags: PGF This example shows that node content is not limited to text and math. You can for instance insert graphics and create this weird graph of graphs. Download the PDF and zoom in to see the details. Generated with:: $ neato -Txdot graphofgraphs.dot | dot2tex --crop -fpgf > graphofgraphs.tex */ digraph G { graph [mindist=0.5]; node [shape=plaintext, height=0.5]; edge [style="black!50, thin,-to"]; a_1 [texlbl="\raisebox{-.4\height}{\includegraphics[height=30bp]{balls.pdf}}"]; a_2 [texlbl="\raisebox{-.4\height}{\includegraphics[height=30bp]{pgfsnakes.pdf}}"]; a_3 [texlbl="\raisebox{-.4\height}{\includegraphics[height=30bp]{pgfarrows.pdf}}"]; a_4 [texlbl="\raisebox{-.4\height}{\includegraphics[height=30bp]{poltab.pdf}}"]; a_5 [texlbl="\raisebox{-.4\height}{\includegraphics[height=30bp]{subgraphs.pdf}}"]; a_1-> a_2 -> a_3 -> a_4 -> a_5 -> a_1; a_2 -> a_5; }dot2tex-2.9.0/examples/gvcols.tex0000666000000000000000000003430512316606077015117 0ustar 00000000000000\def\rangeHSB{255} \preparecolorset{HSB}{}{}{% aliceblue,147,15,255;% antiquewhite,24,35,250;% antiquewhite1,23,36,255;% antiquewhite2,23,36,238;% antiquewhite3,23,36,205;% antiquewhite4,24,34,139;% aquamarine,113,128,255;% aquamarine1,113,128,255;% aquamarine2,113,128,238;% aquamarine3,113,128,205;% aquamarine4,113,128,139;% azure,127,15,255;% azure1,127,15,255;% azure2,127,15,238;% azure3,127,14,205;% azure4,127,14,139;% beige,42,26,245;% bisque,23,58,255;% bisque1,23,58,255;% bisque2,23,58,238;% bisque3,22,58,205;% bisque4,23,58,139;% black,0,0,0;% blanchedalmond,25,49,255;% blue,170,255,255;% blue1,170,255,255;% blue2,170,255,238;% blue3,170,255,205;% blue4,170,255,139;% blueviolet,192,206,226;% brown,0,190,165;% brown1,0,191,255;% brown2,0,191,238;% brown3,0,191,205;% brown4,0,190,139;% burlywood,23,99,222;% burlywood1,23,100,255;% burlywood2,23,99,238;% burlywood3,23,99,205;% burlywood4,23,99,139;% cadetblue,128,103,160;% cadetblue1,131,103,255;% cadetblue2,131,102,238;% cadetblue3,131,103,205;% cadetblue4,131,102,139;% chartreuse,63,255,255;% chartreuse1,63,255,255;% chartreuse2,63,255,238;% chartreuse3,63,255,205;% chartreuse4,63,255,139;% chocolate,17,218,210;% chocolate1,17,219,255;% chocolate2,17,219,238;% chocolate3,17,218,205;% chocolate4,17,220,139;% coral,11,175,255;% coral1,7,169,255;% coral2,6,169,238;% coral3,6,169,205;% coral4,6,168,139;% cornflowerblue,154,147,237;% cornsilk,33,34,255;% cornsilk1,33,34,255;% cornsilk2,34,35,238;% cornsilk3,34,34,205;% cornsilk4,35,34,139;% crimson,246,231,220;% cyan,127,255,255;% cyan1,127,255,255;% cyan2,127,255,238;% cyan3,127,255,205;% cyan4,127,255,139;% darkgoldenrod,30,239,184;% darkgoldenrod1,30,240,255;% darkgoldenrod2,30,240,238;% darkgoldenrod3,30,240,205;% darkgoldenrod4,30,240,139;% darkgreen,85,255,100;% darkkhaki,39,110,189;% darkolivegreen,58,142,107;% darkolivegreen1,58,143,255;% darkolivegreen2,58,143,238;% darkolivegreen3,58,143,205;% darkolivegreen4,58,143,139;% darkorange,23,255,255;% darkorange1,21,255,255;% darkorange2,21,255,238;% darkorange3,21,255,205;% darkorange4,21,255,139;% darkorchid,198,192,204;% darkorchid1,198,193,255;% darkorchid2,198,192,238;% darkorchid3,198,192,205;% darkorchid4,198,192,139;% darksalmon,10,121,233;% darkseagreen,85,61,188;% darkseagreen1,85,62,255;% darkseagreen2,85,62,238;% darkseagreen3,85,62,205;% darkseagreen4,85,62,139;% darkslateblue,175,143,139;% darkslategray,127,103,79;% darkslategray1,127,104,255;% darkslategray2,127,103,238;% darkslategray3,127,104,205;% darkslategray4,127,104,139;% darkslategrey,127,103,79;% darkturquoise,128,255,209;% darkviolet,199,255,211;% deeppink,232,235,255;% deeppink1,232,235,255;% deeppink2,232,235,238;% deeppink3,232,235,205;% deeppink4,231,236,139;% deepskyblue,138,255,255;% deepskyblue1,138,255,255;% deepskyblue2,138,255,238;% deepskyblue3,138,255,205;% deepskyblue4,138,255,139;% dimgray,0,0,105;% dimgrey,0,0,105;% dodgerblue,148,225,255;% dodgerblue1,148,225,255;% dodgerblue2,148,225,238;% dodgerblue3,148,225,205;% dodgerblue4,148,225,139;% firebrick,0,206,178;% firebrick1,0,207,255;% firebrick2,0,207,238;% firebrick3,0,207,205;% firebrick4,0,207,139;% floralwhite,28,15,255;% forestgreen,85,192,139;% gainsboro,0,0,220;% ghostwhite,170,7,255;% gold,35,255,255;% gold1,35,255,255;% gold2,35,255,238;% gold3,35,255,205;% gold4,35,255,139;% goldenrod,30,217,218;% goldenrod1,30,218,255;% goldenrod2,30,218,238;% goldenrod3,30,218,205;% goldenrod4,30,218,139;% gray,0,0,192;% gray0,0,0,0;% gray1,0,0,3;% gray10,0,0,26;% gray100,0,0,255;% gray11,0,0,28;% gray12,0,0,31;% gray13,0,0,33;% gray14,0,0,36;% gray15,0,0,38;% gray16,0,0,41;% gray17,0,0,43;% gray18,0,0,46;% gray19,0,0,48;% gray2,0,0,5;% gray20,0,0,51;% gray21,0,0,54;% gray22,0,0,56;% gray23,0,0,59;% gray24,0,0,61;% gray25,0,0,64;% gray26,0,0,66;% gray27,0,0,69;% gray28,0,0,71;% gray29,0,0,74;% gray3,0,0,8;% gray30,0,0,77;% gray31,0,0,79;% gray32,0,0,82;% gray33,0,0,84;% gray34,0,0,87;% gray35,0,0,89;% gray36,0,0,92;% gray37,0,0,94;% gray38,0,0,97;% gray39,0,0,99;% gray4,0,0,10;% gray40,0,0,102;% gray41,0,0,105;% gray42,0,0,107;% gray43,0,0,110;% gray44,0,0,112;% gray45,0,0,115;% gray46,0,0,117;% gray47,0,0,120;% gray48,0,0,122;% gray49,0,0,125;% gray5,0,0,13;% gray50,0,0,127;% gray51,0,0,130;% gray52,0,0,133;% gray53,0,0,135;% gray54,0,0,138;% gray55,0,0,140;% gray56,0,0,143;% gray57,0,0,145;% gray58,0,0,148;% gray59,0,0,150;% gray6,0,0,15;% gray60,0,0,153;% gray61,0,0,156;% gray62,0,0,158;% gray63,0,0,161;% gray64,0,0,163;% gray65,0,0,166;% gray66,0,0,168;% gray67,0,0,171;% gray68,0,0,173;% gray69,0,0,176;% gray7,0,0,18;% gray70,0,0,179;% gray71,0,0,181;% gray72,0,0,184;% gray73,0,0,186;% gray74,0,0,189;% gray75,0,0,191;% gray76,0,0,194;% gray77,0,0,196;% gray78,0,0,199;% gray79,0,0,201;% gray8,0,0,20;% gray80,0,0,204;% gray81,0,0,207;% gray82,0,0,209;% gray83,0,0,212;% gray84,0,0,214;% gray85,0,0,217;% gray86,0,0,219;% gray87,0,0,222;% gray88,0,0,224;% gray89,0,0,227;% gray9,0,0,23;% gray90,0,0,229;% gray91,0,0,232;% gray92,0,0,235;% gray93,0,0,237;% gray94,0,0,240;% gray95,0,0,242;% gray96,0,0,245;% gray97,0,0,247;% gray98,0,0,250;% gray99,0,0,252;% green,85,255,255;% green1,85,255,255;% green2,85,255,238;% green3,85,255,205;% green4,85,255,139;% greenyellow,59,208,255;% grey,0,0,192;% grey0,0,0,0;% grey1,0,0,3;% grey10,0,0,26;% grey100,0,0,255;% grey11,0,0,28;% grey12,0,0,31;% grey13,0,0,33;% grey14,0,0,36;% grey15,0,0,38;% grey16,0,0,41;% grey17,0,0,43;% grey18,0,0,46;% grey19,0,0,48;% grey2,0,0,5;% grey20,0,0,51;% grey21,0,0,54;% grey22,0,0,56;% grey23,0,0,59;% grey24,0,0,61;% grey25,0,0,64;% grey26,0,0,66;% grey27,0,0,69;% grey28,0,0,71;% grey29,0,0,74;% grey3,0,0,8;% grey30,0,0,77;% grey31,0,0,79;% grey32,0,0,82;% grey33,0,0,84;% grey34,0,0,87;% grey35,0,0,89;% grey36,0,0,92;% grey37,0,0,94;% grey38,0,0,97;% grey39,0,0,99;% grey4,0,0,10;% grey40,0,0,102;% grey41,0,0,105;% grey42,0,0,107;% grey43,0,0,110;% grey44,0,0,112;% grey45,0,0,115;% grey46,0,0,117;% grey47,0,0,120;% grey48,0,0,122;% grey49,0,0,125;% grey5,0,0,13;% grey50,0,0,127;% grey51,0,0,130;% grey52,0,0,133;% grey53,0,0,135;% grey54,0,0,138;% grey55,0,0,140;% grey56,0,0,143;% grey57,0,0,145;% grey58,0,0,148;% grey59,0,0,150;% grey6,0,0,15;% grey60,0,0,153;% grey61,0,0,156;% grey62,0,0,158;% grey63,0,0,161;% grey64,0,0,163;% grey65,0,0,166;% grey66,0,0,168;% grey67,0,0,171;% grey68,0,0,173;% grey69,0,0,176;% grey7,0,0,18;% grey70,0,0,179;% grey71,0,0,181;% grey72,0,0,184;% grey73,0,0,186;% grey74,0,0,189;% grey75,0,0,191;% grey76,0,0,194;% grey77,0,0,196;% grey78,0,0,199;% grey79,0,0,201;% grey8,0,0,20;% grey80,0,0,204;% grey81,0,0,207;% grey82,0,0,209;% grey83,0,0,212;% grey84,0,0,214;% grey85,0,0,217;% grey86,0,0,219;% grey87,0,0,222;% grey88,0,0,224;% grey89,0,0,227;% grey9,0,0,23;% grey90,0,0,229;% grey91,0,0,232;% grey92,0,0,235;% grey93,0,0,237;% grey94,0,0,240;% grey95,0,0,242;% grey96,0,0,245;% grey97,0,0,247;% grey98,0,0,250;% grey99,0,0,252;% honeydew,85,15,255;% honeydew1,85,15,255;% honeydew2,85,15,238;% honeydew3,85,14,205;% honeydew4,85,14,139;% hotpink,233,150,255;% hotpink1,234,145,255;% hotpink2,235,141,238;% hotpink3,236,135,205;% hotpink4,234,148,139;% indianred,0,140,205;% indianred1,0,148,255;% indianred2,0,148,238;% indianred3,0,149,205;% indianred4,0,148,139;% indigo,194,255,130;% ivory,42,15,255;% ivory1,42,15,255;% ivory2,42,15,238;% ivory3,42,14,205;% ivory4,42,14,139;% khaki,38,106,240;% khaki1,39,112,255;% khaki2,39,112,238;% khaki3,39,111,205;% khaki4,39,111,139;% lavender,170,20,250;% lavenderblush,240,15,255;% lavenderblush1,240,15,255;% lavenderblush2,239,15,238;% lavenderblush3,240,14,205;% lavenderblush4,239,14,139;% lawngreen,64,255,252;% lemonchiffon,38,49,255;% lemonchiffon1,38,49,255;% lemonchiffon2,37,50,238;% lemonchiffon3,38,49,205;% lemonchiffon4,39,49,139;% lightblue,137,63,230;% lightblue1,138,64,255;% lightblue2,138,64,238;% lightblue3,138,63,205;% lightblue4,137,64,139;% lightcoral,0,119,240;% lightcyan,127,31,255;% lightcyan1,127,31,255;% lightcyan2,127,31,238;% lightcyan3,127,31,205;% lightcyan4,127,31,139;% lightgoldenrod,35,115,238;% lightgoldenrod1,35,116,255;% lightgoldenrod2,35,115,238;% lightgoldenrod3,35,115,205;% lightgoldenrod4,35,115,139;% lightgoldenrodyellow,42,40,250;% lightgray,0,0,211;% lightgrey,0,0,211;% lightpink,248,73,255;% lightpink1,249,81,255;% lightpink2,248,81,238;% lightpink3,249,80,205;% lightpink4,249,80,139;% lightsalmon,12,132,255;% lightsalmon1,12,132,255;% lightsalmon2,11,132,238;% lightsalmon3,12,133,205;% lightsalmon4,12,133,139;% lightseagreen,125,209,178;% lightskyblue,143,117,250;% lightskyblue1,143,79,255;% lightskyblue2,143,79,238;% lightskyblue3,142,79,205;% lightskyblue4,143,78,139;% lightslateblue,175,143,255;% lightslategray,148,56,153;% lightslategrey,148,56,153;% lightsteelblue,151,52,222;% lightsteelblue1,151,53,255;% lightsteelblue2,151,53,238;% lightsteelblue3,151,53,205;% lightsteelblue4,150,53,139;% lightyellow,42,31,255;% lightyellow1,42,31,255;% lightyellow2,42,31,238;% lightyellow3,42,31,205;% lightyellow4,42,31,139;% limegreen,85,192,205;% linen,21,20,250;% magenta,212,255,255;% magenta1,212,255,255;% magenta2,212,255,238;% magenta3,212,255,205;% magenta4,212,255,139;% maroon,239,185,176;% maroon1,228,203,255;% maroon2,228,203,238;% maroon3,228,204,205;% maroon4,228,203,139;% mediumaquamarine,113,128,205;% mediumblue,170,255,205;% mediumorchid,204,152,211;% mediumorchid1,203,153,255;% mediumorchid2,203,153,238;% mediumorchid3,203,153,205;% mediumorchid4,203,154,139;% mediumpurple,183,124,219;% mediumpurple1,183,125,255;% mediumpurple2,183,125,238;% mediumpurple3,183,125,205;% mediumpurple4,183,124,139;% mediumseagreen,103,169,179;% mediumslateblue,176,143,238;% mediumspringgreen,111,255,250;% mediumturquoise,125,167,209;% mediumvioletred,228,228,199;% midnightblue,170,198,112;% mintcream,106,9,255;% mistyrose,4,30,255;% mistyrose1,4,30,255;% mistyrose2,4,30,238;% mistyrose3,3,29,205;% mistyrose4,5,29,139;% moccasin,26,73,255;% navajowhite,25,81,255;% navajowhite1,25,81,255;% navajowhite2,25,82,238;% navajowhite3,25,82,205;% navajowhite4,25,82,139;% navy,170,255,128;% navyblue,170,255,128;% oldlace,27,23,253;% olivedrab,56,192,142;% olivedrab1,56,193,255;% olivedrab2,56,192,238;% olivedrab3,56,192,205;% olivedrab4,56,192,139;% orange,27,255,255;% orange1,27,255,255;% orange2,27,255,238;% orange3,27,255,205;% orange4,27,255,139;% orangered,11,255,255;% orangered1,11,255,255;% orangered2,11,255,238;% orangered3,11,255,205;% orangered4,11,255,139;% orchid,214,123,218;% orchid1,214,124,255;% orchid2,214,124,238;% orchid3,214,124,205;% orchid4,213,124,139;% palegoldenrod,38,72,238;% palegreen,85,100,251;% palegreen1,85,101,255;% palegreen2,85,100,238;% palegreen3,85,100,205;% palegreen4,85,100,139;% paleturquoise,127,67,238;% paleturquoise1,127,68,255;% paleturquoise2,127,68,238;% paleturquoise3,127,68,205;% paleturquoise4,127,67,139;% palevioletred,241,124,219;% palevioletred1,241,125,255;% palevioletred2,241,125,238;% palevioletred3,241,125,205;% palevioletred4,241,124,139;% papayawhip,26,41,255;% peachpuff,20,70,255;% peachpuff1,20,70,255;% peachpuff2,19,69,238;% peachpuff3,19,69,205;% peachpuff4,20,69,139;% peru,20,176,205;% pink,247,63,255;% pink1,245,73,255;% pink2,245,73,238;% pink3,245,74,205;% pink4,245,73,139;% plum,212,70,221;% plum1,212,68,255;% plum2,212,68,238;% plum3,212,68,205;% plum4,212,67,139;% powderblue,132,59,230;% purple,196,221,240;% purple1,191,207,255;% purple2,192,207,238;% purple3,192,207,205;% purple4,192,207,139;% red,0,255,255;% red1,0,255,255;% red2,0,255,238;% red3,0,255,205;% red4,0,255,139;% rosybrown,0,61,188;% rosybrown1,0,62,255;% rosybrown2,0,62,238;% rosybrown3,0,62,205;% rosybrown4,0,62,139;% royalblue,159,181,225;% royalblue1,159,183,255;% royalblue2,159,183,238;% royalblue3,159,182,205;% royalblue4,159,183,139;% saddlebrown,17,220,139;% salmon,4,138,250;% salmon1,9,150,255;% salmon2,9,150,238;% salmon3,9,150,205;% salmon4,9,150,139;% sandybrown,19,154,244;% seagreen,103,170,139;% seagreen1,103,171,255;% seagreen2,103,171,238;% seagreen3,103,171,205;% seagreen4,103,170,139;% seashell,17,16,255;% seashell1,17,16,255;% seashell2,18,17,238;% seashell3,18,17,205;% seashell4,18,16,139;% sienna,13,183,160;% sienna1,13,184,255;% sienna2,13,184,238;% sienna3,13,184,205;% sienna4,13,185,139;% skyblue,139,108,235;% skyblue1,144,120,255;% skyblue2,144,120,238;% skyblue3,144,120,205;% skyblue4,145,119,139;% slateblue,175,143,205;% slateblue1,175,144,255;% slateblue2,175,144,238;% slateblue3,175,144,205;% slateblue4,175,144,139;% slategray,148,56,144;% slategray1,149,56,255;% slategray2,149,56,238;% slategray3,148,57,205;% slategray4,149,56,139;% slategrey,148,56,144;% snow,0,5,255;% snow1,0,5,255;% snow2,0,5,238;% snow3,0,4,205;% snow4,0,3,139;% springgreen,106,255,255;% springgreen1,106,255,255;% springgreen2,106,255,238;% springgreen3,106,255,205;% springgreen4,106,255,139;% steelblue,146,155,180;% steelblue1,146,156,255;% steelblue2,146,156,238;% steelblue3,146,156,205;% steelblue4,147,155,139;% tan,24,84,210;% tan1,20,176,255;% tan2,20,176,238;% tan3,20,176,205;% tan4,20,176,139;% thistle,212,29,216;% thistle1,212,30,255;% thistle2,212,30,238;% thistle3,212,29,205;% thistle4,212,29,139;% tomato,6,184,255;% tomato1,6,184,255;% tomato2,6,184,238;% tomato3,6,184,205;% tomato4,6,185,139;% transparent,42,0,255;% turquoise,123,182,224;% turquoise1,129,255,255;% turquoise2,129,255,238;% turquoise3,129,255,205;% turquoise4,129,255,139;% violet,212,115,238;% violetred,227,215,208;% violetred1,235,193,255;% violetred2,235,192,238;% violetred3,235,192,205;% violetred4,235,192,139;% wheat,27,68,245;% wheat1,27,69,255;% wheat2,27,68,238;% wheat3,27,68,205;% wheat4,27,67,139;% white,0,0,255;% whitesmoke,0,0,245;% yellow,42,255,255;% yellow1,42,255,255;% yellow2,42,255,238;% yellow3,42,255,205;% yellow4,42,255,139;% yellowgreen,56,192,205}dot2tex-2.9.0/examples/latexmarkup.dot0000666000000000000000000000114312316606077016137 0ustar 00000000000000/* :Title: LaTeX markup :Tags: PGF */ digraph G { node [fontcolor=red]; subgraph cluster0 { node [style=filled,color=white, texmode=math]; style=filled; color=lightgrey; a_0 -> a_1 -> a_2 -> a_3; label="latex"; texlbl="\LaTeX"; } subgraph cluster1 { node [style=filled, texmode=math, fontcolor=red]; b_0 -> b_1 -> b_2 -> b_3; label = "process #2"; color=blue } start -> a_0; start -> b_0; a_1 -> b_3; b_2 -> a_3; a_3 -> a_0; a_3 -> end; b_3 -> end; start [shape=diamond, texlbl="${\frac{\sqrt{\gamma+\beta}}{x^2+y^2}}$"]; end [shape=Msquare]; }dot2tex-2.9.0/examples/pgfarrows.dot0000666000000000000000000000144312316606077015617 0ustar 00000000000000/* :Title: PGF and TikZ arrows :Tags: PGF Examples of PGF/TikZ style arrows. See chapter 14.1 in the PGF/TikZ manual for all availale arrow styles. Generated with:: $ dot2tex --prog=circo pgfarrows.dot > pgfarrows.tex */ digraph G { graph [mindist=0.5]; node [texmode="math", fixedsize=true, shape=circle, width=0.4, style="fill=green!20"]; c -> n_1 [style="-stealth", label="stealth"]; c -> n_2 [style="-to", label="to"]; c -> n_3 [style="-latex", label="latex"]; c -> n_4 [style="-diamond", label="diamond"]; c -> n_5 [style="-o", label="o"]; c -> n_6 [style="{-]}", label="]"]; c -> n_7 [style="-triangle 90", label="triangle 90"]; c -> n_8 [style="-hooks", label="hooks"]; c -> n_9 [style="->>", texmode="math", label=">>"]; c [style="fill=red!80"]; }dot2tex-2.9.0/examples/pgfsnakes.dot0000666000000000000000000000141512316606077015565 0ustar 00000000000000/* :Title: PGF snakes :Tags: PGF Examples of PGF/TikZ snake line styles. See chapter 14.2 in the PGF/TikZ manual for all availale snake styles. Note that the snake styles requires line operations, so you have to use the ``-s`` option. Generated with:: $ dot2tex -fpgf -s --prog circo pgfsnakes.dot > pgfsnakes.tex */ graph G { graph [mindist=0.5]; node [texmode="math", fixedsize=true, shape=circle, width=0.4, style="fill=green!20"]; c -- n_1 [style="snake=zigzag"]; c -- n_2 [style="snake=saw"]; c -- n_3 [style="snake=expanding waves, segment angle=10"]; c -- n_4 [style="snake=snake"]; c -- n_5 [style="snake=coil, segment amplitude=6pt"]; c -- n_6 [style="snake=brace"]; c -- n_7 [style="snake=triangles"]; c [style="fill=red!80"]; }dot2tex-2.9.0/examples/poltab.dot0000666000000000000000000000164412316606077015071 0ustar 00000000000000/* :Tags: PGF, Preproc This example graph was contributed by Teresa Gomez-Diaz, and shows that the ``texlbl`` attriute can contain arbitrary LaTeX markup. Generated with:: $ dot2tex -tmath --autosize poltab.dot > poltab.tex */ digraph G { rankdir=LR; node [shape=plaintext]; a_1 [texlbl="$\begin{array}{l} \fbox{1}\fbox{1} \end{array}$"]; a_2 [texlbl="$\frac{1}{q} \begin{array}{l} \fbox{2}\fbox{1} \end{array} + \begin{array}{l} \fbox{1}\fbox{2} \end{array}$"]; a_3 [texlbl="$(q+\frac{1}{q}) \begin{array}{l} \fbox{2}\fbox{2} \end{array}$"]; a_4 [texlbl="$\frac{1}{q} \frac{1}{z_1} \begin{array}{l} \fbox{1}\fbox{2} \end{array} + \frac{1}{z_2}\begin{array}{l} \fbox{2}\fbox{1} \end{array}$"]; { rank=same; a_1; a_2; a_3;} { nodesep =1; a_2; a_4;} a_1 -> a_2 [label="f_1" ]; a_2 -> a_3 [label="f_1" ]; a_1 -> a_4 [label="f_0" dir=back]; a_3 -> a_4 [label="f_0" ]; } dot2tex-2.9.0/examples/pstarrows.dot0000666000000000000000000000161612316606077015653 0ustar 00000000000000/* :Title: PSTricks arrows :Tags: PSTricks Examples of Pstricks style arrows. To generate this graph you can write:: $ circo -Txdot pstarrows.dot | dot2tex -fpst > pstarrows.tex */ digraph G { d2tdocpreamble="\usepackage{pstricks-add}"; graph [mindist=0.5]; node [texmode="math", fixedsize=true, shape=circle, width=0.4, style="linecolor=red, fillcolor=white"]; edge [color="blue"]; c -> n_1 [style="arrows=->", texmode="math", label=">"]; c -> n_2 [style="arrows=->>", texmode="math", label=">>"]; c -> n_3 [style="arrows=-<", texmode="math", label="<"]; c -> n_4 [style="arrows=-*", texmode="math", label="*"]; c -> n_5 [style="arrows=-{]}", texmode="math", label="]"]; edge [color="red"]; c -> n_6 [style="arrows=-o", texmode="math", label="o"]; c -> n_7 [style="arrows=-H", texmode="math", label="H"]; c -> n_8 [style="arrows=->, nArrowsA=5", texmode="math"]; }dot2tex-2.9.0/examples/showpoints.dot0000666000000000000000000000231312325535730016014 0ustar 00000000000000/* :Title: Control points :Tags: PSTricks This example uses the ``showpoints`` PSTricks style to show the control points of the edge curves. Generated with:: $ dot2tex -fpst showpoints.dot > showpoints.tex */ digraph G { size = "8,8"; {rank=min S8 S24 S1 S35 S30} {rank=max T8 T24 T1 T35 T30} edge [exstyle="showpoints=true, linecolor=red"]; node [style="fillstyle=solid"]; S8 -> 9; S24 -> 27; S24 -> 25; S1 -> 10; S1 -> 2; S35 -> 36; S35 -> 43; S30 -> 31; S30 -> 33; 9 -> 42; 9 -> T1; 25 -> T1; 25 -> 26; 27 -> T24; 2 -> 3; 2 -> 16; 2 -> 17; 2 -> T1; 2 -> 18; 10 -> 11; 10 -> 14; 10 -> T1; 10 -> 13; 10 -> 12; 31 -> T1; 31 -> 32; 33 -> T30; 33 -> 34; 42 -> 4; 26 -> 4; 3 -> 4; 16 -> 15; 17 -> 19; 18 -> 29; 11 -> 4; 14 -> 15; 37 -> 39; 37 -> 41; 37 -> 38; 37 -> 40; 13 -> 19; 12 -> 29; 43 -> 38; 43 -> 40; 36 -> 19; 32 -> 23; 34 -> 29; 39 -> 15; 41 -> 29; 38 -> 4; 40 -> 19; 4 -> 5; 19 -> 21; 19 -> 20; 19 -> 28; 5 -> 6; 5 -> T35; 5 -> 23; 21 -> 22; 20 -> 15; 28 -> 29; 6 -> 7; 15 -> T1; 22 -> 23; 22 -> T35; 29 -> T30; 7 -> T8; 23 -> T24; 23 -> T1; } dot2tex-2.9.0/examples/sportsbracket.dot0000666000000000000000000000555012316606077016476 0ustar 00000000000000/* :Title: Orthogonal edges :Tags: PGF, topath This example is adapted from an example posted by Ryan Schmidt to the `graphviz-interest`_ mailing list. Graphviz currently does not support orthogonal edges. However, with dot2tex you can use the ``topath`` attribute to create custom edges. Here is the definition of the ``fork horizontal`` to-path. It uses the powerful *coordinate calculations* feature introduced in PGF 2.00. .. sourcecode:: latex ... \usetikzlibrary{calc} ... \tikzstyle{fork horizontal} =[to path={ -| ($(\tikztostart)!0.5!(\tikztotarget)$) |- (\tikztotarget) \tikztonodes}] **Note**: This example requires PGF 2.00 or later. Generated with:: $ dot2tex --crop sportsbracket.dot > sportsbracket.tex .. _graphviz-interest: https://mailman.research.att.com/pipermail/graphviz-interest/2008q2/thread.html#5129 */ digraph G { // Put our custom fork horizontal to path in the document preamble d2tdocpreamble = "\usetikzlibrary{calc}\ \tikzstyle{fork horizontal} =[to path={\ -| ($(\tikztostart)!0.5!(\tikztotarget)$) |- (\tikztotarget) \tikztonodes}]"; rankdir=LR node [shape=box, width=2] graph [size="8.5,11" label="NCAA Men's Basketball: 2008 Tournament"] 11 [label="North Carolina"] 12 [label="Mount St. Mary's"] 13 [label="Indiana"] 14 [label="Arkansas"] 15 [label="Notre Dame"] 16 [label="George Mason"] 17 [label="Washington St."] 18 [label="Winthrop"] 19 [label="Oklahoma"] 110 [label="St. Joseph's"] 111 [label="Louisville"] 112 [label="Boise St."] 113 [label="Butler"] 114 [label="South Alabama"] 115 [label="Tennessee"] 116 [label="American"] 21 [label="North Carolina"] 22 [label="Arkansas"] 23 [label="Notre Dame"] 24 [label="Washington St."] 25 [label="Oklahoma"] 26 [label="Louisville"] 27 [label="Butler"] 28 [label="Tennessee"] 31 [label="North Carolina"] 32 [label="Washington St."] 33 [label="Louisville"] 34 [label="Tennessee"] 41 [label="North Carolina"] 42 [label="Louisville"] 51 [label="North Carolina"] // Use the custom 'fork horizontal' to path defined above edge [topath="fork horizontal"]; 11:e->21:w 12:e->21:w 13:e->22:w 14:e->22:w 15:e->23:w 16:e->23:w 17:e->24:w 18:e->24:w 19:e->25:w 110:e->25:w 111:e->26:w 112:e->26:w 113:e->27:w 114:e->27:w 115:e->28:w 116:e->28:w 21:e->31:w 22:e->31:w 23:e->32:w 24:e->32:w 25:e->33:w 26:e->33:w 27:e->34:w 28:e->34:w 31:e->41:w 32:e->41:w 33:e->42:w 34:e->42:w 41:e->51:w 42:e->51:w edge [style=invis] rank=same {11->12->13->14->15->16->17->18->19->110->111->112->113->114->115->116} } dot2tex-2.9.0/examples/subgraphs.dot0000666000000000000000000000170312316606077015602 0ustar 00000000000000/* :Title: Styled subgraphs :Tags: PGF, Preproc This example shows how subgraphs can be styled using PGF/TikZ styles. Note that version 1.09 or higher of PGF/TikZ is required. Generated with:: $ dot2tex -tmath --autosize --crop subgraphs.dot > subgraphs.tex */ digraph G { d2tdocpreamble="\usetikzlibrary{patterns}"; size="6,6"; node [style="fill=blue!40"]; node [shape=circle, width=0.4]; a -> b -> c; graph [style="rounded corners, shade"]; subgraph cluster0 { graph [style="pattern color=red, pattern=bricks, rounded corners"]; node [style = "fill=blue, semitransparent"]; x_0 -> y_0; x_0 -> z_0; } subgraph cluster1 { graph [style="snake=snake, fill=green!20"]; node [style = "fill=red!20"]; edge [style="->>"]; x_1 -> y_1; x_1 -> z_1; } subgraph cluster2 { node [style=" "]; x_2 -> y_2; x_2 -> z_2; } a -> x_0; b -> x_1; b -> x_2; a -> z_2; c -> z_1; } dot2tex-2.9.0/examples/tank.dot0000666000000000000000000000172312316606077014543 0ustar 00000000000000/* :Title: Two tank system :Tags: PGF This graph shows the structural model of a two tank system. Generated with:: $ dot2tex -fpgf tank.dot > tank.tex */ graph G { node[shape=doublecircle, fixedsize=true, width=0.4]; graph [style="rounded corners"]; subgraph cluster0 { style = "red, fill=blue!20,rounded corners"; label = "Tank 1"; node [texmode="math"] c_1--q_L; c_1--h_1; c_2--q_P; c_2--h_1; c_3--q_L; c_3--q_P; c_3--dh_1; d_4--dh_1;d_4--h_1; dh_1 [label="\\dot{h}_1"]; } subgraph cluster1{ label = "Pipe"; node [texmode="math"] c_5--h_1; c_5--q_12; q_12 [label="q_{12}"]; } c_5--h_2; c_3--q_12; c_6--q_12; subgraph cluster2{ label = "Tank 2"; node [texmode="math"] c_6--dh_2;c_6--q_2; d_7--dh_2; d_7--h_2; c_8--h_2;c_8--q_2; c_m--q_2; dh_2 [label="\\dot{h}_2"]; } } dot2tex-2.9.0/examples/tikzautomata.dot0000666000000000000000000000155012316606077016321 0ustar 00000000000000/* :Title: Automata :Tags: TikZ, topath, tikzedgelabels An example of how to use TikZ' automata libray and to paths to create a pretty state machine. Generated with:: $ neato -Txdot tikzautomata.dot | dot2tex -ftikz > tikzautomata.tex */ digraph G { d2ttikzedgelabels = true; d2tstyleonly = true; d2tdocpreamble = "\usetikzlibrary{automata}"; d2tfigpreamble = "\tikzstyle{every state}= \ [draw=blue!50,very thick,fill=blue!20]"; node [style="state"]; edge [lblstyle="auto",topath="bend left"]; A [style="state, initial"]; A -> B [label=2]; A -> D [label=7]; B -> A [label=1]; B -> B [label=3,topath="loop above"]; B -> C [label=4]; C -> F [label=5]; F -> B [label=8]; F -> D [label=7]; D -> E [label=2]; E -> A [label="1,6"]; F [style="state,accepting"]; }dot2tex-2.9.0/examples/tikzshapes.dot0000666000000000000000000000202512325013574015761 0ustar 00000000000000/* :Title: TikZ node shapes :Tags: TikZ, tikzedgelabels This example shows some of special `TikZ node shapes`_ that are available when using the ``tikz`` output format. Generated with:: $ dot2tex -ftikz --prog circo -s tikzshapes.dot > tikzshapes.tex .. _TikZ node shapes: http://www.fauskes.net/pgftikzexamples/node-shapes/ */ graph G { graph [mindist=0.5]; node [style="fill=green!20",texmode=math]; edge [lblstyle="above,sloped"]; d2ttikzedgelabels=true; c [style=circle]; n_1 [lblstyle=diamond]; n_2 [lblstyle=star]; n_3 [lblstyle="forbidden sign"]; n_4 [lblstyle="circle split", texlbl="$n$ \nodepart{lower} $4$"]; n_5 [lblstyle="cross out"]; n_6 [lblstyle="strike out"]; n_7 [lblstyle="regular polygon,regular polygon sides=7"]; c -- n_1 [label="diamond"]; c -- n_2 [label="star"]; c -- n_3 [label="forbidden sign"]; c -- n_4 [label="circle split"]; c -- n_5 [label="cross out"]; c -- n_6 [label="strike out"]; c -- n_7 [label="regular polygon"]; c [style="fill=red!80"]; }dot2tex-2.9.0/examples/transp.dot0000666000000000000000000000426712316606077015123 0ustar 00000000000000/* :Title: Node transparency :Tags: PGF Example of node transparency. Based on the graph on http://www.graphviz.org/Gallery/undirected/transparency.html The overlapping nodes are achieved with:: $ dot2tex --prog neato -fpgf transp.dot > transp.tex */ graph G { node [style=filled, fillcolor="#00ff005f"] 1 -- 30 [f=1]; 1 -- 40 [f=14]; 8 -- 46 [f=1]; 8 -- 16 [f=18]; 10 -- 25 [f=1]; 10 -- 19 [f=5]; 10 -- 33 [f=1]; 12 -- 8 [f=1]; 12 -- 36 [f=5]; 12 -- 17 [f=16]; 13 -- 38 [f=1]; 13 -- 24 [f=19]; 24 -- 49 [f=1]; 24 -- 13 [f=1]; 24 -- 47 [f=12]; 24 -- 12 [f=19]; 25 -- 27 [f=1]; 25 -- 12 [f=1]; 27 -- 12 [f=1]; 27 -- 14 [f=8]; 29 -- 10 [f=1]; 29 -- 8 [f=17]; 30 -- 24 [f=1]; 30 -- 44 [f=15]; 38 -- 29 [f=1]; 38 -- 35 [f=15]; 2 -- 42 [f=2]; 2 -- 35 [f=3]; 2 -- 11 [f=19]; 14 -- 18 [f=2]; 14 -- 24 [f=15]; 14 -- 38 [f=18]; 18 -- 49 [f=2]; 18 -- 47 [f=20]; 26 -- 41 [f=2]; node [style=filled fillcolor="#ff00005f"] 26 -- 42 [f=15]; 31 -- 39 [f=2]; 31 -- 47 [f=17]; 31 -- 25 [f=14]; 37 -- 26 [f=2]; 37 -- 16 [f=14]; 39 -- 50 [f=2]; 39 -- 14 [f=2]; 39 -- 18 [f=17]; 39 -- 47 [f=10]; 41 -- 31 [f=2]; 41 -- 8 [f=16]; 42 -- 44 [f=2]; 42 -- 29 [f=12]; 44 -- 37 [f=2]; 44 -- 32 [f=15]; 3 -- 20 [f=2]; 3 -- 28 [f=19]; 6 -- 45 [f=2]; 6 -- 28 [f=10]; 9 -- 6 [f=2]; 9 -- 16 [f=1]; node [style=filled fillcolor="#0000ff5f"] 15 -- 16 [f=2]; 15 -- 48 [f=2]; 16 -- 50 [f=2]; 16 -- 32 [f=14]; 16 -- 39 [f=8]; 20 -- 33 [f=2]; 33 -- 9 [f=2]; 33 -- 46 [f=3]; 33 -- 48 [f=17]; 45 -- 15 [f=2]; 4 -- 17 [f=4]; 4 -- 15 [f=6]; 4 -- 12 [f=16]; 17 -- 21 [f=4]; 19 -- 35 [f=4]; 19 -- 15 [f=9]; 19 -- 43 [f=4]; 21 -- 19 [f=4]; 21 -- 50 [f=4]; 23 -- 36 [f=4]; 34 -- 23 [f=4]; 34 -- 24 [f=11]; 35 -- 34 [f=4]; 35 -- 16 [f=6]; 35 -- 18 [f=16]; 36 -- 46 [f=4]; 5 -- 7 [f=1]; 5 -- 36 [f=6]; 7 -- 32 [f=1]; 7 -- 11 [f=2]; 7 -- 14 [f=17]; 11 -- 40 [f=1]; 11 -- 50 [f=1]; 22 -- 46 [f=1]; 28 -- 43 [f=1]; 28 -- 8 [f=18]; 32 -- 28 [f=1]; 32 -- 39 [f=13]; 32 -- 42 [f=15]; 40 -- 22 [f=1]; 40 -- 47 [f=1]; 43 -- 11 [f=1]; 43 -- 17 [f=19]; } dot2tex-2.9.0/LICENSE0000666000000000000000000000216112325531337012256 0ustar 00000000000000Copyright (c) 2014, Kjell Magne Fauske The dot parser is copyright (c) 2004-2014 Michael Krause and Ero Carrera Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. dot2tex-2.9.0/MANIFEST.in0000666000000000000000000000075712335463676013033 0ustar 00000000000000recursive-include docs * recursive-exclude docs *.pyc recursive-exclude docs *.pyo include CHANGES LICENSE AUTHORS readme.md include examples/*.dot include examples/*dtti.tex include tests/testgraphs/*.dot prune tests/testgraphs/*/*.dot include tests/testgraphs/parsetests/*.dot include tests/test_comparedotparsing.py include tests/test_multirender.py include tests/test_buildexamples.py include tests/test_dot2tex.py prune examples/*dot2tex-fig* include examples/gvcols.tex prune docs/_build dot2tex-2.9.0/PKG-INFO0000666000000000000000000000265612335470751012362 0ustar 00000000000000Metadata-Version: 1.0 Name: dot2tex Version: 2.9.0 Summary: A Graphviz to LaTeX converter Home-page: https://github.com/kjellmf/dot2tex Author: Kjell Magne Fauske Author-email: kjellmf@gmail.com License: UNKNOWN Description: The purpose of dot2tex is to give graphs generated by the graph layout tool Graphviz_, a more LaTeX friendly look and feel. This is accomplished by: - Using native PSTricks_ and `PGF/TikZ`_ commands for drawing arrows, edges and nodes. - Typesetting labels with LaTeX, allowing mathematical notation. - Using backend specific styles to customize the output. .. _Graphviz: http://www.graphviz.org/ .. _PSTricks: http://tug.org/PSTricks/main.cgi/ .. _PGF/TikZ: http://www.ctan.org/tex-archive/help/Catalogue/entries/pgf.html Platform: UNKNOWN Classifier: Development Status :: 4 - Beta Classifier: Environment :: Console Classifier: Intended Audience :: Science/Research Classifier: License :: OSI Approved :: MIT License Classifier: Natural Language :: English Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Topic :: Scientific/Engineering :: Visualization Classifier: Topic :: Text Processing :: Markup :: LaTeX Classifier: Topic :: Utilities dot2tex-2.9.0/readme.md0000666000000000000000000000520512335465552013040 0ustar 00000000000000dot2tex - A Graphviz to LaTeX converter ======================================= Copyright (C) 2006-2014 Kjell Magne Fauske License: MIT (See LICENSE for details.) Version: 2.9.0 URL: https://github.com/kjellmf/dot2tex Documentation: http://dot2tex.readthedocs.org/ Dot2tex is a tool for converting graphs rendered by Graphviz to formats that can be used with LaTeX. Installation ============ Before you install dot2tex you have to have a working Python environment installed on your system. Dot2tex has been developed and tested with Python 2.7, but it will probably run fine using Python 2.6. In addition you'll need the following modules: * [pyparsing](http://pyparsing.wikispaces.com/). A recent version is required. Older version like for instance 1.3.2 does not work with dot2tex. * [preview](http://www.ctan.org/tex-archive/help/Catalogue/entries/preview.html) A stand-alone part of the preview-latex/AUCTeX bundle. Required for preprocessing graphs with LaTeX. * PGF/TikZ 2.0 or later required. Note. If you have dot2tex version 2.5.0 or older installed, please remove the old version of the dot2tex.py file in your SCRIPTS directory before you install the latest dot2tex version. Otherwise the new dot2tex wrapper script will try to load the dot2tex.py as a module. Using pip --------- The easiest way to install dot2tex is to use [pip][]: $ pip install dot2tex The command will locate dot2tex and download it automatically along with dependencies. Note that documentation and examples are not installed by default. [pip]: http://www.pip-installer.org/en/latest/# Binary packages --------------- Binary packages are available for [Debian][] and [OpenSUSE][]. [Debian]: http://packages.qa.debian.org/d/dot2tex.html [OpenSUSE]: http://download.opensuse.org/repositories/home:/jimfunk/ From source ----------- Download a zip or a tarball from the download_ page. Unpack the file to a directory and run ``python`` on the ``setup.py`` file: $ python setup.py install This will create a dot2tex module in your Python module directory and a wrapper script in your ``SCRIPTS`` directory. Note that a few warnings will be displayed. You can safely ignore them. The warnings are shown because there is some extra information in the ``setup.py`` file that distutils does not understand. Development version ------------------- The development version of ``dot2tex`` is [available on GitHub](https://github.com/kjellmf/dot2tex). Contribute ========== - Issue tracker: https://github.com/kjellmf/dot2tex/issues - Source code: https://github.com/kjellmf/dot2tex dot2tex-2.9.0/setup.cfg0000666000000000000000000000010012335470751013064 0ustar 00000000000000[egg_info] tag_build = tag_date = 0 tag_svn_revision = 0 dot2tex-2.9.0/setup.py0000666000000000000000000000330512335465553012773 0ustar 00000000000000try: from setuptools import setup except ImportError: from distutils.core import setup setup(name='dot2tex', version='2.9.0', description='A Graphviz to LaTeX converter', long_description="""\ The purpose of dot2tex is to give graphs generated by the graph layout tool Graphviz_, a more LaTeX friendly look and feel. This is accomplished by: - Using native PSTricks_ and `PGF/TikZ`_ commands for drawing arrows, edges and nodes. - Typesetting labels with LaTeX, allowing mathematical notation. - Using backend specific styles to customize the output. .. _Graphviz: http://www.graphviz.org/ .. _PSTricks: http://tug.org/PSTricks/main.cgi/ .. _PGF/TikZ: http://www.ctan.org/tex-archive/help/Catalogue/entries/pgf.html """, author='Kjell Magne Fauske', author_email='kjellmf@gmail.com', url="https://github.com/kjellmf/dot2tex", py_modules=['dot2tex.dot2tex', 'dot2tex.dotparsing'], scripts=['dot2tex/dot2tex'], classifiers=[ 'Development Status :: 4 - Beta', 'Environment :: Console', 'Intended Audience :: Science/Research', 'License :: OSI Approved :: MIT License', 'Natural Language :: English', 'Operating System :: OS Independent', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Topic :: Scientific/Engineering :: Visualization', 'Topic :: Text Processing :: Markup :: LaTeX', 'Topic :: Utilities', ], install_requires=['pyparsing'], entry_points={ 'console_scripts': [ 'dot2tex = dot2tex.dot2tex:main', ] } )dot2tex-2.9.0/tests/0000777000000000000000000000000012335470751012416 5ustar 00000000000000dot2tex-2.9.0/tests/testgraphs/0000777000000000000000000000000012335470751014602 5ustar 00000000000000dot2tex-2.9.0/tests/testgraphs/autosize.dot0000666000000000000000000000041212325226246017147 0ustar 00000000000000digraph G { d2toptions="--autosize"; node [shape=circle]; a_1 [texlbl="$x^2+\frac{\sin y}{y^2+\cos \beta}+\gamma_3$"]; a_1 -> a_2 [label=" ", texlbl="$x_1+x_3^2+z+c+v~~$"]; a_2 -> a_1; a_2 -> a_3; a_3 [lblstyle="minimum size=4cm"]; }dot2tex-2.9.0/tests/testgraphs/clust.dot0000666000000000000000000000106512316606077016447 0ustar 00000000000000digraph G { node [fontcolor=red]; subgraph cluster0 { node [style=filled,color=white, texmode=math]; style=filled; color=lightgrey; a_0 -> a_1 -> a_2 -> a_3; label="latex"; texlbl="\LaTeX"; } subgraph cluster1 { node [style=filled, texmode=math, fontcolor=red]; b_0 -> b_1 -> b_2 -> b_3; label = "process #2"; color=blue } start -> a_0; start -> b_0; a_1 -> b_3; b_2 -> a_3; a_3 -> a_0; a_3 -> end; b_3 -> end; start [shape=diamond, texlbl="${\frac{\sqrt{\gamma+\beta}}{x^2+y^2}}$"]; end [shape=Msquare]; }dot2tex-2.9.0/tests/testgraphs/colors.dot0000666000000000000000000000063212316606077016615 0ustar 00000000000000/* Test stroke and fill coloring */ digraph G { a [color=red]; b [style="filled", fillcolor=blue]; c [style="filled", color=yellow]; d [style=filled]; b [style="filled", fillcolor=pink, color=green]; f [style="filled", fillcolor="0.051 0.718 0.627",color="#40e0d0"]; g [color="#ffff00"]; a -> {b c d e f g}; i -> b [color=red]; i -> d [color="#ffff00"]; i -> d [color="0.051 0.718 0.627"]; }dot2tex-2.9.0/tests/testgraphs/compassports.dot0000666000000000000000000000046312316606077020053 0ustar 00000000000000/* Test compass points */ digraph g { graph [rankdir=LR]; node [shape=rectangle]; a [label="node A"]; b [label="node B"]; a:n -> b:n; a:ne -> b:ne; a:e -> b:e; a:se -> b:se; a:s -> b:s; a:sw -> b:sw; a:w -> b:w; a:nw -> b:nw; a:center -> b:center; a:dummy -> c:dummy; } dot2tex-2.9.0/tests/testgraphs/concentrate.dot0000666000000000000000000000026212316606077017620 0ustar 00000000000000/* Test concentrate option */ digraph g { graph [rankdir=LR, concentrate=1]; trans1 -> trans2; trans2 -> trans3; trans1 -> state1; trans2 -> state1; trans3 -> state1; } dot2tex-2.9.0/tests/testgraphs/d2topts.dot0000666000000000000000000000012012316606077016703 0ustar 00000000000000digraph G { d2toptions = "-ftikz -tmath" ; a_1-> a_2 -> a_3 -> a_1; }dot2tex-2.9.0/tests/testgraphs/dot2tikznodeshapesmapping.dot0000666000000000000000000000162712325017466022517 0ustar 00000000000000graph G { c [shape=circle]; n_1 [shape=box]; n_2 [shape=ellipse]; n_3 [shape=oval]; n_4 [shape="point"]; n_5 [shape="egg"]; n_6 [shape="triangle"]; n_7 [shape="plaintext"]; n_8 [shape="diamond"]; n_9 [shape="trapezium"]; n_10 [shape="parallelogram"]; n_11 [shape="house"]; n_12 [shape="pentagon"]; n_13 [shape="hexagon"]; n_14 [shape="septagon"]; n_15 [shape="square"]; n_16 [shape="star"]; c -- n_1 [label="box"]; c -- n_2 [label="ellipse"]; c -- n_3 [label="oval"]; c -- n_4 [label="point"]; c -- n_5 [label="egg"]; c -- n_6 [label="triangle"]; c -- n_7 [label="plaintext"]; c -- n_8 [label="diamond"]; c -- n_9 [label="trapezium"]; c -- n_10 [label="parallelogram"]; c -- n_11 [label="house"]; c -- n_12 [label="pentagon"]; c -- n_13 [label="hexagon"]; c -- n_14 [label="septagon"]; c -- n_15 [label="square"]; c -- n_16 [label="star"]; }dot2tex-2.9.0/tests/testgraphs/escstr.dot0000666000000000000000000000032612316606077016617 0ustar 00000000000000digraph testG { d2tdocpreamble="\usepackage[T1]{fontenc}\usepackage{lmodern}"; a [label="\N"]; b [label="\G"]; a -> b [label="\E"]; subgraph clusterA { c -> f [label="\T connect \H"]; } a -> c; }dot2tex-2.9.0/tests/testgraphs/invis.dot0000666000000000000000000000026312316606077016444 0ustar 00000000000000/* Test invisible edges and nodes */ digraph G { a -> { node[style="invis"] b c d; } f [style="invisible"]; a -> e [style="invisible"]; a -> g [style="invis"]; a -> f; }dot2tex-2.9.0/tests/testgraphs/issue.dot0000666000000000000000000001007212325514075016437 0ustar 00000000000000digraph G{ subgraph { S8; S24; S1; S35; S30; graph [rank=min,size="8,8"]; } subgraph { T8; T24; T1; T35; T30; graph [rank=max,size="8,8"]; } edge[style="showpoints=true, linecolor=red"]; node[style="fillstyle=solid"]; S8 -> 9 [style="showpoints=true, linecolor=red"]; S24 -> 27 [style="showpoints=true, linecolor=red"]; S24 -> 25 [style="showpoints=true, linecolor=red"]; S1 -> 10 [style="showpoints=true, linecolor=red"]; S1 -> 2 [style="showpoints=true, linecolor=red"]; S35 -> 36 [style="showpoints=true, linecolor=red"]; S35 -> 43 [style="showpoints=true, linecolor=red"]; S30 -> 31 [style="showpoints=true, linecolor=red"]; S30 -> 33 [style="showpoints=true, linecolor=red"]; 9 -> 42 [style="showpoints=true, linecolor=red"]; 9 -> T1 [style="showpoints=true, linecolor=red"]; 25 -> T1 [style="showpoints=true, linecolor=red"]; 25 -> 26 [style="showpoints=true, linecolor=red"]; 27 -> T24 [style="showpoints=true, linecolor=red"]; 2 -> 3 [style="showpoints=true, linecolor=red"]; 2 -> 16 [style="showpoints=true, linecolor=red"]; 2 -> 17 [style="showpoints=true, linecolor=red"]; 2 -> T1 [style="showpoints=true, linecolor=red"]; 2 -> 18 [style="showpoints=true, linecolor=red"]; 10 -> 11 [style="showpoints=true, linecolor=red"]; 10 -> 14 [style="showpoints=true, linecolor=red"]; 10 -> T1 [style="showpoints=true, linecolor=red"]; 10 -> 13 [style="showpoints=true, linecolor=red"]; 10 -> 12 [style="showpoints=true, linecolor=red"]; 31 -> T1 [style="showpoints=true, linecolor=red"]; 31 -> 32 [style="showpoints=true, linecolor=red"]; 33 -> T30 [style="showpoints=true, linecolor=red"]; 33 -> 34 [style="showpoints=true, linecolor=red"]; 42 -> 4 [style="showpoints=true, linecolor=red"]; 26 -> 4 [style="showpoints=true, linecolor=red"]; 3 -> 4 [style="showpoints=true, linecolor=red"]; 16 -> 15 [style="showpoints=true, linecolor=red"]; 17 -> 19 [style="showpoints=true, linecolor=red"]; 18 -> 29 [style="showpoints=true, linecolor=red"]; 11 -> 4 [style="showpoints=true, linecolor=red"]; 14 -> 15 [style="showpoints=true, linecolor=red"]; 37 -> 39 [style="showpoints=true, linecolor=red"]; 37 -> 41 [style="showpoints=true, linecolor=red"]; 37 -> 38 [style="showpoints=true, linecolor=red"]; 37 -> 40 [style="showpoints=true, linecolor=red"]; 13 -> 19 [style="showpoints=true, linecolor=red"]; 12 -> 29 [style="showpoints=true, linecolor=red"]; 43 -> 38 [style="showpoints=true, linecolor=red"]; 43 -> 40 [style="showpoints=true, linecolor=red"]; 36 -> 19 [style="showpoints=true, linecolor=red"]; 32 -> 23 [style="showpoints=true, linecolor=red"]; 34 -> 29 [style="showpoints=true, linecolor=red"]; 39 -> 15 [style="showpoints=true, linecolor=red"]; 41 -> 29 [style="showpoints=true, linecolor=red"]; 38 -> 4 [style="showpoints=true, linecolor=red"]; 40 -> 19 [style="showpoints=true, linecolor=red"]; 4 -> 5 [style="showpoints=true, linecolor=red"]; 19 -> 21 [style="showpoints=true, linecolor=red"]; 19 -> 20 [style="showpoints=true, linecolor=red"]; 19 -> 28 [style="showpoints=true, linecolor=red"]; 5 -> 6 [style="showpoints=true, linecolor=red"]; 5 -> T35 [style="showpoints=true, linecolor=red"]; 5 -> 23 [style="showpoints=true, linecolor=red"]; 21 -> 22 [style="showpoints=true, linecolor=red"]; 20 -> 15 [style="showpoints=true, linecolor=red"]; 28 -> 29 [style="showpoints=true, linecolor=red"]; 6 -> 7 [style="showpoints=true, linecolor=red"]; 15 -> T1 [style="showpoints=true, linecolor=red"]; 22 -> 23 [style="showpoints=true, linecolor=red"]; 22 -> T35 [style="showpoints=true, linecolor=red"]; 29 -> T30 [style="showpoints=true, linecolor=red"]; 7 -> T8 [style="showpoints=true, linecolor=red"]; 23 -> T24 [style="showpoints=true, linecolor=red"]; 23 -> T1 [style="showpoints=true, linecolor=red"]; graph [size="8,8"]; }dot2tex-2.9.0/tests/testgraphs/latin1.dot0000666000000000000000000000013112316606077016476 0ustar 00000000000000digraph G { graph [charset="Latin1"]; a -> b; a [label=""]; b [label=""]; }dot2tex-2.9.0/tests/testgraphs/markup.dot0000666000000000000000000000042712316606077016615 0ustar 00000000000000digraph G { a_1 [texlbl="$\frac{\gamma}{2x^2+y^3}$"]; a_1 -> a_2 -> a_3 -> a_1 node [texmode="math"]; a_1 -> b_1 -> b_2 -> a_3; b_1 [label="\\frac{\\gamma}{x^2}"]; node [texmode="verbatim"] b_4 [label="\\feta"] b_5 [label="\\frac"] a_3 -> b_4; a_1 -> b_4; }dot2tex-2.9.0/tests/testgraphs/markup2.dot0000666000000000000000000000051412316606077016674 0ustar 00000000000000digraph G { Decl [ shape=record, label = "\n\nDecl|{name|access|decl_flags|extern_c_linkage}"]; a_1 [label="$\\frac{\\gamma}{2x^2+y^3}$"]; a_1 -> a_2 -> a_3 -> a_1 node [texmode="math"]; a_1 -> b_1 -> b_2 -> a_3; node [texmode="verbatim"] b_4 [label="\\feta"] b_5 [label="\frac"] a_3 -> b_4; c5 -> b_4; a_1 -> Decl; }dot2tex-2.9.0/tests/testgraphs/multilines.dot0000666000000000000000000000034412316606077017501 0ustar 00000000000000/* Test multilineattributes and concatination */ digraph G { a [label="This is\ a multiline\ text", color=red style=filled]; b [label="partA"+"partB"+"partC"]; b [label="partA" + "partB"+ "partC"]; a -> b -> c; }dot2tex-2.9.0/tests/testgraphs/nodenames.dot0000666000000000000000000000025712316606077017270 0ustar 00000000000000/* Test various tikz-unfriendly node names */ digraph G { "" -> {a b c}; {e f g} -> " "; "a,b" -> c; "a.b" -> c; "a:b" -> c; "\\a:b" -> c; a [label="\\a"]; }dot2tex-2.9.0/tests/testgraphs/parsetests/0000777000000000000000000000000012335470751016777 5ustar 00000000000000dot2tex-2.9.0/tests/testgraphs/parsetests/ids.dot0000666000000000000000000000052512316606077020271 0ustar 00000000000000/* Test that the various id types are parsed correctly */ digraph G { a [label=noquote]; b [label="\"quote\""]; c [label=<
leftmid dleright
>]; d [label=12.4]; e [label="node"]; a -> b -> c -> d -> e; }dot2tex-2.9.0/tests/testgraphs/parsetests/multilines.dot0000666000000000000000000000051612316606077021677 0ustar 00000000000000/* Test line joining and multiline stuff*/ digraph G { a [label="partA"+"partB"]; b [label="Line1\ line2\ line3"]; d [label="Test", color=red, style=filled]; e [shape = record,label="\n\nDecl|{name|access|decl_flags|extern_c_linkage}"]; f [label="Line1\lLine2\rLine3\nLine4",width=2]; a -> b -> c -> d -> e -> f; }dot2tex-2.9.0/tests/testgraphs/parsetests/quoting.dot0000666000000000000000000000025212316606077021175 0ustar 00000000000000/* Test that different quoting variants are parsed correctly */ digraph G { "a" -> "b"; "aa\\" -> b; "aa\\" -> c [label="test"]; "\"aa\"" -> c [label="test"]; }dot2tex-2.9.0/tests/testgraphs/parsetests/subgraphs.dot0000666000000000000000000000017712316606077021513 0ustar 00000000000000/* Test subgraphs */ digraph G { a -> { c; d; e; } subgraph clusterA { f;g;h; } -> a; {i; j; k} -> {s;t;m}; }dot2tex-2.9.0/tests/testgraphs/pststyles.dot0000666000000000000000000000051612316606077017367 0ustar 00000000000000graph G { node [shape=circle, texmode=math, fixedsize=True, width="0.4", style="filled, shadow=true", color="blue"]; edge [style="linecolor=green, showpoints=true,dotstyle=triangle"]; a_1-- a_2 -- a_3 -- a_1; node [shape=box, style="shadow=true", label=""]; edge [style="linecolor=red, shadow=true"]; b_1 -- b_2 -- a_2; }dot2tex-2.9.0/tests/testgraphs/specialchars.dot0000666000000000000000000000011412316606077017750 0ustar 00000000000000digraph G { a -> b; a [label="$\\%_#{}^&"]; b [label="&^}{#_%\\$"]; }dot2tex-2.9.0/tests/testgraphs/styles.dot0000666000000000000000000000047612316606077016645 0ustar 00000000000000graph G { graph [splines=false] node [shape=circle, texmode=math, fixedsize=True, width="0.4", style="ball color = green", label=""]; edge [style="snake=zigzag, green"]; a_1-- a_2 -- a_3 -- a_1; node [style="ball color = red", label=""]; edge [style="snake=snake, blue", color=red]; b_1 -- b_2 -- a_2; }dot2tex-2.9.0/tests/testgraphs/transp.dot0000666000000000000000000000376112316606077016631 0ustar 00000000000000graph G { // graph [splines=true overlap=false] //graph [truecolor bgcolor="#ff00005f"] node [style=filled fillcolor="#00ff005f"] 1 -- 30 [f=1]; 1 -- 40 [f=14]; 8 -- 46 [f=1]; 8 -- 16 [f=18]; 10 -- 25 [f=1]; 10 -- 19 [f=5]; 10 -- 33 [f=1]; 12 -- 8 [f=1]; 12 -- 36 [f=5]; 12 -- 17 [f=16]; 13 -- 38 [f=1]; 13 -- 24 [f=19]; 24 -- 49 [f=1]; 24 -- 13 [f=1]; 24 -- 47 [f=12]; 24 -- 12 [f=19]; 25 -- 27 [f=1]; 25 -- 12 [f=1]; 27 -- 12 [f=1]; 27 -- 14 [f=8]; 29 -- 10 [f=1]; 29 -- 8 [f=17]; 30 -- 24 [f=1]; 30 -- 44 [f=15]; 38 -- 29 [f=1]; 38 -- 35 [f=15]; 2 -- 42 [f=2]; 2 -- 35 [f=3]; 2 -- 11 [f=19]; 14 -- 18 [f=2]; 14 -- 24 [f=15]; 14 -- 38 [f=18]; 18 -- 49 [f=2]; 18 -- 47 [f=20]; 26 -- 41 [f=2]; node [style=filled fillcolor="#ff00005f"] 26 -- 42 [f=15]; 31 -- 39 [f=2]; 31 -- 47 [f=17]; 31 -- 25 [f=14]; 37 -- 26 [f=2]; 37 -- 16 [f=14]; 39 -- 50 [f=2]; 39 -- 14 [f=2]; 39 -- 18 [f=17]; 39 -- 47 [f=10]; 41 -- 31 [f=2]; 41 -- 8 [f=16]; 42 -- 44 [f=2]; 42 -- 29 [f=12]; 44 -- 37 [f=2]; 44 -- 32 [f=15]; 3 -- 20 [f=2]; 3 -- 28 [f=19]; 6 -- 45 [f=2]; 6 -- 28 [f=10]; 9 -- 6 [f=2]; 9 -- 16 [f=1]; node [style=filled fillcolor="#0000ff5f"] 15 -- 16 [f=2]; 15 -- 48 [f=2]; 16 -- 50 [f=2]; 16 -- 32 [f=14]; 16 -- 39 [f=8]; 20 -- 33 [f=2]; 33 -- 9 [f=2]; 33 -- 46 [f=3]; 33 -- 48 [f=17]; 45 -- 15 [f=2]; 4 -- 17 [f=4]; 4 -- 15 [f=6]; 4 -- 12 [f=16]; 17 -- 21 [f=4]; 19 -- 35 [f=4]; 19 -- 15 [f=9]; 19 -- 43 [f=4]; 21 -- 19 [f=4]; 21 -- 50 [f=4]; 23 -- 36 [f=4]; 34 -- 23 [f=4]; 34 -- 24 [f=11]; 35 -- 34 [f=4]; 35 -- 16 [f=6]; 35 -- 18 [f=16]; 36 -- 46 [f=4]; 5 -- 7 [f=1]; 5 -- 36 [f=6]; 7 -- 32 [f=1]; 7 -- 11 [f=2]; 7 -- 14 [f=17]; 11 -- 40 [f=1]; 11 -- 50 [f=1]; 22 -- 46 [f=1]; 28 -- 43 [f=1]; 28 -- 8 [f=18]; 32 -- 28 [f=1]; 32 -- 39 [f=13]; 32 -- 42 [f=15]; 40 -- 22 [f=1]; 40 -- 47 [f=1]; 43 -- 11 [f=1]; 43 -- 17 [f=19]; } dot2tex-2.9.0/tests/testgraphs/utf8.dot0000666000000000000000000000013612316606077016201 0ustar 00000000000000digraph G { a -> b -> c; a [label="æøå"]; b [label="üù"]; c [label="Éß"]; }dot2tex-2.9.0/tests/test_dot2tex.py0000666000000000000000000003433212334470571015424 0ustar 00000000000000# -*- coding: utf-8 -*- import unittest import dot2tex import re from dot2tex.dot2tex import smart_float testgraph = """ digraph G { a_1-> a_2 -> a_3 -> a_1; } """ class InterfaceTest(unittest.TestCase): def test_default(self): source = dot2tex.dot2tex(testgraph) self.failUnless(source.strip()) def test_pgf(self): source = dot2tex.dot2tex(testgraph, format='pgf') self.failUnless(source.strip()) def test_pstricks(self): source = dot2tex.dot2tex(testgraph, format='pst') self.failUnless(source.strip()) def test_tikz(self): source = dot2tex.dot2tex(testgraph, format='tikz') self.failUnless(source.strip()) def test_positions(self): positions = dot2tex.dot2tex(testgraph, format='positions') self.failUnless(type(positions) == dict) self.failUnless('a_1' in positions.keys()) self.failUnless(len(positions.keys()) == 3) self.failUnless(len(positions['a_1']) == 2) class UnicodeTest(unittest.TestCase): def test_russian(self): testgraph = """digraph {AAA [label="ЯЯЯ"];}""" source = dot2tex.dot2tex(testgraph, debug=True, format='tikz', codeonly=True) self.failUnless(source.find("{ЯЯЯ}") > 0, "Found %s" % source) def test_russian2(self): testgraph = """digraph {AAA [label=aaЯЯЯ];}""" source = dot2tex.dot2tex(testgraph, debug=True, format='tikz', codeonly=True) self.failUnless(source.find("{aaЯЯЯ}") > 0, "Found %s" % source) class D2TOptionsTest(unittest.TestCase): def test_d2tcommented(self): testgraph = """ digraph SSA { //d2toptions = "--graphstyle=insertedstyle"; B } """ source = dot2tex.dot2tex(testgraph, debug=True) self.failIf(source.find("insertedstyle") >= 0) def test_d2toptions(self): testgraph = """ digraph SSA { d2toptions = "--graphstyle=insertedstyle"; B } """ source = dot2tex.dot2tex(testgraph, debug=True) self.failUnless(source.find("insertedstyle") >= 0) class PGF118CompatibilityTest(unittest.TestCase): def test_pgf118option(self): source = dot2tex.dot2tex(testgraph, debug=True, pgf118=True) self.failUnless(source.find("\usepackage{pgflibrarysnakes}") >= 0) self.failIf(source.find("\usetikzlibrary") >= 0) self.failIf(source.find("line join=bevel") >= 0) def test_tikz118option(self): source = dot2tex.dot2tex(testgraph, debug=True, format='tikz', pgf118=True) self.failUnless(source.find("\usepackage{pgflibrarysnakes}") >= 0) self.failIf(source.find("\usetikzlibrary") >= 0) self.failIf(source.find("line join=bevel") >= 0) def test_nopgf118option(self): source = dot2tex.dot2tex(testgraph, debug=True, pgf118=False) self.failIf(source.find("\usepackage{pgflibrarysnakes}") >= 0) self.failUnless(source.find("\usetikzlibrary") >= 0) self.failUnless(source.find("line join=bevel") >= 0) class BuggyGraphTests(unittest.TestCase): def test_small_label(self): testgraph = """ digraph { "objects" [label="sdfsdf", texlbl="$1$"]; } """ source = dot2tex.dot2tex(testgraph, debug=True, autosize=True, figonly=True, format='tikz') self.failUnless('$1$' in source) #http://code.google.com/p/dot2tex/issues/detail?id=16 def test_name_with_parantheses(self): testgraph = """ digraph { { "F(K)/R-1"}} """ source = dot2tex.dot2tex(testgraph, debug=True, figonly=True, format='tikz') self.failUnless(r'\node (F{K}/R-1)' in source) class NeedsQuotesTests(unittest.TestCase): # http://code.google.com/p/dot2tex/issues/detail?id=17 def test_numeral(self): from dot2tex import dotparsing self.failUnless(dotparsing.needs_quotes('1.2.3.4') == True) self.failUnless(dotparsing.needs_quotes('1.2') == False) self.failUnless(dotparsing.needs_quotes('-1.2') == False) self.failUnless(dotparsing.needs_quotes('-1') == False) self.failUnless(dotparsing.needs_quotes('--1') == True) self.failUnless(dotparsing.needs_quotes('.12') == False) self.failUnless(dotparsing.needs_quotes('-.1') == False) # http://code.google.com/p/dot2tex/issues/detail?id=17 def test_not_numeral_in_label(self): testgraph = """ digraph { a[label="1.2.3.4"] ; b } """ source = dot2tex.dot2tex(testgraph, debug=True, figonly=True, format='tikz', autosize=True) self.failUnless(r'{1.2.3.4}' in source) class MultipleStatements(unittest.TestCase): # https://github.com/kjellmf/dot2tex/issues/5 def test_semicolon(self): """Test for issue 5""" testgraph1 = """ digraph example { a -> b a -> c {rank=same; b;c} }""" testgraph2 = """ digraph example { a -> b; a -> c; {rank=same; b;c} }""" source1 = dot2tex.dot2tex(testgraph1, figonly=True, format='tikz', autosize=True) source2 = dot2tex.dot2tex(testgraph2, figonly=True, format='tikz', autosize=True) self.failUnless(source1 == source2) class TestPositionsOutputFormat(unittest.TestCase): # http://code.google.com/p/dot2tex/issues/detail?id=20 def test_floating_point_coordinates(self): testxdotgraph = """ digraph G { node [label="\N"]; graph [bb="0,0,127.21,49.639", _draw_="c 9 -#ffffffff C 9 -#ffffffff P 4 0 -1 0 50 128 50 128 -1 ", xdotversion="1.2"]; a [pos="28,30.139", width="0.75", height="0.51389", _draw_="c 9 -#000000ff e 28 30 27 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 9 -#000000ff T 28 25 0 9 1 -a "]; b [pos="99.21,19.5", width="0.75", height="0.51389", _draw_="c 9 -#000000ff e 99 20 27 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 9 -#000000ff T 99 15 0 9 1 -b "]; a -> b [pos="e,72.434,23.5 54.516,26.177 57.076,25.795 59.704,25.402 62.341,25.008", _draw_="c 9 -#000000ff B 4 55 26 57 26 60 25 62 25 ", _hdraw_="S 5 -solid c 9 -#000000ff C 9 -#000000ff P 3 63 28 72 24 62 22 "]; } """ positions = dot2tex.dot2tex(testxdotgraph, format='positions') self.failUnless(type(positions) == dict) self.failUnless(type(positions['a'][0]) == float) self.failUnless(type(positions['b'][0]) == float) class ErrorHandlingTest(unittest.TestCase): def test_parse_error(self): graph = "graph {a-b]" parser = dot2tex.dotparsing.DotDataParser() self.assertRaises(dot2tex.ParseException, parser.parse_dot_data, graph) def test_module_parse_error(self): graph = "graph {a-b]" self.assertRaises(dot2tex.ParseException, dot2tex.dot2tex, graph) def test_no_input_file(self): graph = r"\input{dymmy.dot}" self.assertRaises(IOError, dot2tex.dot2tex, graph) class EdgeLabelsTests(unittest.TestCase): def test_edgetexlbl_nolabel_preproc(self): """Edge labels specified using 'texlbl' should be included when preprocessing the graph""" graph = r'digraph G {a -> b [texlbl="TestLabel"];}' code = dot2tex.dot2tex(graph, autosize=True) self.failUnless("TestLabel" in code) def test_edgetexlbl_nolabel_nopreproc(self): """Edge labels specified using 'texlbl' only will not be generated by Graphviz""" graph = r'digraph G {a -> b [texlbl="TestLabel"];}' code = dot2tex.dot2tex(graph) self.failUnless("TestLabel" not in code) class GraphvizInterfaceTests(unittest.TestCase): def test_prog_options(self): from dot2tex.dot2tex import create_xdot xdot_data = create_xdot(testgraph) xdot_data2 = create_xdot(testgraph) self.failUnlessEqual(xdot_data, xdot_data2) xdot_data2 = create_xdot(testgraph, options='-y') self.failIfEqual(xdot_data, xdot_data2, 'No options were passed to dot') def test_invalid_program(self): """Invoking create_xdot with an invalid prog parameter should raise an exception""" from dot2tex.dot2tex import create_xdot #xdot_data = create_xdot(testgraph, prog="dummy") self.assertRaises(NameError, create_xdot, testgraph, prog="dummy") class AutosizeTests(unittest.TestCase): def test__dim_extraction(self): """Failed to extract dimension data from logfile""" from dot2tex.dot2tex import dimext logdata = """ ABD: EveryShipout initializing macros Preview: Fontsize 10pt ! Preview: Snippet 1 started. <-><-> l.18 \begin{preview} % Not a real error. ! Preview: Snippet 1 ended.(817330+0x1077278). <-><-> l.20 \end{preview} % Not a real error. [1] ! Preview: Snippet 2 started. <-><-> l.21 \begin{preview} % Not a real error. ! Preview: Snippet 2 ended.(817330+0x1077278). <-><-> l.23 \end{preview} % Not a real error. [2] ! Preview: Snippet 3 started. <-><-> l.24 \begin{preview} % Not a real error. ! Preview: Snippet 3 ended.(817330+0x1077278). <-><-> l.26 \end{preview} % Not a real error. [3] ) Here is how much of TeX's memory you used: """ dimext_re = re.compile(dimext, re.MULTILINE | re.VERBOSE) texdimdata = dimext_re.findall(logdata) self.failIf(len(texdimdata) == 0) def test__dim_extraction_cygwin(self): """Failed to extract dimension data from logfile generated under Cygwin""" # issue [14] http://code.google.com/p/dot2tex/issues/detail?id=14 from dot2tex.dot2tex import dimext logdata = """ Preview: Fontsize 10pt /tmp/dot2texS8qrUI/dot2tex.tex:18: Preview: Snippet 1 started. <-><-> l.18 \begin{preview} % Not a real error. /tmp/dot2texS8qrUI/dot2tex.tex:20: Preview: Snippet 1 ended.(817330+0x1077278). <-><-> l.20 \end{preview} % Not a real error. [1] /tmp/dot2texS8qrUI/dot2tex.tex:21: Preview: Snippet 2 started. <-><-> l.21 \begin{preview} % Not a real error. /tmp/dot2texS8qrUI/dot2tex.tex:23: Preview: Snippet 2 ended.(817330+0x1077278). <-><-> l.23 \end{preview} % Not a real error. [2] /tmp/dot2texS8qrUI/dot2tex.tex:24: Preview: Snippet 3 started. <-><-> l.24 \begin{preview} % Not a real error. /tmp/dot2texS8qrUI/dot2tex.tex:26: Preview: Snippet 3 ended.(817330+0x1077278). <-><-> l.26 \end{preview} % Not a real error. [3] ) Here is how much of TeX's memory you used: """ dimext_re = re.compile(dimext, re.MULTILINE | re.VERBOSE) texdimdata = dimext_re.findall(logdata) self.failIf(len(texdimdata) == 0) class TikZTemplateTests(unittest.TestCase): def test_point_shape(self): """Nodes with the point shape should not have labels""" testgraph = """ digraph G { { node[shape=point] a-> b-> c -> a; } e -> a; a [label="dummy"] } """ code = dot2tex.dot2tex(testgraph, format="tikz") self.failIf("dummy" in code) class TestBugs(unittest.TestCase): def test_styleonly_tikz_preproc(self): """Test for a bug in get_node_preproc_code. Used to raise a TypeError""" code = dot2tex.dot2tex(testgraph, format="tikz", preproc=True, styleonly=True) # https://github.com/kjellmf/dot2tex/issues/12 def test_head_and_tail_labels(self): """Test for issue 12""" graph = "digraph { a -> b [headlabel=HEADLABEL,taillabel=TAILLABEL,label=LABEL] }" code = dot2tex.dot2tex(graph, format="pgf", autosize=True) self.assertTrue('HEADLABEL' in code) self.assertTrue('LABEL' in code) self.assertTrue('TAILLABEL' in code) class TestNumberFormatting(unittest.TestCase): def test_numbers(self): self.assertEqual("2.0", smart_float(2)) self.assertEqual("0.0001", smart_float(1e-4)) def test_decimal_places(self): self.assertEqual("2.1", smart_float(2.1)) self.assertEqual("2.11119", smart_float(2.11119)) self.assertEqual("2.1", smart_float(2.100)) self.assertEqual("100000000000.0000", smart_float(1e11)) class PGF210CompatibilityTest(unittest.TestCase): def test_pgf210option(self): source = dot2tex.dot2tex(testgraph, debug=True, pgf210=True) self.failUnless(source.find("dot2tex template for PGF 2.10") >= 0) # self.failIf(source.find("\usetikzlibrary") >= 0) # self.failIf(source.find("line join=bevel") >= 0) def test_tikz210option(self): source = dot2tex.dot2tex(testgraph, debug=True, format='tikz', pgf210=True) self.failUnless(source.find("dot2tex template for PGF 2.10") >= 0) # self.failIf(source.find("\usetikzlibrary") >= 0) # self.failIf(source.find("line join=bevel") >= 0) # # def test_nopgf210option(self): # source = dot2tex.dot2tex(testgraph, debug=True, pgf210=False) # self.failIf(source.find("\usepackage{pgflibrarysnakes}") >= 0) # self.failUnless(source.find("\usetikzlibrary") >= 0) # self.failUnless(source.find("line join=bevel") >= 0) class HeadAndTailLabelTest(unittest.TestCase): """Tests for https://github.com/kjellmf/dot2tex/issues/12""" test_graph = "digraph { a -> b [headlabel=HEADLABEL,taillabel=TAILLABEL,label=LABEL] }" def test_head_label_pgf(self): source = dot2tex.dot2tex(self.test_graph, autosize=True, format="pgf") self.failUnless("HEADLABEL" in source) def test_head_label_tikz(self): source = dot2tex.dot2tex(self.test_graph, autosize=True, format="tikz") self.failUnless("HEADLABEL" in source) def test_tail_label_pgf(self): source = dot2tex.dot2tex(self.test_graph, autosize=True, format="pgf") self.failUnless("TAILLABEL" in source) def test_tail_label_tikz(self): source = dot2tex.dot2tex(self.test_graph, autosize=True, format="tikz") self.failUnless("TAILLABEL" in source) if __name__ == '__main__': unittest.main()