merge version 0.1.7
authorJens Kasten <jens@kasten-edv.de>
Wed, 23 Nov 2011 04:33:55 +0100
changeset 57 b2687e654e68
parent 47 9351dc11b801 (current diff)
parent 56 cf6fc0bf587d (diff)
child 58 9c80078171d9
merge
COPYING
INSTALL
kvmtools/configparser.py
kvmtools/configtest.py
kvmtools/kvm.py
kvmtools/kvm_monitor.py
kvmtools/qemu_kvm_options.py
--- a/COPYING	Thu Nov 17 00:47:16 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,340 +0,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
--- a/INSTALL	Thu Nov 17 00:47:16 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-To install it execute as root user:
-python setup.py install
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/INSTALL.txt	Wed Nov 23 04:33:55 2011 +0100
@@ -0,0 +1,2 @@
+To install it execute as root user:
+python setup.py install
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LICENSE.txt	Wed Nov 23 04:33:55 2011 +0100
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MANIFEST.in	Wed Nov 23 04:33:55 2011 +0100
@@ -0,0 +1,2 @@
+include *.txt
+recursive-include docs *.txt
--- a/README.txt	Thu Nov 17 00:47:16 2011 +0100
+++ b/README.txt	Wed Nov 23 04:33:55 2011 +0100
@@ -3,14 +3,45 @@
 =========
 A commandline script to use a simple guest configuration file.
 
+usage: kvm-admin [-h]
+                 domain_name
+                 {boot,create,kill,migrate,modify,monitor,reboot,show,shutdown,status}
+                 [option [option ...]]
+
+optional arguments:
+  -h, --help            show this help message and exit
+
+QEMU-KVM domain:
+  domain_name           Choose a KVM domain name, its the same like the
+                        configuration file name
+
+Action for a domain:
+  {boot,create,kill,migrate,modify,monitor,reboot,show,shutdown,status}
+                        Choose an action for the KVM guest
+
+Monitor command:
+  option                One ore more arguments can pass to the monitor.
+
 usage: kvm-admin [-h] [--generate-options]
                  kvm_guest_name action [monitor [monitor ...]]
 
+=========
+Depencies
+=========
+Python argparse is backported by debian to python version 2.6.
+
+List: python >=2.4 and < 3.0 
+      python-argparse 
+
+All others are standard python library.
+
 ======
 Update
 ======
-When qemu-kvm change or add parameter, than the this options should added:
-	--generate
+When qemu-kvm change or add parameter, than the this run this command:
+	generate-kvm-options --generate
+
+# Fix: and a config with current qemu-kvm verion and compare it each run
 
 This build a new list of all availables qemu-kvm options.
 This is needed to check if the given key in the configuration file 
@@ -20,14 +51,14 @@
 Info
 ====
 The qemu-kvm option for monitor, and pidfile has default values.
-But this options can override in each guest configuration file.
+But this options can be overriden in each domain configuration file.
 
 ========
 Downlaod
 ========
 1. The scripts can downloaded via webrowser as bz2, zip, or gzip archive.
 	http://hg.kasten-edv.de/kvm-tools
-	https://hg.kasten-edv.de/kvm-tools
+	https://hg.kasten-edv.de/kvm-tools --insecure
 
 2. clone the mercurial repository. 
     hg clone http://hg.kasten-edv.de/kvm-tools  
@@ -37,6 +68,7 @@
 Installation
 ============
 Look at INSTALL.txt.
+# Fix: debian package and new setup.py 
 
 ==================
 System preparation
@@ -49,7 +81,6 @@
 
 Each guest configuration file can have this option too.
 
-
 Example to use a system user kvm on debian. If qemu-kvm is already installed, then add only the group kvm
 and modify the /etc/passwd.
 
@@ -77,13 +108,21 @@
 	-option_name value
 	option_name = value
 
-Its exists only one tap option.
-This is used when the tap device should add to a bridge.
+Its exists only one tap option, which has a extend attribute.
+This is used when the tap device should add to a bridge automatic.
 The syntax to append to net = tap option is:
-	bridge=bridge_name 
+    Example:
+	net = tap,bridge=bridge_name 
 
-Example guest configuration file:
-    name = my_first_guest
+For fist run, you can use:
+	kvm-admin my_new_domain create
+
+This build a very minimalistic domain config through a console based dialog.
+# Feature: build a python ncurses script
+
+
+Example domain configuration file:
+    name = my_first_domain
     # first drive
     drive = file=/home/kvm/my_testfile.img,if=virtio,index=0,boot=on,cache=none
     # second drive 
@@ -121,9 +160,6 @@
     rtc = base=localtime
     # optinal, run as kvm user
     runas = kvm
-    # optional, enabled it, to get the python script verbose while editing
-    # all is using an exception and no print statment
-    python-debug = enabled
 
 ====================
 Hotplug a pci device
@@ -145,10 +181,10 @@
 Each command behind the monitor concatenate to a string. 
 No quotations are needed.
 
-usage: kvm-admin my_guest monitor help
+usage: kvm-admin domain_name monitor help
 
 Reboot or shutdown or status can send via the monitor too.
-    kvm-admin my_guest monitor system_powerdown
+    kvm-admin domain_name monitor system_powerdown
 
 You can use the command line monitor like orginal "ALT + CTRL + 2" monitor.
 You can add an usb device or ecject cdrom etc.
--- a/bin/generate-kvm-options	Thu Nov 17 00:47:16 2011 +0100
+++ b/bin/generate-kvm-options	Wed Nov 23 04:33:55 2011 +0100
@@ -1,137 +1,35 @@
 #!/usr/bin/env python
+#
+# Commandline wrapper for generating kvmtools/generate_options.py
+# 
+# usage: generate_options.py [-h] [--generate]
+#
 
 """
-Tool to extract kvm-qemu paramater.
-(c) 2010 Jens Kasten <jens@kasten-edv.de>
+(c) 2010-2011 Jens Kasten <jens@kasten-edv.de>
 """
 
-import os
-import sys
-import re
-from subprocess import Popen, PIPE, call
-
-
-class Generator(object):
-
-    def __init__(self):
-        # Contain the absolute path to kvm binary.
-        # Debian and Gentoo use this for default path.
-        self.qemu_kvm = "/usr/bin/kvm"
-
-        # default setting for most parameters
-        self.disabled = "disabled"
-        # default setting for options_enabled_by_default
-        self.enabled = "enabled"
-        # file where to write the dictonary
-        self.file_to_write = os.path.join(os.path.dirname(__file__), "qemu_kvm_options.py")
-        # option on commandline
-        self.doit = "doit"
-        # option to exclude
-        self.exclude_options = ['h', 'version']
-
-    def usage(self):
-        print "Usage: %s %s" % (sys.argv[0], self.doit)
-
-    def help(self):
-        print "help"
-
-    def arguments(self):
-        """
-        Check input and set the binary path.
-        """
-        print "Type q to quit."
-        if os.path.exists(self.qemu_kvm):
-            print "Found %s" % self.qemu_kvm
-            result = raw_input("Should i use it [y/n]")
-            if result == "" or result == "y":
-                return
-            elif result == "q":
-                sys.exit()
-        print "Type the absolute path to qemu-kvm  binary and press enter."
-        result = raw_input("Path: ")
-        if result == "q":
-            sys.exit()
-        elif os.path.exists(result):
-            self.qemu_kvm = result
-            return
-        else:
-            print "Coult not found %s" % result
+import argparse
 
-    def generate(self):
-        """
-        Extract all arguments.
-        """
-        try:
-            # dictionary which contain all options
-            output = {}
-            # line counter as key for dictionary output 
-            line_counter = 0
-
-            if os.path.isfile(self.file_to_write):
-                os.remove(self.file_to_write)
-            
-            header = "#!/usr/bin/env python\n"
-            header += '"""\n'
-            header += "    Autogenerated dictionary. Don't edit this file!\n"
-            header += '"""\n\n'
-            header += "qemu_kvm_options = {\n"
-            footer = "}\n"
-
-            cmd = [self.qemu_kvm, '--help']
-            result = Popen(cmd, stdin=PIPE, stdout=PIPE)
-
-            # extract option from kvm --help output
-            for line in result.stdout:
-                if line.startswith('-'):
-                    # split options from help text
-                    options = line.split(' ', 1)
-                    # remove leading sign '-' and newline
-                    options = options[0][1:].strip("\n")
-                    # check for special line like fda/fdb or hda/hdb 
-                    if re.search('/', options):
-                        options_two = options.split('/')
-                        output[line_counter] = '\t"%s": "%s",' % \
-                            (options_two[0], self.disabled)
-                        line_counter += 1
-                        output[line_counter] = '\t"%s": "%s",' % \
-                            (options_two[1][1:], self.disabled)
-                        line_counter += 1
-                    else:
-                        # remove option which only display help text
-                        if options not in self.exclude_options:
-                            output[line_counter] = '\t"%s": "%s",' % \
-                                (options, self.disabled)
-                            line_counter += 1 
-                               
-    
-            # write output to __init__.py
-            fd = open(self.file_to_write, 'a')
-            fd.write(header)
-            for index, value in output.iteritems():
-                if index == 0:
-                    fd.write(value + "\n")
-                else:
-                    # check for double key
-                    if value != output[index-1]:
-                        fd.write(value + "\n")
-            fd.write(footer)                        
-            fd.close()
-        except OSError, e:
-            print str(e)
-        except IOError, e:
-            print str(e)
+from kvmtools.generate_options import Generator
     
 
 def main():
-    generator = Generator()
-    if len(sys.argv) < 2:
-        generator.usage()
-    elif len(sys.argv) == 2 and sys.argv[1] == generator.doit:
-        #generator.arguments()
-        #if generator.qemu_kvm:
+    """Commandline option"""
+    parser = argparse.ArgumentParser()
+    parser.add_argument("-g", "--generate", default=False, action="store_true",
+        help="Action to start generating.")
+    parser.add_argument("-v", "--verbose", default=False, action="store_true",
+        help="Print information while build process.")
+    args = parser.parse_args()
+
+    if args.generate:
+        generator = Generator()
+        generator.verbose = args.verbose
         generator.generate()
     else:
-        generator.help()
-    
+        parser.print_usage()
+
+  
 if __name__ == "__main__":
     main()
--- a/bin/kvm-admin	Thu Nov 17 00:47:16 2011 +0100
+++ b/bin/kvm-admin	Wed Nov 23 04:33:55 2011 +0100
@@ -6,6 +6,7 @@
 #
 # Depencies:
 #           python-argparse
+#           python-psutil == 0.1.3 (debian squeeze)
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -28,372 +29,94 @@
 
 import os
 import sys
-import re
 import argparse
+import gettext
 
-from kvmtools.configparser import Parser
-from kvmtools.kvm import Kvm
+from kvmtools.kvm.action import Action
+
+LOCALEAPP = sys.argv[0]
+TRANSLATE = gettext.translation(LOCALEAPP, "/usr/share/locale", fallback=True)
+_ = TRANSLATE.ugettext
 
 
-class KvmAdmin(object):
+class KvmAdmin(Action):
     """ Class for commandline usage for a qemu-kvm guest."""
 
     def __init__(self):
-        # absolute path to the configs, scripts and tools
-        self._base_dir = "/etc/kvm"
-        # path to store pidfile and if needed the socketfile
-        self._run_path = '/var/run/kvm'
-        # directory name to store the ifdown and ifup scripts
-        self._script_dir = 'scripts'
-        # directory name to store the guest configuration files
-        self._guest_config_dir = 'domains'
-        # directory name to store the global configuration file
-        self._global_config_dir = 'config'
-        # name for global configuration file
-        self._global_config = 'kvm.cfg'
-        # argument to show the string which should be execute
-        self._show_config_argument = "show"
-        # prefix for methodes which do some action for the guest
-        self._kvm_prefix = "kvm_"
-        # default telnet port 23, can only use once at time in one guest
-        # otherwise each guest have to set it explicit
-        self._telnet_port = 23
-        # store the pidfile 
-        self.pidfile = None
-        # contain the type for socket
-        # and if needed socket file or host and port
-        self.monitor_options = {}
-        # this exclude_options are using internal only
-        self.exclude_options = ['qemu-kvm', 'python-debug']
-        # contain all configuration variables
-        self.config = {}
-        # contain all bridges to export them
-        self.bridge = {}
-        # keep the status for debugging the python script while editing
-        # values can be True or False 
-        # but should set on global or guest configuration file
-        self.debug = False
-    
-    def _get_monitor(self):
-        """Return a dictionry with type and the path to the socket file or
-        the host and port.
-        """
-        if "monitor" in self.config:
-            
-            _monitor = self.config["monitor"]
-            # get the string befor the first comma 
-            # and then split this string by colon
-            _type = _monitor.split(',')[0].split(':')
-            if len(_type) == 3:
-                # this is usally for tcp
-                self.monitor_options['Type'] = _type[0] 
-                self.monitor_options['Host'] = _type[1]
-                self.monitor_options['Port'] = int(_type[2])
-            elif len(_type) == 2:
-                # this is for telnet, when no port is given
-                self.monitor_options['Type'] = _type[0]
-                if _type[0] == 'unix':
-                    self.monitor_options['SocketFile'] = _type[1]
-                self.monitor_options['Host'] = _type[1]
-                self.monitor_options['Port'] = self._telnet_port
-        else:
-            # set unix socket as default monitor access
-            self._set_socketfile()
-            _monitor = "unix:%s,server,nowait" % self.socketfile
-            self.monitor_options["Type"] = "unix"
-            self.monitor_options['SocketFile'] = self.socketfile
-        return _monitor 
-
-    def _set_pidfile(self):
-        """Set the absolute path for the pidfile."""
-        self.pidfile = "".join([self.guest, ".pid"])
-        self.pidfile = os.path.join(self._run_path, self.pidfile)
-    
-    def _set_socketfile(self):
-        """Set the absolute path for the socketfile."""
-        self.socketfile = "".join([self.guest, ".socket"])
-        self.socketfile = os.path.join(self._run_path, self.socketfile)
-
-    def _get_guest_config_dir(self):
-        """Return the absolute path for guest configuration directory."""
-        if os.path.isdir(os.path.join(self._base_dir, self._guest_config_dir)):
-            return os.path.join(self._base_dir, self._guest_config_dir)
-        else:
-            raise Exception("Guest config directory '%s' does not exists." %
-                self._guest_config_dir)
-
-    def _get_global_config_dir(self):
-        """Return the absolute path for global configuration directory."""
-        if os.path.isdir(os.path.join(self._base_dir, self._global_config_dir)):
-            return os.path.join(self._base_dir, self._global_config_dir)
-        else:
-            raise Exception("Global config directory '%s' does not exists." %
-                self._global_config_dir)
-
-    def available_guests(self):
-        """Return all available guests as an dictionary."""
-        guests = []
-        guest_config_dir = self._get_guest_config_dir()
-        for guest in os.listdir(guest_config_dir):
-            if os.path.isfile(os.path.join(guest_config_dir, guest)):
-                guests.append(guest)
-        if len(guests) >= 1:                
-            return guests
-        else:
-            raise Exception("Guest configuration directory is empty '%s'." 
-                % guest_config_dir)
-
-    def available_actions(self):
-        """Return all methods which start with _kvm_ from class Kvm."""
-        # add action to show the sting, there is no method for this
-        actions = [self._show_config_argument]
-        for action in dir(Kvm):
-            if action.startswith(self._kvm_prefix):
-                actions.append(action.replace(self._kvm_prefix, ""))
-        if len(actions) >= 2:
-            return actions
-        else:
-            raise Execption("No action available.")
-
-    def _get_guest_config(self):
-        """Return the absolute path to guest configuration file."""
-        guest_config = os.path.join(self._get_guest_config_dir(), self.guest)
-        return guest_config
-
-    def _get_global_config(self):
-        """Return the absolute path to global configuration file."""
-        global_config_dir = self._get_global_config_dir()
-        global_config = os.path.join(global_config_dir, self._global_config)
-        return global_config
-
-    def _qemu_kvm_script(self, script_option):
-        """Return the absoulute path for ifup or ifdown script."""
-        script_option = "".join(["kvm-", script_option])
-        script = os.path.join(self._base_dir, self._script_dir)
-        script = os.path.join(script, script_option)
-        return script
-
-    def _check_net_tap(self):
-        """Examine the -net tap option for ifname and additional scripts and 
-        bridge strings.
-        """
-        temp = {} 
-        counter = 0
-        for key, value in self.config["net"].iteritems():
-            if value.startswith("tap"):
-                # search for ifname otherwise set it from guest name
-                if re.search("ifname", value):
-                    temp_ifname = re.search(",ifname=([a-zA-Z0-9]+)", value)
-                    ifname = temp_ifname.group(1)
-                else:
-                    ifname = "".join([self.guest, str(counter)])
-                    temp_ifname = "=".join(["ifname", ifname])
-                    if re.match("tap,", value):
-                        value = re.sub("tap,", "tap,%s,", value) % temp_ifname
-                    else:
-                        value = re.sub("tap", "tap,%s", value) % temp_ifname
-                    counter += 1
-                # build the bridge key    
-                bridge_key = "_".join(["bridge", ifname])
-                # search for bridge otherwise raise an exception,
-                # because this value is needed
-                if re.search("bridge", value):
-                    temp_bridge = re.search(",bridge=([a-zA-Z0-9]+)", value)
-                    # get the bridge name from searched group
-                    bridge = temp_bridge.group(1)
-                    # remove the bridge from string
-                    value = value.replace(temp_bridge.group(0), "")
-                else:
-                    msg = "Missing second Value for bridge.\n"
-                    msg = "".join([msg, "Syntax example: bridge=br0"])
-                    raise Exception(msg)
-                # assign bridge for exporting the bridge name
-                self.bridge[bridge_key] = bridge
-                # search for script 
-                if not re.search("script", value):
-                    ifup = "=".join(["script", self._qemu_kvm_script('ifup')])
-                    value = ",".join([value, ifup])
-                # search for downscript
-                if not re.search("downscript", value):
-                    ifdown = "=".join(["downscript", 
-                                        self._qemu_kvm_script('ifdown')])
-                    value = ",".join([value, ifdown])
-                # add the cleaned value to temporary dictionary
-                temp[key] = value
-            else:                    
-                temp[key] = value
-        # add the cleand temp dictionary back to config        
-        self.config["net"] = temp
-
-    def _add_monitor_to_config(self):
-        """Append the monitor option to the config dictionary."""
-        self.config["monitor"] = self._get_monitor() 
-       
-    def _add_pidfile_to_config(self):
-        """Append the pidfile option to the config dictionary or reverse."""
-        if "pidfile" not in self.config:
-            pidfile = os.path.join(self._run_path, self.pidfile)
-            self.config["pidfile"] = pidfile
-        else:
-            self.pidfile = self.config["pidfile"]
-
-    def _add_uuid_to_config(self):
-        """Append an unique uuid to the config dictionary."""
-        import string
-        import random
-        random.seed(os.urandom(8))
-        charset = string.digits + "abcdef"
-        eight = "".join(random.sample(charset, 8))
-        four_first = "".join(random.sample(charset, 4))
-        four_second = "".join(random.sample(charset, 4))
-        four_third = "".join(random.sample(charset, 4))
-        twelve =  "".join(random.sample(charset, 12))
-        uuid = "-".join([eight, four_first, four_second, four_third, twelve])
-        self.config["uuid"] = uuid
-
-    def _add_name_to_config(self):
-        """Append a name for window title and process name (on linux only)."""
-        if "name" in self.config:
-            process_name = "=kvm_".join(["process", self.config["name"]])
-            self.config["name"] = ",".join([self.config["name"], process_name])
-        else:
-            process_name = "=".join(["process", self.guest])
-            self.config["name"] = ",".join([self.guest, process_name])
-
-    def _merge_configs(self, global_config, guest_config):
-        """Merge global and guest configfile.
-        Keep this method, maybe add some more configuration files later.
-        """
-        for key in global_config.keys():
-            if key in guest_config:
-                self.config[key] = guest_config[key]
-            else:
-                self.config[key] = global_config[key]
-    
-    def _load_config(self):
-        """Build user defined config."""
-        self._set_pidfile()
-        parser = Parser()
-        global_config = parser(self._get_global_config())
-        guest_config = parser(self._get_guest_config())
-        self._merge_configs(global_config, guest_config)
-        # add internal defaults and do some check
-        self._add_name_to_config()    
-        self._add_uuid_to_config()
-        self._add_monitor_to_config()
-        self._add_pidfile_to_config()
-        self._check_net_tap()    
-        if ("python-debug" in self.config 
-            and self.config["python-debug"] == "enabled"):
-            self.debug = True
-
-    def _build_command(self):
-        """Return a tuple. First entry is a list to execute via subprocess
-        and the second is a string to display it.
-        """
-        # import the auto generatet qemu-kvm options from kvm --help
-        from kvmtools.qemu_kvm_options import qemu_kvm_options
-        self._load_config()
-        cmd_execute = []
-        cmd_string = ""
-        # Start to build a list, firstly add the qemu-kvm binary
-        cmd_execute.append(self.config["qemu-kvm"])
-        # then remove internal option  
-        for key in self.exclude_options:
-            if key in self.config:
-                del self.config[key]
-        # iterate over the user config
-        for key, value in self.config.iteritems():
-            # check if key is in qemu_kvm_options
-            if key in qemu_kvm_options:
-                # this check search for more option like -drive -drive etc.
-                if isinstance(value, dict):
-                    for i in value.itervalues():
-                        cmd_execute.append(''.join(['-', key]))
-                        cmd_execute.append(i)
-                elif "enabled" != value:
-                    # this qemu-kvm option have an option, so add -key value
-                    cmd_execute.append(''.join(['-', key]))
-                    cmd_execute.append(value)
-                else:
-                    # this qemu-kvm option don't have any option 
-                    # so only add -key as argument
-                    cmd_execute.append(''.join(['-', key]))
-            else: 
-                msg = ("This option '%s' is not valid for qemu-kvm command." 
-                        % key)
-                raise Exception(msg)
-        # build a string for to display on terminal output
-        cmd_string = " ".join([value for value in cmd_execute])
-        return (cmd_execute, cmd_string)
+        Action.__init__(self)
+        self._args_value = None
 
     def run(self):
-        """Do an action for a guest domain.
-        Call a method based on commandline option two.
+        """Do an action for a domain.
+        Call a method based on commandline option.
         """
-        cmd = self._build_command()
-        kvm_method = "".join([self._kvm_prefix, self.action])
-        kvm = Kvm(self.guest, self.config['uuid'], self.pidfile, 
-            self.monitor_options)
-        if self._show_config_argument == self.action:
-            print "This string would executed:\n%s" % cmd[1]
-        elif "boot" == self.action:
-            getattr(kvm, kvm_method)(cmd[0], self.bridge)
-        elif "monitor" in self.action or "migrate" in self.action:
+        kvm_method = "".join(["kvm_", self.action, "_action"])
+        self.monitor_open()
+        if "monitor" in self.action or "migrate" in self.action:
             if len(sys.argv) >= 4:
                 # build string from third option till end
                 cmd_monitor = " ".join(str(i) for i in self.monitor)
-                getattr(kvm, kvm_method)(cmd_monitor)
+                getattr(self, kvm_method)(cmd_monitor)
             else:
                 raise Exception("Missing monitor argument. Type 'help'.")
         else:
-            getattr(kvm, kvm_method)()
+            getattr(self, kvm_method)()
+        self.monitor_close()
+
+    def show_error(self):
+        """Display errors if the registered."""
+        errors = self.kvm_errors
+        if len(errors) > 0:
+            for error in errors:
+                print error
+            return True
+
+    def _set(self, args_value):
+        self._args_value = args_value
+
+    def _get(self):
+        return self._args_value
+
 
 def main():
-    kvm = KvmAdmin()
-    guests = kvm.available_guests()
-    actions = kvm.available_actions()
-        
+    """Handle the commandline arguments."""
+    kvm_admin = KvmAdmin()
+    actions = kvm_admin.available_actions()
+    domains = kvm_admin.kvm_domain_name_all
+   
     # manage the arguments
     parser = argparse.ArgumentParser(
-        epilog="Available action: %s" % ", ".join(actions))
-
-    group1 = parser.add_argument_group("KVM guest name")
-    group1.add_argument("guest", choices=guests,  
-        metavar=("kvm_guest_name"),
-        help="Choose a KVM guest name, "
-             "its the same like the configuration file")
-
-    group2 = parser.add_argument_group("Action for a guest")
-    group2.add_argument("action", choices=actions,  
-        metavar=("action"),
-        help="Choose an action for the KVM guest")
-
-    group3 = parser.add_argument_group("Monitor command.")
+        epilog="Available domains: %s" % ", ".join(domains))
+    group1 = parser.add_argument_group(_("QEMU-KVM domain"))
+    group1.add_argument("domain", default=False,
+        metavar=(_("domain_name")),
+        help=_("Choose a KVM domain name, "
+             "its the same like the configuration file name"))
+    group2 = parser.add_argument_group("Action for a domain")
+    group2.add_argument("action", choices=actions, 
+        help=_("Choose an action for the KVM guest"))
+    group3 = parser.add_argument_group("Monitor command")
     group3.add_argument("monitor", nargs="*", default=False,
         metavar="option",
-        help="One ore more arguments can pass to the monitor.")
-   
-    group4 = parser.add_argument_group("Qemu options")
-    group4.add_argument("--generate-options", default=False, 
-        action="store_true", 
-        help="Generate new qemu-kvm options. From time to time its "
-             "should execute, because they can change.")
+        help=_("One ore more arguments can pass to the monitor."))
+    args = parser.parse_args()
 
-      
-    args = parser.parse_args(namespace=kvm)
-    # run the action
-    try:
-        if kvm.generate_options:
-            os.system("generate-kvm-options doit")                
-        else:
-            kvm.run()
-    except Exception, error_msg:
-        print error_msg
+    if args.action == "create" or args.domain in domains: 
+        kvm_admin.kvm_domain_name = args.domain
+    else:
+        parser.error(_("Available domains: %s") % domains)
+    
+    kvm_admin.action = args.action
+    if args.monitor:
+        kvm_admin.monitor = args.monitor
+    if not args.action == "modify" and kvm_admin.show_error() :
+        sys.exit(1)
+    kvm_admin.run()
 
 
 if __name__ == "__main__":
     try:
         main()
     except KeyboardInterrupt:
-        print "\rUser break."
+        print _("\rUser break.")
+        sys.exit(0)
--- a/config/kvm.cfg	Thu Nov 17 00:47:16 2011 +0100
+++ b/config/kvm.cfg	Wed Nov 23 04:33:55 2011 +0100
@@ -20,8 +20,5 @@
 #g = 1024x786x32
 
 # optional, add an user kvm to run the qemu-kvm process
-#runas = kvm
+runas = kvm
 
-# optional, enabled it, to get the python script verbose while editing
-# all is using an exception and no print statment
-python-debug = enabled
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/kvm_tools_0.1.7.svg	Wed Nov 23 04:33:55 2011 +0100
@@ -0,0 +1,2213 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="909.703704pt" height="757.476808pt" viewBox="0 0 909.703704 757.476808" version="1.1">
+<defs>
+<g>
+<symbol overflow="visible" id="glyph0-0">
+<path style="stroke:none;" d="M 0.5 1.765625 L 0.5 -7.046875 L 5.5 -7.046875 L 5.5 1.765625 L 0.5 1.765625 Z M 1.0625 1.21875 L 4.9375 1.21875 L 4.9375 -6.484375 L 1.0625 -6.484375 L 1.0625 1.21875 Z M 1.0625 1.21875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-1">
+<path style="stroke:none;" d="M 3.84375 -4.46875 C 4.132812 -4.46875 4.351562 -4.53125 4.5 -4.65625 C 4.652344 -4.789062 4.734375 -4.984375 4.734375 -5.234375 C 4.734375 -5.480469 4.652344 -5.675781 4.5 -5.8125 C 4.351562 -5.945312 4.132812 -6.015625 3.84375 -6.015625 L 2.796875 -6.015625 L 2.796875 -4.46875 L 3.84375 -4.46875 Z M 3.90625 -1.28125 C 4.277344 -1.28125 4.5625 -1.359375 4.75 -1.515625 C 4.945312 -1.679688 5.046875 -1.921875 5.046875 -2.234375 C 5.046875 -2.554688 4.945312 -2.796875 4.75 -2.953125 C 4.5625 -3.105469 4.277344 -3.1875 3.90625 -3.1875 L 2.796875 -3.1875 L 2.796875 -1.28125 L 3.90625 -1.28125 Z M 5.65625 -3.90625 C 6.050781 -3.78125 6.359375 -3.558594 6.578125 -3.25 C 6.804688 -2.9375 6.921875 -2.550781 6.921875 -2.09375 C 6.921875 -1.382812 6.679688 -0.855469 6.203125 -0.515625 C 5.734375 -0.171875 5.007812 0 4.03125 0 L 0.921875 0 L 0.921875 -7.296875 L 3.734375 -7.296875 C 4.753906 -7.296875 5.488281 -7.136719 5.9375 -6.828125 C 6.394531 -6.523438 6.625 -6.035156 6.625 -5.359375 C 6.625 -5.003906 6.539062 -4.699219 6.375 -4.453125 C 6.207031 -4.203125 5.964844 -4.019531 5.65625 -3.90625 Z M 5.65625 -3.90625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-2">
+<path style="stroke:none;" d="M 0.78125 -2.125 L 0.78125 -5.46875 L 2.546875 -5.46875 L 2.546875 -4.921875 C 2.546875 -4.628906 2.539062 -4.257812 2.53125 -3.8125 C 2.53125 -3.363281 2.53125 -3.058594 2.53125 -2.90625 C 2.53125 -2.46875 2.539062 -2.148438 2.5625 -1.953125 C 2.582031 -1.765625 2.625 -1.621094 2.6875 -1.53125 C 2.746094 -1.425781 2.835938 -1.339844 2.953125 -1.28125 C 3.074219 -1.21875 3.210938 -1.1875 3.359375 -1.1875 C 3.722656 -1.1875 4.007812 -1.320312 4.21875 -1.59375 C 4.425781 -1.871094 4.53125 -2.265625 4.53125 -2.765625 L 4.53125 -5.46875 L 6.28125 -5.46875 L 6.28125 0 L 4.53125 0 L 4.53125 -0.796875 C 4.269531 -0.472656 3.988281 -0.230469 3.6875 -0.078125 C 3.394531 0.0664062 3.070312 0.140625 2.71875 0.140625 C 2.082031 0.140625 1.597656 -0.0507812 1.265625 -0.4375 C 0.941406 -0.820312 0.78125 -1.382812 0.78125 -2.125 Z M 0.78125 -2.125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-3">
+<path style="stroke:none;" d="M 0.84375 -5.46875 L 2.59375 -5.46875 L 2.59375 0 L 0.84375 0 L 0.84375 -5.46875 Z M 0.84375 -7.59375 L 2.59375 -7.59375 L 2.59375 -6.171875 L 0.84375 -6.171875 L 0.84375 -7.59375 Z M 0.84375 -7.59375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-4">
+<path style="stroke:none;" d="M 0.84375 -7.59375 L 2.59375 -7.59375 L 2.59375 0 L 0.84375 0 L 0.84375 -7.59375 Z M 0.84375 -7.59375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-5">
+<path style="stroke:none;" d="M 4.5625 -4.671875 L 4.5625 -7.59375 L 6.3125 -7.59375 L 6.3125 0 L 4.5625 0 L 4.5625 -0.796875 C 4.320312 -0.472656 4.054688 -0.230469 3.765625 -0.078125 C 3.472656 0.0664062 3.136719 0.140625 2.765625 0.140625 C 2.085938 0.140625 1.527344 -0.125 1.09375 -0.65625 C 0.664062 -1.195312 0.453125 -1.890625 0.453125 -2.734375 C 0.453125 -3.574219 0.664062 -4.265625 1.09375 -4.796875 C 1.527344 -5.324219 2.085938 -5.59375 2.765625 -5.59375 C 3.136719 -5.59375 3.472656 -5.511719 3.765625 -5.359375 C 4.054688 -5.210938 4.320312 -4.980469 4.5625 -4.671875 Z M 3.40625 -1.125 C 3.777344 -1.125 4.066406 -1.257812 4.265625 -1.53125 C 4.460938 -1.808594 4.5625 -2.210938 4.5625 -2.734375 C 4.5625 -3.253906 4.460938 -3.648438 4.265625 -3.921875 C 4.066406 -4.191406 3.777344 -4.328125 3.40625 -4.328125 C 3.039062 -4.328125 2.757812 -4.191406 2.5625 -3.921875 C 2.363281 -3.648438 2.265625 -3.253906 2.265625 -2.734375 C 2.265625 -2.210938 2.363281 -1.808594 2.5625 -1.53125 C 2.757812 -1.257812 3.039062 -1.125 3.40625 -1.125 Z M 3.40625 -1.125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-6">
+<path style="stroke:none;" d="M 6.703125 -0.40625 C 6.359375 -0.21875 5.996094 -0.0820312 5.625 0 C 5.25 0.0898438 4.855469 0.140625 4.453125 0.140625 C 3.234375 0.140625 2.269531 -0.195312 1.5625 -0.875 C 0.851562 -1.550781 0.5 -2.472656 0.5 -3.640625 C 0.5 -4.804688 0.851562 -5.726562 1.5625 -6.40625 C 2.269531 -7.082031 3.234375 -7.421875 4.453125 -7.421875 C 4.855469 -7.421875 5.25 -7.371094 5.625 -7.28125 C 5.996094 -7.195312 6.359375 -7.058594 6.703125 -6.875 L 6.703125 -5.375 C 6.347656 -5.613281 5.996094 -5.785156 5.65625 -5.890625 C 5.320312 -6.003906 4.964844 -6.0625 4.59375 -6.0625 C 3.925781 -6.0625 3.398438 -5.839844 3.015625 -5.40625 C 2.628906 -4.976562 2.4375 -4.386719 2.4375 -3.640625 C 2.4375 -2.890625 2.628906 -2.292969 3.015625 -1.859375 C 3.398438 -1.429688 3.925781 -1.21875 4.59375 -1.21875 C 4.964844 -1.21875 5.320312 -1.269531 5.65625 -1.375 C 5.996094 -1.488281 6.347656 -1.664062 6.703125 -1.90625 L 6.703125 -0.40625 Z M 6.703125 -0.40625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-7">
+<path style="stroke:none;" d="M 3.4375 -4.34375 C 3.050781 -4.34375 2.753906 -4.199219 2.546875 -3.921875 C 2.347656 -3.648438 2.25 -3.253906 2.25 -2.734375 C 2.25 -2.203125 2.347656 -1.792969 2.546875 -1.515625 C 2.753906 -1.242188 3.050781 -1.109375 3.4375 -1.109375 C 3.820312 -1.109375 4.113281 -1.242188 4.3125 -1.515625 C 4.519531 -1.792969 4.625 -2.203125 4.625 -2.734375 C 4.625 -3.253906 4.519531 -3.648438 4.3125 -3.921875 C 4.113281 -4.199219 3.820312 -4.34375 3.4375 -4.34375 Z M 3.4375 -5.59375 C 4.382812 -5.59375 5.117188 -5.335938 5.640625 -4.828125 C 6.167969 -4.328125 6.4375 -3.628906 6.4375 -2.734375 C 6.4375 -1.828125 6.167969 -1.117188 5.640625 -0.609375 C 5.117188 -0.109375 4.382812 0.140625 3.4375 0.140625 C 2.5 0.140625 1.761719 -0.109375 1.234375 -0.609375 C 0.703125 -1.117188 0.4375 -1.828125 0.4375 -2.734375 C 0.4375 -3.628906 0.703125 -4.328125 1.234375 -4.828125 C 1.761719 -5.335938 2.5 -5.59375 3.4375 -5.59375 Z M 3.4375 -5.59375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-8">
+<path style="stroke:none;" d="M 6.34375 -3.328125 L 6.34375 0 L 4.578125 0 L 4.578125 -0.546875 L 4.578125 -2.546875 C 4.578125 -3.011719 4.566406 -3.335938 4.546875 -3.515625 C 4.523438 -3.699219 4.488281 -3.835938 4.4375 -3.921875 C 4.375 -4.035156 4.277344 -4.125 4.15625 -4.1875 C 4.039062 -4.246094 3.910156 -4.28125 3.765625 -4.28125 C 3.398438 -4.28125 3.113281 -4.136719 2.90625 -3.859375 C 2.695312 -3.578125 2.59375 -3.183594 2.59375 -2.6875 L 2.59375 0 L 0.84375 0 L 0.84375 -5.46875 L 2.59375 -5.46875 L 2.59375 -4.671875 C 2.851562 -4.980469 3.128906 -5.210938 3.421875 -5.359375 C 3.722656 -5.511719 4.050781 -5.59375 4.40625 -5.59375 C 5.039062 -5.59375 5.519531 -5.398438 5.84375 -5.015625 C 6.175781 -4.628906 6.34375 -4.066406 6.34375 -3.328125 Z M 6.34375 -3.328125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-9">
+<path style="stroke:none;" d="M 4.4375 -7.59375 L 4.4375 -6.453125 L 3.46875 -6.453125 C 3.21875 -6.453125 3.042969 -6.402344 2.953125 -6.3125 C 2.859375 -6.226562 2.8125 -6.070312 2.8125 -5.84375 L 2.8125 -5.46875 L 4.296875 -5.46875 L 4.296875 -4.21875 L 2.8125 -4.21875 L 2.8125 0 L 1.0625 0 L 1.0625 -4.21875 L 0.1875 -4.21875 L 0.1875 -5.46875 L 1.0625 -5.46875 L 1.0625 -5.84375 C 1.0625 -6.445312 1.226562 -6.890625 1.5625 -7.171875 C 1.894531 -7.449219 2.40625 -7.59375 3.09375 -7.59375 L 4.4375 -7.59375 Z M 4.4375 -7.59375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-10">
+<path style="stroke:none;" d="M 4.5625 -0.921875 C 4.320312 -0.609375 4.054688 -0.371094 3.765625 -0.21875 C 3.472656 -0.0703125 3.136719 0 2.765625 0 C 2.097656 0 1.542969 -0.257812 1.109375 -0.78125 C 0.671875 -1.308594 0.453125 -1.984375 0.453125 -2.796875 C 0.453125 -3.617188 0.671875 -4.289062 1.109375 -4.8125 C 1.542969 -5.332031 2.097656 -5.59375 2.765625 -5.59375 C 3.136719 -5.59375 3.472656 -5.511719 3.765625 -5.359375 C 4.054688 -5.210938 4.320312 -4.976562 4.5625 -4.65625 L 4.5625 -5.46875 L 6.3125 -5.46875 L 6.3125 -0.546875 C 6.3125 0.324219 6.035156 0.992188 5.484375 1.453125 C 4.929688 1.917969 4.128906 2.15625 3.078125 2.15625 C 2.734375 2.15625 2.398438 2.128906 2.078125 2.078125 C 1.765625 2.023438 1.445312 1.945312 1.125 1.84375 L 1.125 0.484375 C 1.425781 0.660156 1.722656 0.789062 2.015625 0.875 C 2.304688 0.957031 2.601562 1 2.90625 1 C 3.476562 1 3.894531 0.871094 4.15625 0.625 C 4.425781 0.375 4.5625 -0.015625 4.5625 -0.546875 L 4.5625 -0.921875 Z M 3.40625 -4.328125 C 3.039062 -4.328125 2.757812 -4.191406 2.5625 -3.921875 C 2.363281 -3.660156 2.265625 -3.285156 2.265625 -2.796875 C 2.265625 -2.296875 2.359375 -1.914062 2.546875 -1.65625 C 2.742188 -1.394531 3.03125 -1.265625 3.40625 -1.265625 C 3.769531 -1.265625 4.050781 -1.398438 4.25 -1.671875 C 4.457031 -1.941406 4.5625 -2.316406 4.5625 -2.796875 C 4.5625 -3.285156 4.457031 -3.660156 4.25 -3.921875 C 4.050781 -4.191406 3.769531 -4.328125 3.40625 -4.328125 Z M 3.40625 -4.328125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-11">
+<path style="stroke:none;" d="M 2.796875 -5.875 L 2.796875 -1.421875 L 3.46875 -1.421875 C 4.238281 -1.421875 4.828125 -1.609375 5.234375 -1.984375 C 5.636719 -2.367188 5.84375 -2.925781 5.84375 -3.65625 C 5.84375 -4.371094 5.636719 -4.921875 5.234375 -5.296875 C 4.828125 -5.679688 4.238281 -5.875 3.46875 -5.875 L 2.796875 -5.875 Z M 0.921875 -7.296875 L 2.90625 -7.296875 C 4.007812 -7.296875 4.832031 -7.210938 5.375 -7.046875 C 5.914062 -6.890625 6.378906 -6.621094 6.765625 -6.25 C 7.105469 -5.914062 7.363281 -5.535156 7.53125 -5.109375 C 7.695312 -4.679688 7.78125 -4.195312 7.78125 -3.65625 C 7.78125 -3.101562 7.695312 -2.605469 7.53125 -2.171875 C 7.363281 -1.742188 7.105469 -1.367188 6.765625 -1.046875 C 6.378906 -0.660156 5.910156 -0.386719 5.359375 -0.234375 C 4.816406 -0.078125 3.996094 0 2.90625 0 L 0.921875 0 L 0.921875 -7.296875 Z M 0.921875 -7.296875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-12">
+<path style="stroke:none;" d="M 5.90625 -4.5625 C 6.121094 -4.894531 6.382812 -5.148438 6.6875 -5.328125 C 6.996094 -5.503906 7.335938 -5.59375 7.703125 -5.59375 C 8.324219 -5.59375 8.800781 -5.398438 9.125 -5.015625 C 9.457031 -4.628906 9.625 -4.066406 9.625 -3.328125 L 9.625 0 L 7.875 0 L 7.875 -2.859375 C 7.875 -2.898438 7.875 -2.941406 7.875 -2.984375 C 7.875 -3.023438 7.875 -3.085938 7.875 -3.171875 C 7.875 -3.566406 7.816406 -3.847656 7.703125 -4.015625 C 7.597656 -4.191406 7.414062 -4.28125 7.15625 -4.28125 C 6.820312 -4.28125 6.566406 -4.144531 6.390625 -3.875 C 6.210938 -3.601562 6.117188 -3.207031 6.109375 -2.6875 L 6.109375 0 L 4.34375 0 L 4.34375 -2.859375 C 4.34375 -3.460938 4.289062 -3.847656 4.1875 -4.015625 C 4.082031 -4.191406 3.898438 -4.28125 3.640625 -4.28125 C 3.304688 -4.28125 3.042969 -4.136719 2.859375 -3.859375 C 2.679688 -3.585938 2.59375 -3.195312 2.59375 -2.6875 L 2.59375 0 L 0.828125 0 L 0.828125 -5.46875 L 2.59375 -5.46875 L 2.59375 -4.671875 C 2.800781 -4.972656 3.046875 -5.203125 3.328125 -5.359375 C 3.605469 -5.511719 3.914062 -5.59375 4.25 -5.59375 C 4.621094 -5.59375 4.957031 -5.496094 5.25 -5.3125 C 5.539062 -5.132812 5.757812 -4.882812 5.90625 -4.5625 Z M 5.90625 -4.5625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-13">
+<path style="stroke:none;" d="M 3.296875 -2.46875 C 2.929688 -2.46875 2.652344 -2.402344 2.46875 -2.28125 C 2.28125 -2.15625 2.1875 -1.972656 2.1875 -1.734375 C 2.1875 -1.503906 2.257812 -1.324219 2.40625 -1.203125 C 2.558594 -1.078125 2.769531 -1.015625 3.03125 -1.015625 C 3.363281 -1.015625 3.640625 -1.132812 3.859375 -1.375 C 4.085938 -1.613281 4.203125 -1.910156 4.203125 -2.265625 L 4.203125 -2.46875 L 3.296875 -2.46875 Z M 5.96875 -3.125 L 5.96875 0 L 4.203125 0 L 4.203125 -0.8125 C 3.960938 -0.476562 3.695312 -0.230469 3.40625 -0.078125 C 3.113281 0.0664062 2.757812 0.140625 2.34375 0.140625 C 1.769531 0.140625 1.304688 -0.0195312 0.953125 -0.34375 C 0.609375 -0.675781 0.4375 -1.109375 0.4375 -1.640625 C 0.4375 -2.285156 0.65625 -2.753906 1.09375 -3.046875 C 1.527344 -3.347656 2.222656 -3.5 3.171875 -3.5 L 4.203125 -3.5 L 4.203125 -3.640625 C 4.203125 -3.910156 4.089844 -4.109375 3.875 -4.234375 C 3.65625 -4.367188 3.316406 -4.4375 2.859375 -4.4375 C 2.484375 -4.4375 2.132812 -4.398438 1.8125 -4.328125 C 1.488281 -4.253906 1.183594 -4.136719 0.90625 -3.984375 L 0.90625 -5.328125 C 1.277344 -5.410156 1.65625 -5.472656 2.03125 -5.515625 C 2.414062 -5.566406 2.796875 -5.59375 3.171875 -5.59375 C 4.160156 -5.59375 4.875 -5.398438 5.3125 -5.015625 C 5.746094 -4.628906 5.96875 -3.996094 5.96875 -3.125 Z M 5.96875 -3.125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-14">
+<path style="stroke:none;" d="M 0.921875 -7.296875 L 3.3125 -7.296875 L 4.96875 -3.390625 L 6.640625 -7.296875 L 9.03125 -7.296875 L 9.03125 0 L 7.25 0 L 7.25 -5.328125 L 5.578125 -1.40625 L 4.375 -1.40625 L 2.703125 -5.328125 L 2.703125 0 L 0.921875 0 L 0.921875 -7.296875 Z M 0.921875 -7.296875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-15">
+<path style="stroke:none;" d="M 2.75 -7.015625 L 2.75 -5.46875 L 4.546875 -5.46875 L 4.546875 -4.21875 L 2.75 -4.21875 L 2.75 -1.90625 C 2.75 -1.644531 2.796875 -1.464844 2.890625 -1.375 C 2.992188 -1.289062 3.195312 -1.25 3.5 -1.25 L 4.40625 -1.25 L 4.40625 0 L 2.90625 0 C 2.207031 0 1.710938 -0.140625 1.421875 -0.421875 C 1.140625 -0.710938 1 -1.207031 1 -1.90625 L 1 -4.21875 L 0.125 -4.21875 L 0.125 -5.46875 L 1 -5.46875 L 1 -7.015625 L 2.75 -7.015625 Z M 2.75 -7.015625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-16">
+<path style="stroke:none;" d="M 4.90625 -3.984375 C 4.75 -4.054688 4.589844 -4.109375 4.4375 -4.140625 C 4.289062 -4.167969 4.136719 -4.1875 3.984375 -4.1875 C 3.535156 -4.1875 3.191406 -4.039062 2.953125 -3.75 C 2.710938 -3.46875 2.59375 -3.054688 2.59375 -2.515625 L 2.59375 0 L 0.84375 0 L 0.84375 -5.46875 L 2.59375 -5.46875 L 2.59375 -4.578125 C 2.808594 -4.929688 3.066406 -5.1875 3.359375 -5.34375 C 3.648438 -5.507812 4 -5.59375 4.40625 -5.59375 C 4.464844 -5.59375 4.53125 -5.59375 4.59375 -5.59375 C 4.664062 -5.59375 4.765625 -5.582031 4.890625 -5.5625 L 4.90625 -3.984375 Z M 4.90625 -3.984375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-17">
+<path style="stroke:none;" d="M 7.46875 -0.546875 C 7 -0.316406 6.507812 -0.144531 6 -0.03125 C 5.5 0.0820312 4.980469 0.140625 4.453125 0.140625 C 3.234375 0.140625 2.269531 -0.195312 1.5625 -0.875 C 0.851562 -1.550781 0.5 -2.472656 0.5 -3.640625 C 0.5 -4.816406 0.859375 -5.738281 1.578125 -6.40625 C 2.304688 -7.082031 3.296875 -7.421875 4.546875 -7.421875 C 5.035156 -7.421875 5.5 -7.371094 5.9375 -7.28125 C 6.382812 -7.195312 6.804688 -7.058594 7.203125 -6.875 L 7.203125 -5.375 C 6.796875 -5.601562 6.386719 -5.773438 5.984375 -5.890625 C 5.585938 -6.003906 5.183594 -6.0625 4.78125 -6.0625 C 4.03125 -6.0625 3.449219 -5.851562 3.046875 -5.4375 C 2.640625 -5.019531 2.4375 -4.417969 2.4375 -3.640625 C 2.4375 -2.867188 2.628906 -2.269531 3.015625 -1.84375 C 3.410156 -1.425781 3.96875 -1.21875 4.6875 -1.21875 C 4.882812 -1.21875 5.066406 -1.226562 5.234375 -1.25 C 5.398438 -1.277344 5.550781 -1.320312 5.6875 -1.375 L 5.6875 -2.78125 L 4.546875 -2.78125 L 4.546875 -4.046875 L 7.46875 -4.046875 L 7.46875 -0.546875 Z M 7.46875 -0.546875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-18">
+<path style="stroke:none;" d="M 6.296875 -2.75 L 6.296875 -2.25 L 2.21875 -2.25 C 2.257812 -1.84375 2.40625 -1.535156 2.65625 -1.328125 C 2.902344 -1.117188 3.257812 -1.015625 3.71875 -1.015625 C 4.082031 -1.015625 4.457031 -1.066406 4.84375 -1.171875 C 5.238281 -1.285156 5.640625 -1.457031 6.046875 -1.6875 L 6.046875 -0.328125 C 5.628906 -0.171875 5.210938 -0.0546875 4.796875 0.015625 C 4.390625 0.0976562 3.976562 0.140625 3.5625 0.140625 C 2.570312 0.140625 1.800781 -0.109375 1.25 -0.609375 C 0.707031 -1.117188 0.4375 -1.828125 0.4375 -2.734375 C 0.4375 -3.617188 0.703125 -4.316406 1.234375 -4.828125 C 1.773438 -5.335938 2.519531 -5.59375 3.46875 -5.59375 C 4.320312 -5.59375 5.003906 -5.332031 5.515625 -4.8125 C 6.035156 -4.300781 6.296875 -3.613281 6.296875 -2.75 Z M 4.5 -3.328125 C 4.5 -3.660156 4.398438 -3.925781 4.203125 -4.125 C 4.015625 -4.332031 3.761719 -4.4375 3.453125 -4.4375 C 3.109375 -4.4375 2.832031 -4.339844 2.625 -4.15625 C 2.414062 -3.96875 2.285156 -3.691406 2.234375 -3.328125 L 4.5 -3.328125 Z M 4.5 -3.328125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-19">
+<path style="stroke:none;" d="M 0.046875 -7.296875 L 6.765625 -7.296875 L 6.765625 -5.875 L 4.34375 -5.875 L 4.34375 0 L 2.46875 0 L 2.46875 -5.875 L 0.046875 -5.875 L 0.046875 -7.296875 Z M 0.046875 -7.296875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-20">
+<path style="stroke:none;" d="M 5.109375 -5.296875 L 5.109375 -3.96875 C 4.734375 -4.121094 4.367188 -4.238281 4.015625 -4.3125 C 3.671875 -4.394531 3.347656 -4.4375 3.046875 -4.4375 C 2.710938 -4.4375 2.460938 -4.394531 2.296875 -4.3125 C 2.140625 -4.226562 2.0625 -4.101562 2.0625 -3.9375 C 2.0625 -3.789062 2.117188 -3.679688 2.234375 -3.609375 C 2.355469 -3.535156 2.582031 -3.476562 2.90625 -3.4375 L 3.203125 -3.40625 C 4.097656 -3.289062 4.703125 -3.101562 5.015625 -2.84375 C 5.324219 -2.582031 5.484375 -2.167969 5.484375 -1.609375 C 5.484375 -1.023438 5.261719 -0.585938 4.828125 -0.296875 C 4.398438 -0.00390625 3.757812 0.140625 2.90625 0.140625 C 2.550781 0.140625 2.179688 0.105469 1.796875 0.046875 C 1.410156 -0.00390625 1.007812 -0.0859375 0.59375 -0.203125 L 0.59375 -1.53125 C 0.945312 -1.363281 1.304688 -1.230469 1.671875 -1.140625 C 2.035156 -1.054688 2.40625 -1.015625 2.78125 -1.015625 C 3.121094 -1.015625 3.378906 -1.0625 3.546875 -1.15625 C 3.722656 -1.246094 3.8125 -1.390625 3.8125 -1.578125 C 3.8125 -1.730469 3.753906 -1.847656 3.640625 -1.921875 C 3.523438 -2.003906 3.289062 -2.066406 2.9375 -2.109375 L 2.625 -2.15625 C 1.84375 -2.246094 1.292969 -2.425781 0.984375 -2.6875 C 0.671875 -2.957031 0.515625 -3.359375 0.515625 -3.890625 C 0.515625 -4.472656 0.710938 -4.898438 1.109375 -5.171875 C 1.503906 -5.449219 2.113281 -5.59375 2.9375 -5.59375 C 3.257812 -5.59375 3.597656 -5.566406 3.953125 -5.515625 C 4.304688 -5.472656 4.691406 -5.398438 5.109375 -5.296875 Z M 5.109375 -5.296875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-21">
+<path style="stroke:none;" d="M 0.921875 -7.296875 L 4.03125 -7.296875 C 4.964844 -7.296875 5.679688 -7.085938 6.171875 -6.671875 C 6.667969 -6.265625 6.921875 -5.675781 6.921875 -4.90625 C 6.921875 -4.144531 6.667969 -3.554688 6.171875 -3.140625 C 5.679688 -2.734375 4.964844 -2.53125 4.03125 -2.53125 L 2.796875 -2.53125 L 2.796875 0 L 0.921875 0 L 0.921875 -7.296875 Z M 2.796875 -5.921875 L 2.796875 -3.890625 L 3.84375 -3.890625 C 4.207031 -3.890625 4.488281 -3.976562 4.6875 -4.15625 C 4.882812 -4.332031 4.984375 -4.582031 4.984375 -4.90625 C 4.984375 -5.238281 4.882812 -5.488281 4.6875 -5.65625 C 4.488281 -5.832031 4.207031 -5.921875 3.84375 -5.921875 L 2.796875 -5.921875 Z M 2.796875 -5.921875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-22">
+<path style="stroke:none;" d="M 5.984375 -7.0625 L 5.984375 -5.515625 C 5.585938 -5.691406 5.195312 -5.828125 4.8125 -5.921875 C 4.4375 -6.011719 4.074219 -6.0625 3.734375 -6.0625 C 3.285156 -6.0625 2.949219 -5.996094 2.734375 -5.875 C 2.523438 -5.75 2.421875 -5.554688 2.421875 -5.296875 C 2.421875 -5.097656 2.492188 -4.941406 2.640625 -4.828125 C 2.785156 -4.722656 3.046875 -4.632812 3.421875 -4.5625 L 4.234375 -4.40625 C 5.035156 -4.238281 5.609375 -3.988281 5.953125 -3.65625 C 6.292969 -3.320312 6.46875 -2.847656 6.46875 -2.234375 C 6.46875 -1.429688 6.226562 -0.832031 5.75 -0.4375 C 5.28125 -0.0507812 4.550781 0.140625 3.5625 0.140625 C 3.101562 0.140625 2.636719 0.0898438 2.171875 0 C 1.710938 -0.0820312 1.246094 -0.207031 0.78125 -0.375 L 0.78125 -1.96875 C 1.246094 -1.71875 1.695312 -1.527344 2.125 -1.40625 C 2.558594 -1.28125 2.984375 -1.21875 3.390625 -1.21875 C 3.792969 -1.21875 4.109375 -1.285156 4.328125 -1.421875 C 4.542969 -1.554688 4.65625 -1.753906 4.65625 -2.015625 C 4.65625 -2.242188 4.582031 -2.414062 4.4375 -2.53125 C 4.289062 -2.652344 3.992188 -2.769531 3.546875 -2.875 L 2.828125 -3.03125 C 2.097656 -3.183594 1.558594 -3.4375 1.21875 -3.78125 C 0.882812 -4.121094 0.71875 -4.582031 0.71875 -5.15625 C 0.71875 -5.882812 0.953125 -6.441406 1.421875 -6.828125 C 1.886719 -7.222656 2.5625 -7.421875 3.4375 -7.421875 C 3.839844 -7.421875 4.253906 -7.386719 4.671875 -7.328125 C 5.097656 -7.265625 5.535156 -7.175781 5.984375 -7.0625 Z M 5.984375 -7.0625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-23">
+<path style="stroke:none;" d="M 0.125 -5.46875 L 1.875 -5.46875 L 3.34375 -1.765625 L 4.59375 -5.46875 L 6.34375 -5.46875 L 4.03125 0.515625 C 3.800781 1.128906 3.527344 1.554688 3.21875 1.796875 C 2.914062 2.035156 2.511719 2.15625 2.015625 2.15625 L 1 2.15625 L 1 1.015625 L 1.546875 1.015625 C 1.847656 1.015625 2.0625 0.964844 2.1875 0.875 C 2.320312 0.78125 2.429688 0.605469 2.515625 0.359375 L 2.5625 0.203125 L 0.125 -5.46875 Z M 0.125 -5.46875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-24">
+<path style="stroke:none;" d="M 0.921875 -7.296875 L 2.796875 -7.296875 L 2.796875 -4.515625 L 5.578125 -4.515625 L 5.578125 -7.296875 L 7.453125 -7.296875 L 7.453125 0 L 5.578125 0 L 5.578125 -3.09375 L 2.796875 -3.09375 L 2.796875 0 L 0.921875 0 L 0.921875 -7.296875 Z M 0.921875 -7.296875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-25">
+<path style="stroke:none;" d="M 5.34375 -1.328125 L 2.40625 -1.328125 L 1.9375 0 L 0.046875 0 L 2.75 -7.296875 L 4.984375 -7.296875 L 7.6875 0 L 5.796875 0 L 5.34375 -1.328125 Z M 2.875 -2.6875 L 4.875 -2.6875 L 3.875 -5.578125 L 2.875 -2.6875 Z M 2.875 -2.6875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-26">
+<path style="stroke:none;" d="M 5.265625 -5.296875 L 5.265625 -3.875 C 5.023438 -4.027344 4.785156 -4.144531 4.546875 -4.21875 C 4.304688 -4.300781 4.054688 -4.34375 3.796875 -4.34375 C 3.304688 -4.34375 2.925781 -4.199219 2.65625 -3.921875 C 2.382812 -3.640625 2.25 -3.242188 2.25 -2.734375 C 2.25 -2.222656 2.382812 -1.820312 2.65625 -1.53125 C 2.925781 -1.25 3.304688 -1.109375 3.796875 -1.109375 C 4.066406 -1.109375 4.328125 -1.148438 4.578125 -1.234375 C 4.824219 -1.316406 5.054688 -1.4375 5.265625 -1.59375 L 5.265625 -0.15625 C 4.984375 -0.0625 4.699219 0.0078125 4.421875 0.0625 C 4.140625 0.113281 3.855469 0.140625 3.578125 0.140625 C 2.585938 0.140625 1.816406 -0.109375 1.265625 -0.609375 C 0.710938 -1.117188 0.4375 -1.828125 0.4375 -2.734375 C 0.4375 -3.628906 0.710938 -4.328125 1.265625 -4.828125 C 1.816406 -5.335938 2.585938 -5.59375 3.578125 -5.59375 C 3.867188 -5.59375 4.148438 -5.566406 4.421875 -5.515625 C 4.699219 -5.472656 4.984375 -5.398438 5.265625 -5.296875 Z M 5.265625 -5.296875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-27">
+<path style="stroke:none;" d="M 0.921875 -7.296875 L 2.796875 -7.296875 L 2.796875 -4.625 L 5.515625 -7.296875 L 7.6875 -7.296875 L 4.1875 -3.84375 L 8.046875 0 L 5.703125 0 L 2.796875 -2.875 L 2.796875 0 L 0.921875 0 L 0.921875 -7.296875 Z M 0.921875 -7.296875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph0-28">
+<path style="stroke:none;" d="M 0.15625 -5.46875 L 1.90625 -5.46875 L 3.265625 -1.6875 L 4.625 -5.46875 L 6.375 -5.46875 L 4.21875 0 L 2.296875 0 L 0.15625 -5.46875 Z M 0.15625 -5.46875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-0">
+<path style="stroke:none;" d="M 0.5 1.765625 L 0.5 -7.046875 L 5.5 -7.046875 L 5.5 1.765625 L 0.5 1.765625 Z M 1.0625 1.21875 L 4.9375 1.21875 L 4.9375 -6.484375 L 1.0625 -6.484375 L 1.0625 1.21875 Z M 1.0625 1.21875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-1">
+<path style="stroke:none;" d="M 4.59375 -6.265625 L 4.59375 -3.546875 L 7.3125 -3.546875 L 7.3125 -2.71875 L 4.59375 -2.71875 L 4.59375 0 L 3.78125 0 L 3.78125 -2.71875 L 1.0625 -2.71875 L 1.0625 -3.546875 L 3.78125 -3.546875 L 3.78125 -6.265625 L 4.59375 -6.265625 Z M 4.59375 -6.265625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-2">
+<path style="stroke:none;" d=""/>
+</symbol>
+<symbol overflow="visible" id="glyph1-3">
+<path style="stroke:none;" d="M 4.875 -5.265625 L 4.875 -4.421875 C 4.625 -4.554688 4.367188 -4.660156 4.109375 -4.734375 C 3.859375 -4.804688 3.601562 -4.84375 3.34375 -4.84375 C 2.757812 -4.84375 2.304688 -4.652344 1.984375 -4.28125 C 1.660156 -3.914062 1.5 -3.398438 1.5 -2.734375 C 1.5 -2.066406 1.660156 -1.542969 1.984375 -1.171875 C 2.304688 -0.804688 2.757812 -0.625 3.34375 -0.625 C 3.601562 -0.625 3.859375 -0.65625 4.109375 -0.71875 C 4.367188 -0.789062 4.625 -0.898438 4.875 -1.046875 L 4.875 -0.203125 C 4.625 -0.0859375 4.363281 -0.00390625 4.09375 0.046875 C 3.832031 0.105469 3.550781 0.140625 3.25 0.140625 C 2.414062 0.140625 1.753906 -0.113281 1.265625 -0.625 C 0.785156 -1.144531 0.546875 -1.847656 0.546875 -2.734375 C 0.546875 -3.617188 0.789062 -4.316406 1.28125 -4.828125 C 1.769531 -5.335938 2.441406 -5.59375 3.296875 -5.59375 C 3.574219 -5.59375 3.847656 -5.566406 4.109375 -5.515625 C 4.367188 -5.460938 4.625 -5.378906 4.875 -5.265625 Z M 4.875 -5.265625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-4">
+<path style="stroke:none;" d="M 3.0625 -4.84375 C 2.582031 -4.84375 2.199219 -4.652344 1.921875 -4.28125 C 1.640625 -3.90625 1.5 -3.386719 1.5 -2.734375 C 1.5 -2.078125 1.632812 -1.558594 1.90625 -1.1875 C 2.183594 -0.8125 2.570312 -0.625 3.0625 -0.625 C 3.539062 -0.625 3.921875 -0.8125 4.203125 -1.1875 C 4.480469 -1.558594 4.625 -2.078125 4.625 -2.734375 C 4.625 -3.378906 4.480469 -3.890625 4.203125 -4.265625 C 3.921875 -4.648438 3.539062 -4.84375 3.0625 -4.84375 Z M 3.0625 -5.59375 C 3.839844 -5.59375 4.457031 -5.335938 4.90625 -4.828125 C 5.351562 -4.328125 5.578125 -3.628906 5.578125 -2.734375 C 5.578125 -1.835938 5.351562 -1.132812 4.90625 -0.625 C 4.457031 -0.113281 3.839844 0.140625 3.0625 0.140625 C 2.28125 0.140625 1.664062 -0.113281 1.21875 -0.625 C 0.769531 -1.132812 0.546875 -1.835938 0.546875 -2.734375 C 0.546875 -3.628906 0.769531 -4.328125 1.21875 -4.828125 C 1.664062 -5.335938 2.28125 -5.59375 3.0625 -5.59375 Z M 3.0625 -5.59375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-5">
+<path style="stroke:none;" d="M 5.484375 -3.296875 L 5.484375 0 L 4.59375 0 L 4.59375 -3.265625 C 4.59375 -3.785156 4.488281 -4.171875 4.28125 -4.421875 C 4.082031 -4.679688 3.777344 -4.8125 3.375 -4.8125 C 2.894531 -4.8125 2.511719 -4.652344 2.234375 -4.34375 C 1.953125 -4.039062 1.8125 -3.621094 1.8125 -3.09375 L 1.8125 0 L 0.90625 0 L 0.90625 -5.46875 L 1.8125 -5.46875 L 1.8125 -4.625 C 2.027344 -4.945312 2.285156 -5.1875 2.578125 -5.34375 C 2.867188 -5.507812 3.203125 -5.59375 3.578125 -5.59375 C 4.199219 -5.59375 4.675781 -5.398438 5 -5.015625 C 5.320312 -4.628906 5.484375 -4.054688 5.484375 -3.296875 Z M 5.484375 -3.296875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-6">
+<path style="stroke:none;" d="M 3.71875 -7.59375 L 3.71875 -6.84375 L 2.859375 -6.84375 C 2.535156 -6.84375 2.308594 -6.773438 2.1875 -6.640625 C 2.0625 -6.515625 2 -6.285156 2 -5.953125 L 2 -5.46875 L 3.46875 -5.46875 L 3.46875 -4.765625 L 2 -4.765625 L 2 0 L 1.09375 0 L 1.09375 -4.765625 L 0.234375 -4.765625 L 0.234375 -5.46875 L 1.09375 -5.46875 L 1.09375 -5.84375 C 1.09375 -6.457031 1.234375 -6.898438 1.515625 -7.171875 C 1.792969 -7.449219 2.242188 -7.59375 2.859375 -7.59375 L 3.71875 -7.59375 Z M 3.71875 -7.59375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-7">
+<path style="stroke:none;" d="M 0.9375 -5.46875 L 1.84375 -5.46875 L 1.84375 0 L 0.9375 0 L 0.9375 -5.46875 Z M 0.9375 -7.59375 L 1.84375 -7.59375 L 1.84375 -6.453125 L 0.9375 -6.453125 L 0.9375 -7.59375 Z M 0.9375 -7.59375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-8">
+<path style="stroke:none;" d="M 4.546875 -2.796875 C 4.546875 -3.449219 4.410156 -3.957031 4.140625 -4.3125 C 3.867188 -4.664062 3.492188 -4.84375 3.015625 -4.84375 C 2.523438 -4.84375 2.144531 -4.664062 1.875 -4.3125 C 1.613281 -3.957031 1.484375 -3.449219 1.484375 -2.796875 C 1.484375 -2.148438 1.613281 -1.644531 1.875 -1.28125 C 2.144531 -0.925781 2.523438 -0.75 3.015625 -0.75 C 3.492188 -0.75 3.867188 -0.925781 4.140625 -1.28125 C 4.410156 -1.644531 4.546875 -2.148438 4.546875 -2.796875 Z M 5.4375 -0.671875 C 5.4375 0.253906 5.226562 0.941406 4.8125 1.390625 C 4.40625 1.847656 3.773438 2.078125 2.921875 2.078125 C 2.609375 2.078125 2.308594 2.050781 2.03125 2 C 1.75 1.957031 1.476562 1.886719 1.21875 1.796875 L 1.21875 0.921875 C 1.476562 1.066406 1.734375 1.171875 1.984375 1.234375 C 2.242188 1.304688 2.507812 1.34375 2.78125 1.34375 C 3.363281 1.34375 3.800781 1.183594 4.09375 0.875 C 4.394531 0.570312 4.546875 0.105469 4.546875 -0.515625 L 4.546875 -0.96875 C 4.359375 -0.644531 4.117188 -0.398438 3.828125 -0.234375 C 3.535156 -0.078125 3.183594 0 2.78125 0 C 2.113281 0 1.570312 -0.253906 1.15625 -0.765625 C 0.75 -1.273438 0.546875 -1.953125 0.546875 -2.796875 C 0.546875 -3.636719 0.75 -4.316406 1.15625 -4.828125 C 1.570312 -5.335938 2.113281 -5.59375 2.78125 -5.59375 C 3.183594 -5.59375 3.535156 -5.511719 3.828125 -5.359375 C 4.117188 -5.203125 4.359375 -4.960938 4.546875 -4.640625 L 4.546875 -5.46875 L 5.4375 -5.46875 L 5.4375 -0.671875 Z M 5.4375 -0.671875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-9">
+<path style="stroke:none;" d="M 5.203125 -4.421875 C 5.417969 -4.824219 5.6875 -5.125 6 -5.3125 C 6.308594 -5.496094 6.679688 -5.59375 7.109375 -5.59375 C 7.679688 -5.59375 8.117188 -5.394531 8.421875 -5 C 8.730469 -4.601562 8.890625 -4.035156 8.890625 -3.296875 L 8.890625 0 L 7.984375 0 L 7.984375 -3.265625 C 7.984375 -3.792969 7.886719 -4.1875 7.703125 -4.4375 C 7.523438 -4.683594 7.242188 -4.8125 6.859375 -4.8125 C 6.390625 -4.8125 6.019531 -4.652344 5.75 -4.34375 C 5.488281 -4.039062 5.359375 -3.621094 5.359375 -3.09375 L 5.359375 0 L 4.453125 0 L 4.453125 -3.265625 C 4.453125 -3.792969 4.355469 -4.1875 4.171875 -4.4375 C 3.984375 -4.683594 3.695312 -4.8125 3.3125 -4.8125 C 2.851562 -4.8125 2.488281 -4.652344 2.21875 -4.34375 C 1.945312 -4.039062 1.8125 -3.621094 1.8125 -3.09375 L 1.8125 0 L 0.90625 0 L 0.90625 -5.46875 L 1.8125 -5.46875 L 1.8125 -4.625 C 2.019531 -4.957031 2.265625 -5.203125 2.546875 -5.359375 C 2.835938 -5.511719 3.175781 -5.59375 3.5625 -5.59375 C 3.964844 -5.59375 4.304688 -5.492188 4.578125 -5.296875 C 4.855469 -5.097656 5.066406 -4.804688 5.203125 -4.421875 Z M 5.203125 -4.421875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-10">
+<path style="stroke:none;" d="M 1.828125 -7.015625 L 1.828125 -5.46875 L 3.6875 -5.46875 L 3.6875 -4.765625 L 1.828125 -4.765625 L 1.828125 -1.796875 C 1.828125 -1.359375 1.890625 -1.070312 2.015625 -0.9375 C 2.136719 -0.8125 2.390625 -0.75 2.765625 -0.75 L 3.6875 -0.75 L 3.6875 0 L 2.765625 0 C 2.066406 0 1.582031 -0.128906 1.3125 -0.390625 C 1.050781 -0.648438 0.921875 -1.117188 0.921875 -1.796875 L 0.921875 -4.765625 L 0.265625 -4.765625 L 0.265625 -5.46875 L 0.921875 -5.46875 L 0.921875 -7.015625 L 1.828125 -7.015625 Z M 1.828125 -7.015625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-11">
+<path style="stroke:none;" d="M 4.109375 -4.625 C 4.003906 -4.683594 3.894531 -4.726562 3.78125 -4.75 C 3.664062 -4.777344 3.535156 -4.796875 3.390625 -4.796875 C 2.878906 -4.796875 2.488281 -4.628906 2.21875 -4.296875 C 1.945312 -3.972656 1.8125 -3.496094 1.8125 -2.875 L 1.8125 0 L 0.90625 0 L 0.90625 -5.46875 L 1.8125 -5.46875 L 1.8125 -4.625 C 1.996094 -4.957031 2.242188 -5.203125 2.546875 -5.359375 C 2.847656 -5.511719 3.21875 -5.59375 3.65625 -5.59375 C 3.714844 -5.59375 3.785156 -5.585938 3.859375 -5.578125 C 3.929688 -5.578125 4.015625 -5.566406 4.109375 -5.546875 L 4.109375 -4.625 Z M 4.109375 -4.625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-12">
+<path style="stroke:none;" d="M 5.09375 1.65625 L 5.09375 2.359375 L -0.09375 2.359375 L -0.09375 1.65625 L 5.09375 1.65625 Z M 5.09375 1.65625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-13">
+<path style="stroke:none;" d="M 1.8125 -0.828125 L 1.8125 2.078125 L 0.90625 2.078125 L 0.90625 -5.46875 L 1.8125 -5.46875 L 1.8125 -4.640625 C 1.996094 -4.960938 2.234375 -5.203125 2.515625 -5.359375 C 2.804688 -5.511719 3.15625 -5.59375 3.5625 -5.59375 C 4.226562 -5.59375 4.765625 -5.324219 5.171875 -4.796875 C 5.585938 -4.273438 5.796875 -3.585938 5.796875 -2.734375 C 5.796875 -1.867188 5.585938 -1.167969 5.171875 -0.640625 C 4.765625 -0.117188 4.226562 0.140625 3.5625 0.140625 C 3.15625 0.140625 2.804688 0.0585938 2.515625 -0.09375 C 2.234375 -0.246094 1.996094 -0.492188 1.8125 -0.828125 Z M 4.875 -2.734375 C 4.875 -3.386719 4.730469 -3.90625 4.453125 -4.28125 C 4.179688 -4.652344 3.808594 -4.84375 3.34375 -4.84375 C 2.863281 -4.84375 2.488281 -4.652344 2.21875 -4.28125 C 1.945312 -3.90625 1.8125 -3.386719 1.8125 -2.734375 C 1.8125 -2.066406 1.945312 -1.542969 2.21875 -1.171875 C 2.488281 -0.796875 2.863281 -0.609375 3.34375 -0.609375 C 3.808594 -0.609375 4.179688 -0.796875 4.453125 -1.171875 C 4.730469 -1.542969 4.875 -2.066406 4.875 -2.734375 Z M 4.875 -2.734375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-14">
+<path style="stroke:none;" d="M 4.421875 -5.3125 L 4.421875 -4.453125 C 4.171875 -4.585938 3.910156 -4.6875 3.640625 -4.75 C 3.367188 -4.808594 3.082031 -4.84375 2.78125 -4.84375 C 2.34375 -4.84375 2.007812 -4.773438 1.78125 -4.640625 C 1.5625 -4.503906 1.453125 -4.300781 1.453125 -4.03125 C 1.453125 -3.820312 1.53125 -3.652344 1.6875 -3.53125 C 1.839844 -3.414062 2.164062 -3.304688 2.65625 -3.203125 L 2.953125 -3.125 C 3.597656 -2.988281 4.050781 -2.792969 4.3125 -2.546875 C 4.582031 -2.296875 4.71875 -1.949219 4.71875 -1.515625 C 4.71875 -1.003906 4.511719 -0.597656 4.109375 -0.296875 C 3.710938 -0.00390625 3.164062 0.140625 2.46875 0.140625 C 2.164062 0.140625 1.851562 0.105469 1.53125 0.046875 C 1.21875 -0.00390625 0.886719 -0.0859375 0.546875 -0.203125 L 0.546875 -1.125 C 0.878906 -0.957031 1.203125 -0.824219 1.515625 -0.734375 C 1.835938 -0.648438 2.160156 -0.609375 2.484375 -0.609375 C 2.898438 -0.609375 3.222656 -0.679688 3.453125 -0.828125 C 3.679688 -0.972656 3.796875 -1.175781 3.796875 -1.4375 C 3.796875 -1.683594 3.710938 -1.875 3.546875 -2 C 3.390625 -2.132812 3.027344 -2.257812 2.46875 -2.375 L 2.15625 -2.453125 C 1.601562 -2.566406 1.199219 -2.742188 0.953125 -2.984375 C 0.703125 -3.230469 0.578125 -3.566406 0.578125 -3.984375 C 0.578125 -4.503906 0.757812 -4.898438 1.125 -5.171875 C 1.488281 -5.449219 2.007812 -5.59375 2.6875 -5.59375 C 3.007812 -5.59375 3.316406 -5.566406 3.609375 -5.515625 C 3.910156 -5.472656 4.179688 -5.402344 4.421875 -5.3125 Z M 4.421875 -5.3125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-15">
+<path style="stroke:none;" d="M 4.875 -2.734375 C 4.875 -3.386719 4.730469 -3.90625 4.453125 -4.28125 C 4.179688 -4.652344 3.808594 -4.84375 3.34375 -4.84375 C 2.863281 -4.84375 2.488281 -4.652344 2.21875 -4.28125 C 1.945312 -3.90625 1.8125 -3.386719 1.8125 -2.734375 C 1.8125 -2.066406 1.945312 -1.542969 2.21875 -1.171875 C 2.488281 -0.796875 2.863281 -0.609375 3.34375 -0.609375 C 3.808594 -0.609375 4.179688 -0.796875 4.453125 -1.171875 C 4.730469 -1.542969 4.875 -2.066406 4.875 -2.734375 Z M 1.8125 -4.640625 C 1.996094 -4.960938 2.234375 -5.203125 2.515625 -5.359375 C 2.804688 -5.511719 3.15625 -5.59375 3.5625 -5.59375 C 4.226562 -5.59375 4.765625 -5.324219 5.171875 -4.796875 C 5.585938 -4.273438 5.796875 -3.585938 5.796875 -2.734375 C 5.796875 -1.867188 5.585938 -1.167969 5.171875 -0.640625 C 4.765625 -0.117188 4.226562 0.140625 3.5625 0.140625 C 3.15625 0.140625 2.804688 0.0585938 2.515625 -0.09375 C 2.234375 -0.246094 1.996094 -0.492188 1.8125 -0.828125 L 1.8125 0 L 0.90625 0 L 0.90625 -7.59375 L 1.8125 -7.59375 L 1.8125 -4.640625 Z M 1.8125 -4.640625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-16">
+<path style="stroke:none;" d="M 4.546875 -4.640625 L 4.546875 -7.59375 L 5.4375 -7.59375 L 5.4375 0 L 4.546875 0 L 4.546875 -0.828125 C 4.359375 -0.492188 4.117188 -0.246094 3.828125 -0.09375 C 3.535156 0.0585938 3.183594 0.140625 2.78125 0.140625 C 2.125 0.140625 1.585938 -0.117188 1.171875 -0.640625 C 0.753906 -1.167969 0.546875 -1.867188 0.546875 -2.734375 C 0.546875 -3.585938 0.753906 -4.273438 1.171875 -4.796875 C 1.585938 -5.324219 2.125 -5.59375 2.78125 -5.59375 C 3.183594 -5.59375 3.535156 -5.511719 3.828125 -5.359375 C 4.117188 -5.203125 4.359375 -4.960938 4.546875 -4.640625 Z M 1.484375 -2.734375 C 1.484375 -2.066406 1.617188 -1.542969 1.890625 -1.171875 C 2.160156 -0.796875 2.535156 -0.609375 3.015625 -0.609375 C 3.480469 -0.609375 3.851562 -0.796875 4.125 -1.171875 C 4.402344 -1.542969 4.546875 -2.066406 4.546875 -2.734375 C 4.546875 -3.386719 4.402344 -3.90625 4.125 -4.28125 C 3.851562 -4.652344 3.480469 -4.84375 3.015625 -4.84375 C 2.535156 -4.84375 2.160156 -4.652344 1.890625 -4.28125 C 1.617188 -3.90625 1.484375 -3.386719 1.484375 -2.734375 Z M 1.484375 -2.734375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-17">
+<path style="stroke:none;" d="M 5.625 -2.953125 L 5.625 -2.515625 L 1.484375 -2.515625 C 1.523438 -1.898438 1.710938 -1.429688 2.046875 -1.109375 C 2.378906 -0.785156 2.84375 -0.625 3.4375 -0.625 C 3.777344 -0.625 4.113281 -0.664062 4.4375 -0.75 C 4.769531 -0.832031 5.09375 -0.957031 5.40625 -1.125 L 5.40625 -0.28125 C 5.082031 -0.144531 4.746094 -0.0390625 4.40625 0.03125 C 4.070312 0.101562 3.730469 0.140625 3.390625 0.140625 C 2.515625 0.140625 1.820312 -0.109375 1.3125 -0.609375 C 0.800781 -1.117188 0.546875 -1.8125 0.546875 -2.6875 C 0.546875 -3.582031 0.785156 -4.289062 1.265625 -4.8125 C 1.753906 -5.332031 2.410156 -5.59375 3.234375 -5.59375 C 3.972656 -5.59375 4.554688 -5.355469 4.984375 -4.890625 C 5.410156 -4.421875 5.625 -3.773438 5.625 -2.953125 Z M 4.71875 -3.21875 C 4.71875 -3.707031 4.582031 -4.097656 4.3125 -4.390625 C 4.039062 -4.691406 3.683594 -4.84375 3.25 -4.84375 C 2.738281 -4.84375 2.332031 -4.695312 2.03125 -4.40625 C 1.738281 -4.125 1.566406 -3.726562 1.515625 -3.21875 L 4.71875 -3.21875 Z M 4.71875 -3.21875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-18">
+<path style="stroke:none;" d="M 0.90625 -7.59375 L 1.8125 -7.59375 L 1.8125 -3.109375 L 4.5 -5.46875 L 5.640625 -5.46875 L 2.734375 -2.90625 L 5.765625 0 L 4.59375 0 L 1.8125 -2.671875 L 1.8125 0 L 0.90625 0 L 0.90625 -7.59375 Z M 0.90625 -7.59375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-19">
+<path style="stroke:none;" d="M 0.296875 -5.46875 L 1.25 -5.46875 L 2.953125 -0.875 L 4.671875 -5.46875 L 5.625 -5.46875 L 3.5625 0 L 2.34375 0 L 0.296875 -5.46875 Z M 0.296875 -5.46875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-20">
+<path style="stroke:none;" d="M 0.9375 -7.59375 L 1.84375 -7.59375 L 1.84375 0 L 0.9375 0 L 0.9375 -7.59375 Z M 0.9375 -7.59375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-21">
+<path style="stroke:none;" d="M 3.09375 -7.59375 C 2.664062 -6.84375 2.339844 -6.097656 2.125 -5.359375 C 1.914062 -4.628906 1.8125 -3.886719 1.8125 -3.140625 C 1.8125 -2.390625 1.914062 -1.644531 2.125 -0.90625 C 2.339844 -0.164062 2.664062 0.570312 3.09375 1.3125 L 2.3125 1.3125 C 1.832031 0.550781 1.464844 -0.195312 1.21875 -0.9375 C 0.976562 -1.675781 0.859375 -2.410156 0.859375 -3.140625 C 0.859375 -3.867188 0.976562 -4.597656 1.21875 -5.328125 C 1.457031 -6.066406 1.820312 -6.820312 2.3125 -7.59375 L 3.09375 -7.59375 Z M 3.09375 -7.59375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-22">
+<path style="stroke:none;" d="M 0.796875 -7.59375 L 1.578125 -7.59375 C 2.066406 -6.820312 2.429688 -6.066406 2.671875 -5.328125 C 2.917969 -4.597656 3.046875 -3.867188 3.046875 -3.140625 C 3.046875 -2.410156 2.917969 -1.675781 2.671875 -0.9375 C 2.429688 -0.195312 2.066406 0.550781 1.578125 1.3125 L 0.796875 1.3125 C 1.230469 0.570312 1.554688 -0.164062 1.765625 -0.90625 C 1.980469 -1.644531 2.09375 -2.390625 2.09375 -3.140625 C 2.09375 -3.886719 1.980469 -4.628906 1.765625 -5.359375 C 1.554688 -6.097656 1.230469 -6.84375 0.796875 -7.59375 Z M 0.796875 -7.59375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-23">
+<path style="stroke:none;" d="M 0.84375 -2.15625 L 0.84375 -5.46875 L 1.75 -5.46875 L 1.75 -2.1875 C 1.75 -1.675781 1.847656 -1.289062 2.046875 -1.03125 C 2.253906 -0.769531 2.554688 -0.640625 2.953125 -0.640625 C 3.441406 -0.640625 3.828125 -0.789062 4.109375 -1.09375 C 4.386719 -1.402344 4.53125 -1.832031 4.53125 -2.375 L 4.53125 -5.46875 L 5.4375 -5.46875 L 5.4375 0 L 4.53125 0 L 4.53125 -0.84375 C 4.3125 -0.507812 4.054688 -0.257812 3.765625 -0.09375 C 3.484375 0.0585938 3.148438 0.140625 2.765625 0.140625 C 2.140625 0.140625 1.660156 -0.0507812 1.328125 -0.4375 C 1.003906 -0.832031 0.84375 -1.40625 0.84375 -2.15625 Z M 3.109375 -5.59375 L 3.109375 -5.59375 Z M 3.109375 -5.59375 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-24">
+<path style="stroke:none;" d="M 3.421875 -2.75 C 2.703125 -2.75 2.199219 -2.664062 1.921875 -2.5 C 1.640625 -2.332031 1.5 -2.050781 1.5 -1.65625 C 1.5 -1.332031 1.601562 -1.074219 1.8125 -0.890625 C 2.019531 -0.703125 2.304688 -0.609375 2.671875 -0.609375 C 3.167969 -0.609375 3.570312 -0.785156 3.875 -1.140625 C 4.175781 -1.492188 4.328125 -1.960938 4.328125 -2.546875 L 4.328125 -2.75 L 3.421875 -2.75 Z M 5.21875 -3.125 L 5.21875 0 L 4.328125 0 L 4.328125 -0.828125 C 4.117188 -0.492188 3.855469 -0.246094 3.546875 -0.09375 C 3.242188 0.0585938 2.871094 0.140625 2.4375 0.140625 C 1.875 0.140625 1.425781 -0.015625 1.09375 -0.328125 C 0.757812 -0.636719 0.59375 -1.0625 0.59375 -1.59375 C 0.59375 -2.207031 0.800781 -2.671875 1.21875 -2.984375 C 1.632812 -3.292969 2.25 -3.453125 3.0625 -3.453125 L 4.328125 -3.453125 L 4.328125 -3.546875 C 4.328125 -3.949219 4.183594 -4.269531 3.90625 -4.5 C 3.632812 -4.726562 3.253906 -4.84375 2.765625 -4.84375 C 2.453125 -4.84375 2.144531 -4.800781 1.84375 -4.71875 C 1.550781 -4.644531 1.269531 -4.535156 1 -4.390625 L 1 -5.21875 C 1.332031 -5.339844 1.648438 -5.4375 1.953125 -5.5 C 2.261719 -5.558594 2.566406 -5.59375 2.859375 -5.59375 C 3.648438 -5.59375 4.238281 -5.386719 4.625 -4.984375 C 5.019531 -4.578125 5.21875 -3.957031 5.21875 -3.125 Z M 5.21875 -3.125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-25">
+<path style="stroke:none;" d="M 3.21875 0.515625 C 2.96875 1.160156 2.714844 1.582031 2.46875 1.78125 C 2.226562 1.976562 1.910156 2.078125 1.515625 2.078125 L 0.796875 2.078125 L 0.796875 1.328125 L 1.3125 1.328125 C 1.558594 1.328125 1.753906 1.269531 1.890625 1.15625 C 2.023438 1.039062 2.175781 0.761719 2.34375 0.328125 L 2.515625 -0.09375 L 0.296875 -5.46875 L 1.25 -5.46875 L 2.953125 -1.1875 L 4.671875 -5.46875 L 5.625 -5.46875 L 3.21875 0.515625 Z M 3.21875 0.515625 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-26">
+<path style="stroke:none;" d="M 1.484375 -2.734375 C 1.484375 -2.066406 1.617188 -1.542969 1.890625 -1.171875 C 2.160156 -0.796875 2.535156 -0.609375 3.015625 -0.609375 C 3.480469 -0.609375 3.851562 -0.796875 4.125 -1.171875 C 4.402344 -1.542969 4.546875 -2.066406 4.546875 -2.734375 C 4.546875 -3.386719 4.402344 -3.90625 4.125 -4.28125 C 3.851562 -4.652344 3.480469 -4.84375 3.015625 -4.84375 C 2.535156 -4.84375 2.160156 -4.652344 1.890625 -4.28125 C 1.617188 -3.90625 1.484375 -3.386719 1.484375 -2.734375 Z M 4.546875 -0.828125 C 4.359375 -0.492188 4.117188 -0.246094 3.828125 -0.09375 C 3.535156 0.0585938 3.183594 0.140625 2.78125 0.140625 C 2.125 0.140625 1.585938 -0.117188 1.171875 -0.640625 C 0.753906 -1.167969 0.546875 -1.867188 0.546875 -2.734375 C 0.546875 -3.585938 0.753906 -4.273438 1.171875 -4.796875 C 1.585938 -5.324219 2.125 -5.59375 2.78125 -5.59375 C 3.183594 -5.59375 3.535156 -5.511719 3.828125 -5.359375 C 4.117188 -5.203125 4.359375 -4.960938 4.546875 -4.640625 L 4.546875 -5.46875 L 5.4375 -5.46875 L 5.4375 2.078125 L 4.546875 2.078125 L 4.546875 -0.828125 Z M 4.546875 -0.828125 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-27">
+<path style="stroke:none;" d="M 0.421875 -5.46875 L 1.3125 -5.46875 L 2.4375 -1.203125 L 3.5625 -5.46875 L 4.625 -5.46875 L 5.75 -1.203125 L 6.859375 -5.46875 L 7.765625 -5.46875 L 6.328125 0 L 5.265625 0 L 4.09375 -4.484375 L 2.90625 0 L 1.84375 0 L 0.421875 -5.46875 Z M 0.421875 -5.46875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-28">
+<path style="stroke:none;" d="M 5.484375 -5.46875 L 3.515625 -2.8125 L 5.59375 0 L 4.53125 0 L 2.9375 -2.15625 L 1.34375 0 L 0.28125 0 L 2.40625 -2.859375 L 0.46875 -5.46875 L 1.53125 -5.46875 L 2.984375 -3.515625 L 4.421875 -5.46875 L 5.484375 -5.46875 Z M 5.484375 -5.46875 "/>
+</symbol>
+<symbol overflow="visible" id="glyph1-29">
+<path style="stroke:none;" d="M 5.484375 -3.296875 L 5.484375 0 L 4.59375 0 L 4.59375 -3.265625 C 4.59375 -3.785156 4.488281 -4.171875 4.28125 -4.421875 C 4.082031 -4.679688 3.777344 -4.8125 3.375 -4.8125 C 2.894531 -4.8125 2.511719 -4.652344 2.234375 -4.34375 C 1.953125 -4.039062 1.8125 -3.621094 1.8125 -3.09375 L 1.8125 0 L 0.90625 0 L 0.90625 -7.59375 L 1.8125 -7.59375 L 1.8125 -4.625 C 2.027344 -4.945312 2.285156 -5.1875 2.578125 -5.34375 C 2.867188 -5.507812 3.203125 -5.59375 3.578125 -5.59375 C 4.199219 -5.59375 4.675781 -5.398438 5 -5.015625 C 5.320312 -4.628906 5.484375 -4.054688 5.484375 -3.296875 Z M 5.484375 -3.296875 "/>
+</symbol>
+</g>
+</defs>
+<g id="surface0">
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-1" x="618.226562" y="451.976562"/>
+  <use xlink:href="#glyph0-2" x="625.848633" y="451.976562"/>
+  <use xlink:href="#glyph0-3" x="632.967773" y="451.976562"/>
+  <use xlink:href="#glyph0-4" x="636.395508" y="451.976562"/>
+  <use xlink:href="#glyph0-5" x="639.823242" y="451.976562"/>
+  <use xlink:href="#glyph0-6" x="646.981445" y="451.976562"/>
+  <use xlink:href="#glyph0-7" x="654.320312" y="451.976562"/>
+  <use xlink:href="#glyph0-8" x="661.19043" y="451.976562"/>
+  <use xlink:href="#glyph0-9" x="668.30957" y="451.976562"/>
+  <use xlink:href="#glyph0-3" x="672.660156" y="451.976562"/>
+  <use xlink:href="#glyph0-10" x="676.087891" y="451.976562"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 88.829427 19.749754 " transform="matrix(1,0,0,1,594.416667,432.226808)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.00130208 -0.00024563 L 108.622396 -0.00024563 L 108.622396 193.999754 L 0.00130208 193.999754 Z M 0.00130208 -0.00024563 " transform="matrix(1,0,0,1,594.416667,432.226808)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.00130208 -0.00024563 L 108.61849 -0.00024563 " transform="matrix(1,0,0,1,594.416667,463.226808)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="599.417969" y="475.820312"/>
+  <use xlink:href="#glyph1-2" x="607.796875" y="475.820312"/>
+  <use xlink:href="#glyph1-3" x="610.975586" y="475.820312"/>
+  <use xlink:href="#glyph1-4" x="616.473633" y="475.820312"/>
+  <use xlink:href="#glyph1-5" x="622.591797" y="475.820312"/>
+  <use xlink:href="#glyph1-6" x="628.929688" y="475.820312"/>
+  <use xlink:href="#glyph1-7" x="632.450195" y="475.820312"/>
+  <use xlink:href="#glyph1-8" x="635.228516" y="475.820312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="599.417969" y="488.820312"/>
+  <use xlink:href="#glyph1-2" x="607.796875" y="488.820312"/>
+  <use xlink:href="#glyph1-9" x="610.975586" y="488.820312"/>
+  <use xlink:href="#glyph1-4" x="620.716797" y="488.820312"/>
+  <use xlink:href="#glyph1-5" x="626.834961" y="488.820312"/>
+  <use xlink:href="#glyph1-7" x="633.172852" y="488.820312"/>
+  <use xlink:href="#glyph1-10" x="635.951172" y="488.820312"/>
+  <use xlink:href="#glyph1-4" x="639.87207" y="488.820312"/>
+  <use xlink:href="#glyph1-11" x="645.990234" y="488.820312"/>
+  <use xlink:href="#glyph1-12" x="650.101562" y="488.820312"/>
+  <use xlink:href="#glyph1-4" x="655.101562" y="488.820312"/>
+  <use xlink:href="#glyph1-13" x="661.219727" y="488.820312"/>
+  <use xlink:href="#glyph1-10" x="667.567383" y="488.820312"/>
+  <use xlink:href="#glyph1-7" x="671.488281" y="488.820312"/>
+  <use xlink:href="#glyph1-4" x="674.266602" y="488.820312"/>
+  <use xlink:href="#glyph1-5" x="680.384766" y="488.820312"/>
+  <use xlink:href="#glyph1-14" x="686.722656" y="488.820312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="599.417969" y="501.820312"/>
+  <use xlink:href="#glyph1-2" x="607.796875" y="501.820312"/>
+  <use xlink:href="#glyph1-15" x="610.975586" y="501.820312"/>
+  <use xlink:href="#glyph1-11" x="617.323242" y="501.820312"/>
+  <use xlink:href="#glyph1-7" x="621.43457" y="501.820312"/>
+  <use xlink:href="#glyph1-16" x="624.212891" y="501.820312"/>
+  <use xlink:href="#glyph1-8" x="630.560547" y="501.820312"/>
+  <use xlink:href="#glyph1-17" x="636.908203" y="501.820312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="599.417969" y="514.820312"/>
+  <use xlink:href="#glyph1-2" x="607.796875" y="514.820312"/>
+  <use xlink:href="#glyph1-18" x="610.975586" y="514.820312"/>
+  <use xlink:href="#glyph1-19" x="616.766602" y="514.820312"/>
+  <use xlink:href="#glyph1-9" x="622.68457" y="514.820312"/>
+  <use xlink:href="#glyph1-12" x="632.425781" y="514.820312"/>
+  <use xlink:href="#glyph1-13" x="637.425781" y="514.820312"/>
+  <use xlink:href="#glyph1-7" x="643.773438" y="514.820312"/>
+  <use xlink:href="#glyph1-16" x="646.551758" y="514.820312"/>
+  <use xlink:href="#glyph1-6" x="652.899414" y="514.820312"/>
+  <use xlink:href="#glyph1-7" x="656.419922" y="514.820312"/>
+  <use xlink:href="#glyph1-20" x="659.198242" y="514.820312"/>
+  <use xlink:href="#glyph1-17" x="661.976562" y="514.820312"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.00130208 -0.00024563 L 108.61849 -0.00024563 " transform="matrix(1,0,0,1,594.416667,525.226808)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="599.417969" y="537.820312"/>
+  <use xlink:href="#glyph1-2" x="607.796875" y="537.820312"/>
+  <use xlink:href="#glyph1-12" x="610.975586" y="537.820312"/>
+  <use xlink:href="#glyph1-12" x="615.975586" y="537.820312"/>
+  <use xlink:href="#glyph1-7" x="620.975586" y="537.820312"/>
+  <use xlink:href="#glyph1-5" x="623.753906" y="537.820312"/>
+  <use xlink:href="#glyph1-7" x="630.091797" y="537.820312"/>
+  <use xlink:href="#glyph1-10" x="632.870117" y="537.820312"/>
+  <use xlink:href="#glyph1-12" x="636.791016" y="537.820312"/>
+  <use xlink:href="#glyph1-12" x="641.791016" y="537.820312"/>
+  <use xlink:href="#glyph1-21" x="646.791016" y="537.820312"/>
+  <use xlink:href="#glyph1-22" x="650.692383" y="537.820312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="599.417969" y="550.820312"/>
+  <use xlink:href="#glyph1-2" x="607.796875" y="550.820312"/>
+  <use xlink:href="#glyph1-15" x="610.975586" y="550.820312"/>
+  <use xlink:href="#glyph1-23" x="617.323242" y="550.820312"/>
+  <use xlink:href="#glyph1-7" x="623.661133" y="550.820312"/>
+  <use xlink:href="#glyph1-20" x="626.439453" y="550.820312"/>
+  <use xlink:href="#glyph1-16" x="629.217773" y="550.820312"/>
+  <use xlink:href="#glyph1-12" x="635.56543" y="550.820312"/>
+  <use xlink:href="#glyph1-3" x="640.56543" y="550.820312"/>
+  <use xlink:href="#glyph1-4" x="646.063477" y="550.820312"/>
+  <use xlink:href="#glyph1-5" x="652.181641" y="550.820312"/>
+  <use xlink:href="#glyph1-6" x="658.519531" y="550.820312"/>
+  <use xlink:href="#glyph1-7" x="662.040039" y="550.820312"/>
+  <use xlink:href="#glyph1-8" x="664.818359" y="550.820312"/>
+  <use xlink:href="#glyph1-21" x="671.166016" y="550.820312"/>
+  <use xlink:href="#glyph1-22" x="675.067383" y="550.820312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="599.417969" y="563.820312"/>
+  <use xlink:href="#glyph1-2" x="607.796875" y="563.820312"/>
+  <use xlink:href="#glyph1-12" x="610.975586" y="563.820312"/>
+  <use xlink:href="#glyph1-24" x="615.975586" y="563.820312"/>
+  <use xlink:href="#glyph1-16" x="622.103516" y="563.820312"/>
+  <use xlink:href="#glyph1-16" x="628.451172" y="563.820312"/>
+  <use xlink:href="#glyph1-12" x="634.798828" y="563.820312"/>
+  <use xlink:href="#glyph1-13" x="639.798828" y="563.820312"/>
+  <use xlink:href="#glyph1-7" x="646.146484" y="563.820312"/>
+  <use xlink:href="#glyph1-16" x="648.924805" y="563.820312"/>
+  <use xlink:href="#glyph1-6" x="655.272461" y="563.820312"/>
+  <use xlink:href="#glyph1-7" x="658.792969" y="563.820312"/>
+  <use xlink:href="#glyph1-20" x="661.571289" y="563.820312"/>
+  <use xlink:href="#glyph1-17" x="664.349609" y="563.820312"/>
+  <use xlink:href="#glyph1-21" x="670.501953" y="563.820312"/>
+  <use xlink:href="#glyph1-22" x="674.40332" y="563.820312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="599.417969" y="576.820312"/>
+  <use xlink:href="#glyph1-2" x="607.796875" y="576.820312"/>
+  <use xlink:href="#glyph1-12" x="610.975586" y="576.820312"/>
+  <use xlink:href="#glyph1-24" x="615.975586" y="576.820312"/>
+  <use xlink:href="#glyph1-16" x="622.103516" y="576.820312"/>
+  <use xlink:href="#glyph1-16" x="628.451172" y="576.820312"/>
+  <use xlink:href="#glyph1-12" x="634.798828" y="576.820312"/>
+  <use xlink:href="#glyph1-23" x="639.798828" y="576.820312"/>
+  <use xlink:href="#glyph1-23" x="646.136719" y="576.820312"/>
+  <use xlink:href="#glyph1-7" x="652.474609" y="576.820312"/>
+  <use xlink:href="#glyph1-16" x="655.25293" y="576.820312"/>
+  <use xlink:href="#glyph1-21" x="661.600586" y="576.820312"/>
+  <use xlink:href="#glyph1-22" x="665.501953" y="576.820312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="599.417969" y="589.820312"/>
+  <use xlink:href="#glyph1-2" x="607.796875" y="589.820312"/>
+  <use xlink:href="#glyph1-12" x="610.975586" y="589.820312"/>
+  <use xlink:href="#glyph1-24" x="615.975586" y="589.820312"/>
+  <use xlink:href="#glyph1-16" x="622.103516" y="589.820312"/>
+  <use xlink:href="#glyph1-16" x="628.451172" y="589.820312"/>
+  <use xlink:href="#glyph1-12" x="634.798828" y="589.820312"/>
+  <use xlink:href="#glyph1-5" x="639.798828" y="589.820312"/>
+  <use xlink:href="#glyph1-24" x="646.136719" y="589.820312"/>
+  <use xlink:href="#glyph1-9" x="652.264648" y="589.820312"/>
+  <use xlink:href="#glyph1-17" x="662.005859" y="589.820312"/>
+  <use xlink:href="#glyph1-21" x="668.158203" y="589.820312"/>
+  <use xlink:href="#glyph1-22" x="672.05957" y="589.820312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="599.417969" y="602.820312"/>
+  <use xlink:href="#glyph1-2" x="607.796875" y="602.820312"/>
+  <use xlink:href="#glyph1-12" x="610.975586" y="602.820312"/>
+  <use xlink:href="#glyph1-24" x="615.975586" y="602.820312"/>
+  <use xlink:href="#glyph1-16" x="622.103516" y="602.820312"/>
+  <use xlink:href="#glyph1-16" x="628.451172" y="602.820312"/>
+  <use xlink:href="#glyph1-12" x="634.798828" y="602.820312"/>
+  <use xlink:href="#glyph1-9" x="639.798828" y="602.820312"/>
+  <use xlink:href="#glyph1-4" x="649.540039" y="602.820312"/>
+  <use xlink:href="#glyph1-5" x="655.658203" y="602.820312"/>
+  <use xlink:href="#glyph1-7" x="661.996094" y="602.820312"/>
+  <use xlink:href="#glyph1-10" x="664.774414" y="602.820312"/>
+  <use xlink:href="#glyph1-4" x="668.695312" y="602.820312"/>
+  <use xlink:href="#glyph1-11" x="674.813477" y="602.820312"/>
+  <use xlink:href="#glyph1-21" x="678.924805" y="602.820312"/>
+  <use xlink:href="#glyph1-22" x="682.826172" y="602.820312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="599.417969" y="615.820312"/>
+  <use xlink:href="#glyph1-2" x="607.796875" y="615.820312"/>
+  <use xlink:href="#glyph1-12" x="610.975586" y="615.820312"/>
+  <use xlink:href="#glyph1-24" x="615.975586" y="615.820312"/>
+  <use xlink:href="#glyph1-16" x="622.103516" y="615.820312"/>
+  <use xlink:href="#glyph1-16" x="628.451172" y="615.820312"/>
+  <use xlink:href="#glyph1-12" x="634.798828" y="615.820312"/>
+  <use xlink:href="#glyph1-5" x="639.798828" y="615.820312"/>
+  <use xlink:href="#glyph1-17" x="646.136719" y="615.820312"/>
+  <use xlink:href="#glyph1-10" x="652.289062" y="615.820312"/>
+  <use xlink:href="#glyph1-21" x="656.209961" y="615.820312"/>
+  <use xlink:href="#glyph1-22" x="660.111328" y="615.820312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-11" x="401.082031" y="110.488281"/>
+  <use xlink:href="#glyph0-7" x="409.382812" y="110.488281"/>
+  <use xlink:href="#glyph0-12" x="416.25293" y="110.488281"/>
+  <use xlink:href="#glyph0-13" x="426.672852" y="110.488281"/>
+  <use xlink:href="#glyph0-3" x="433.420898" y="110.488281"/>
+  <use xlink:href="#glyph0-8" x="436.848633" y="110.488281"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 71.885417 17.733695 " transform="matrix(1,0,0,1,372.083333,92.754586)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.00130208 -0.000679658 L 99.998698 -0.000679658 L 99.998698 86.99932 L -0.00130208 86.99932 Z M -0.00130208 -0.000679658 " transform="matrix(1,0,0,1,372.083333,92.754586)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.00130208 -0.000679658 L 99.998698 -0.000679658 " transform="matrix(1,0,0,1,372.083333,121.754586)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.00130208 -0.000679658 L 99.998698 -0.000679658 " transform="matrix(1,0,0,1,372.083333,131.754586)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.082031" y="144.347656"/>
+  <use xlink:href="#glyph1-2" x="385.460938" y="144.347656"/>
+  <use xlink:href="#glyph1-12" x="388.639648" y="144.347656"/>
+  <use xlink:href="#glyph1-12" x="393.639648" y="144.347656"/>
+  <use xlink:href="#glyph1-7" x="398.639648" y="144.347656"/>
+  <use xlink:href="#glyph1-5" x="401.417969" y="144.347656"/>
+  <use xlink:href="#glyph1-7" x="407.755859" y="144.347656"/>
+  <use xlink:href="#glyph1-10" x="410.53418" y="144.347656"/>
+  <use xlink:href="#glyph1-12" x="414.455078" y="144.347656"/>
+  <use xlink:href="#glyph1-12" x="419.455078" y="144.347656"/>
+  <use xlink:href="#glyph1-21" x="424.455078" y="144.347656"/>
+  <use xlink:href="#glyph1-22" x="428.356445" y="144.347656"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.082031" y="157.347656"/>
+  <use xlink:href="#glyph1-2" x="385.460938" y="157.347656"/>
+  <use xlink:href="#glyph1-3" x="388.639648" y="157.347656"/>
+  <use xlink:href="#glyph1-11" x="394.137695" y="157.347656"/>
+  <use xlink:href="#glyph1-17" x="398.249023" y="157.347656"/>
+  <use xlink:href="#glyph1-24" x="404.401367" y="157.347656"/>
+  <use xlink:href="#glyph1-10" x="410.529297" y="157.347656"/>
+  <use xlink:href="#glyph1-17" x="414.450195" y="157.347656"/>
+  <use xlink:href="#glyph1-21" x="420.602539" y="157.347656"/>
+  <use xlink:href="#glyph1-22" x="424.503906" y="157.347656"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.082031" y="169.347656"/>
+  <use xlink:href="#glyph1-2" x="385.460938" y="169.347656"/>
+  <use xlink:href="#glyph1-9" x="388.639648" y="169.347656"/>
+  <use xlink:href="#glyph1-4" x="398.380859" y="169.347656"/>
+  <use xlink:href="#glyph1-16" x="404.499023" y="169.347656"/>
+  <use xlink:href="#glyph1-7" x="410.84668" y="169.347656"/>
+  <use xlink:href="#glyph1-6" x="413.625" y="169.347656"/>
+  <use xlink:href="#glyph1-25" x="417.145508" y="169.347656"/>
+  <use xlink:href="#glyph1-21" x="423.063477" y="169.347656"/>
+  <use xlink:href="#glyph1-22" x="426.964844" y="169.347656"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-14" x="260.40625" y="286.933594"/>
+  <use xlink:href="#glyph0-7" x="270.357422" y="286.933594"/>
+  <use xlink:href="#glyph0-8" x="277.227539" y="286.933594"/>
+  <use xlink:href="#glyph0-3" x="284.34668" y="286.933594"/>
+  <use xlink:href="#glyph0-15" x="287.774414" y="286.933594"/>
+  <use xlink:href="#glyph0-7" x="292.554688" y="286.933594"/>
+  <use xlink:href="#glyph0-16" x="299.424805" y="286.933594"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 80.411024 17.734563 " transform="matrix(1,0,0,1,223.944444,269.19903)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000868056 0.000188398 L 114.926649 0.000188398 L 114.926649 164.000188 L 0.000868056 164.000188 Z M 0.000868056 0.000188398 " transform="matrix(1,0,0,1,223.944444,269.19903)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000868056 0.000188398 L 114.926649 0.000188398 " transform="matrix(1,0,0,1,223.944444,298.19903)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="228.945312" y="310.792969"/>
+  <use xlink:href="#glyph1-2" x="237.324219" y="310.792969"/>
+  <use xlink:href="#glyph1-14" x="240.50293" y="310.792969"/>
+  <use xlink:href="#glyph1-4" x="245.712891" y="310.792969"/>
+  <use xlink:href="#glyph1-3" x="251.831055" y="310.792969"/>
+  <use xlink:href="#glyph1-18" x="257.329102" y="310.792969"/>
+  <use xlink:href="#glyph1-17" x="263.120117" y="310.792969"/>
+  <use xlink:href="#glyph1-10" x="269.272461" y="310.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="228.945312" y="321.792969"/>
+  <use xlink:href="#glyph1-2" x="237.324219" y="321.792969"/>
+  <use xlink:href="#glyph1-14" x="240.50293" y="321.792969"/>
+  <use xlink:href="#glyph1-4" x="245.712891" y="321.792969"/>
+  <use xlink:href="#glyph1-3" x="251.831055" y="321.792969"/>
+  <use xlink:href="#glyph1-18" x="257.329102" y="321.792969"/>
+  <use xlink:href="#glyph1-17" x="263.120117" y="321.792969"/>
+  <use xlink:href="#glyph1-10" x="269.272461" y="321.792969"/>
+  <use xlink:href="#glyph1-12" x="273.193359" y="321.792969"/>
+  <use xlink:href="#glyph1-14" x="278.193359" y="321.792969"/>
+  <use xlink:href="#glyph1-10" x="283.40332" y="321.792969"/>
+  <use xlink:href="#glyph1-24" x="287.324219" y="321.792969"/>
+  <use xlink:href="#glyph1-10" x="293.452148" y="321.792969"/>
+  <use xlink:href="#glyph1-23" x="297.373047" y="321.792969"/>
+  <use xlink:href="#glyph1-14" x="303.710938" y="321.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="228.945312" y="334.792969"/>
+  <use xlink:href="#glyph1-2" x="237.324219" y="334.792969"/>
+  <use xlink:href="#glyph1-11" x="240.50293" y="334.792969"/>
+  <use xlink:href="#glyph1-17" x="244.614258" y="334.792969"/>
+  <use xlink:href="#glyph1-3" x="250.766602" y="334.792969"/>
+  <use xlink:href="#glyph1-7" x="256.264648" y="334.792969"/>
+  <use xlink:href="#glyph1-17" x="259.042969" y="334.792969"/>
+  <use xlink:href="#glyph1-19" x="265.195312" y="334.792969"/>
+  <use xlink:href="#glyph1-17" x="271.113281" y="334.792969"/>
+  <use xlink:href="#glyph1-12" x="277.265625" y="334.792969"/>
+  <use xlink:href="#glyph1-16" x="282.265625" y="334.792969"/>
+  <use xlink:href="#glyph1-24" x="288.613281" y="334.792969"/>
+  <use xlink:href="#glyph1-10" x="294.741211" y="334.792969"/>
+  <use xlink:href="#glyph1-24" x="298.662109" y="334.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="228.945312" y="347.792969"/>
+  <use xlink:href="#glyph1-2" x="237.324219" y="347.792969"/>
+  <use xlink:href="#glyph1-26" x="240.50293" y="347.792969"/>
+  <use xlink:href="#glyph1-17" x="246.850586" y="347.792969"/>
+  <use xlink:href="#glyph1-9" x="253.00293" y="347.792969"/>
+  <use xlink:href="#glyph1-23" x="262.744141" y="347.792969"/>
+  <use xlink:href="#glyph1-12" x="269.082031" y="347.792969"/>
+  <use xlink:href="#glyph1-9" x="274.082031" y="347.792969"/>
+  <use xlink:href="#glyph1-4" x="283.823242" y="347.792969"/>
+  <use xlink:href="#glyph1-5" x="289.941406" y="347.792969"/>
+  <use xlink:href="#glyph1-7" x="296.279297" y="347.792969"/>
+  <use xlink:href="#glyph1-10" x="299.057617" y="347.792969"/>
+  <use xlink:href="#glyph1-4" x="302.978516" y="347.792969"/>
+  <use xlink:href="#glyph1-11" x="309.09668" y="347.792969"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000868056 0.000188398 L 114.926649 0.000188398 " transform="matrix(1,0,0,1,223.944444,358.19903)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="228.945312" y="370.792969"/>
+  <use xlink:href="#glyph1-2" x="237.324219" y="370.792969"/>
+  <use xlink:href="#glyph1-12" x="240.50293" y="370.792969"/>
+  <use xlink:href="#glyph1-12" x="245.50293" y="370.792969"/>
+  <use xlink:href="#glyph1-7" x="250.50293" y="370.792969"/>
+  <use xlink:href="#glyph1-5" x="253.28125" y="370.792969"/>
+  <use xlink:href="#glyph1-7" x="259.619141" y="370.792969"/>
+  <use xlink:href="#glyph1-10" x="262.397461" y="370.792969"/>
+  <use xlink:href="#glyph1-12" x="266.318359" y="370.792969"/>
+  <use xlink:href="#glyph1-12" x="271.318359" y="370.792969"/>
+  <use xlink:href="#glyph1-21" x="276.318359" y="370.792969"/>
+  <use xlink:href="#glyph1-22" x="280.219727" y="370.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="228.945312" y="383.792969"/>
+  <use xlink:href="#glyph1-2" x="237.324219" y="383.792969"/>
+  <use xlink:href="#glyph1-9" x="240.50293" y="383.792969"/>
+  <use xlink:href="#glyph1-4" x="250.244141" y="383.792969"/>
+  <use xlink:href="#glyph1-5" x="256.362305" y="383.792969"/>
+  <use xlink:href="#glyph1-7" x="262.700195" y="383.792969"/>
+  <use xlink:href="#glyph1-10" x="265.478516" y="383.792969"/>
+  <use xlink:href="#glyph1-4" x="269.399414" y="383.792969"/>
+  <use xlink:href="#glyph1-11" x="275.517578" y="383.792969"/>
+  <use xlink:href="#glyph1-12" x="279.628906" y="383.792969"/>
+  <use xlink:href="#glyph1-4" x="284.628906" y="383.792969"/>
+  <use xlink:href="#glyph1-13" x="290.74707" y="383.792969"/>
+  <use xlink:href="#glyph1-17" x="297.094727" y="383.792969"/>
+  <use xlink:href="#glyph1-5" x="303.24707" y="383.792969"/>
+  <use xlink:href="#glyph1-21" x="309.584961" y="383.792969"/>
+  <use xlink:href="#glyph1-22" x="313.486328" y="383.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="228.945312" y="396.792969"/>
+  <use xlink:href="#glyph1-2" x="237.324219" y="396.792969"/>
+  <use xlink:href="#glyph1-9" x="240.50293" y="396.792969"/>
+  <use xlink:href="#glyph1-4" x="250.244141" y="396.792969"/>
+  <use xlink:href="#glyph1-5" x="256.362305" y="396.792969"/>
+  <use xlink:href="#glyph1-7" x="262.700195" y="396.792969"/>
+  <use xlink:href="#glyph1-10" x="265.478516" y="396.792969"/>
+  <use xlink:href="#glyph1-4" x="269.399414" y="396.792969"/>
+  <use xlink:href="#glyph1-11" x="275.517578" y="396.792969"/>
+  <use xlink:href="#glyph1-12" x="279.628906" y="396.792969"/>
+  <use xlink:href="#glyph1-3" x="284.628906" y="396.792969"/>
+  <use xlink:href="#glyph1-20" x="290.126953" y="396.792969"/>
+  <use xlink:href="#glyph1-4" x="292.905273" y="396.792969"/>
+  <use xlink:href="#glyph1-14" x="299.023438" y="396.792969"/>
+  <use xlink:href="#glyph1-17" x="304.233398" y="396.792969"/>
+  <use xlink:href="#glyph1-21" x="310.385742" y="396.792969"/>
+  <use xlink:href="#glyph1-22" x="314.287109" y="396.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="228.945312" y="409.792969"/>
+  <use xlink:href="#glyph1-2" x="237.324219" y="409.792969"/>
+  <use xlink:href="#glyph1-9" x="240.50293" y="409.792969"/>
+  <use xlink:href="#glyph1-4" x="250.244141" y="409.792969"/>
+  <use xlink:href="#glyph1-5" x="256.362305" y="409.792969"/>
+  <use xlink:href="#glyph1-7" x="262.700195" y="409.792969"/>
+  <use xlink:href="#glyph1-10" x="265.478516" y="409.792969"/>
+  <use xlink:href="#glyph1-4" x="269.399414" y="409.792969"/>
+  <use xlink:href="#glyph1-11" x="275.517578" y="409.792969"/>
+  <use xlink:href="#glyph1-12" x="279.628906" y="409.792969"/>
+  <use xlink:href="#glyph1-14" x="284.628906" y="409.792969"/>
+  <use xlink:href="#glyph1-17" x="289.838867" y="409.792969"/>
+  <use xlink:href="#glyph1-5" x="295.991211" y="409.792969"/>
+  <use xlink:href="#glyph1-16" x="302.329102" y="409.792969"/>
+  <use xlink:href="#glyph1-21" x="308.676758" y="409.792969"/>
+  <use xlink:href="#glyph1-22" x="312.578125" y="409.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="228.945312" y="422.792969"/>
+  <use xlink:href="#glyph1-2" x="237.324219" y="422.792969"/>
+  <use xlink:href="#glyph1-9" x="240.50293" y="422.792969"/>
+  <use xlink:href="#glyph1-4" x="250.244141" y="422.792969"/>
+  <use xlink:href="#glyph1-5" x="256.362305" y="422.792969"/>
+  <use xlink:href="#glyph1-7" x="262.700195" y="422.792969"/>
+  <use xlink:href="#glyph1-10" x="265.478516" y="422.792969"/>
+  <use xlink:href="#glyph1-4" x="269.399414" y="422.792969"/>
+  <use xlink:href="#glyph1-11" x="275.517578" y="422.792969"/>
+  <use xlink:href="#glyph1-12" x="279.628906" y="422.792969"/>
+  <use xlink:href="#glyph1-11" x="284.628906" y="422.792969"/>
+  <use xlink:href="#glyph1-17" x="288.740234" y="422.792969"/>
+  <use xlink:href="#glyph1-3" x="294.892578" y="422.792969"/>
+  <use xlink:href="#glyph1-7" x="300.390625" y="422.792969"/>
+  <use xlink:href="#glyph1-17" x="303.168945" y="422.792969"/>
+  <use xlink:href="#glyph1-19" x="309.321289" y="422.792969"/>
+  <use xlink:href="#glyph1-17" x="315.239258" y="422.792969"/>
+  <use xlink:href="#glyph1-21" x="321.391602" y="422.792969"/>
+  <use xlink:href="#glyph1-22" x="325.292969" y="422.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-17" x="34.195312" y="204.59375"/>
+  <use xlink:href="#glyph0-18" x="42.40332" y="204.59375"/>
+  <use xlink:href="#glyph0-8" x="49.185547" y="204.59375"/>
+  <use xlink:href="#glyph0-18" x="56.304688" y="204.59375"/>
+  <use xlink:href="#glyph0-16" x="63.086914" y="204.59375"/>
+  <use xlink:href="#glyph0-13" x="68.018555" y="204.59375"/>
+  <use xlink:href="#glyph0-15" x="74.766602" y="204.59375"/>
+  <use xlink:href="#glyph0-7" x="79.546875" y="204.59375"/>
+  <use xlink:href="#glyph0-16" x="86.416992" y="204.59375"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 84.319878 17.561386 " transform="matrix(1,0,0,1,7.027778,187.032364)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.000434028 -0.00111369 L 111.335503 -0.00111369 L 111.335503 160.905136 L -0.000434028 160.905136 Z M -0.000434028 -0.00111369 " transform="matrix(1,0,0,1,7.027778,187.032364)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.000434028 -0.00111369 L 111.335503 -0.00111369 " transform="matrix(1,0,0,1,7.027778,215.032364)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="12.027344" y="227.625"/>
+  <use xlink:href="#glyph1-2" x="20.40625" y="227.625"/>
+  <use xlink:href="#glyph1-26" x="23.584961" y="227.625"/>
+  <use xlink:href="#glyph1-17" x="29.932617" y="227.625"/>
+  <use xlink:href="#glyph1-9" x="36.084961" y="227.625"/>
+  <use xlink:href="#glyph1-23" x="45.826172" y="227.625"/>
+  <use xlink:href="#glyph1-12" x="52.164062" y="227.625"/>
+  <use xlink:href="#glyph1-18" x="57.164062" y="227.625"/>
+  <use xlink:href="#glyph1-19" x="62.955078" y="227.625"/>
+  <use xlink:href="#glyph1-9" x="68.873047" y="227.625"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="12.027344" y="240.625"/>
+  <use xlink:href="#glyph1-2" x="20.40625" y="240.625"/>
+  <use xlink:href="#glyph1-16" x="23.584961" y="240.625"/>
+  <use xlink:href="#glyph1-7" x="29.932617" y="240.625"/>
+  <use xlink:href="#glyph1-14" x="32.710938" y="240.625"/>
+  <use xlink:href="#glyph1-24" x="37.920898" y="240.625"/>
+  <use xlink:href="#glyph1-15" x="44.048828" y="240.625"/>
+  <use xlink:href="#glyph1-20" x="50.396484" y="240.625"/>
+  <use xlink:href="#glyph1-17" x="53.174805" y="240.625"/>
+  <use xlink:href="#glyph1-16" x="59.327148" y="240.625"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="12.027344" y="251.625"/>
+  <use xlink:href="#glyph1-2" x="20.40625" y="251.625"/>
+  <use xlink:href="#glyph1-17" x="23.584961" y="251.625"/>
+  <use xlink:href="#glyph1-5" x="29.737305" y="251.625"/>
+  <use xlink:href="#glyph1-24" x="36.075195" y="251.625"/>
+  <use xlink:href="#glyph1-15" x="42.203125" y="251.625"/>
+  <use xlink:href="#glyph1-20" x="48.550781" y="251.625"/>
+  <use xlink:href="#glyph1-17" x="51.329102" y="251.625"/>
+  <use xlink:href="#glyph1-16" x="57.481445" y="251.625"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="12.027344" y="262.625"/>
+  <use xlink:href="#glyph1-2" x="20.40625" y="262.625"/>
+  <use xlink:href="#glyph1-6" x="23.584961" y="262.625"/>
+  <use xlink:href="#glyph1-7" x="27.105469" y="262.625"/>
+  <use xlink:href="#glyph1-20" x="29.883789" y="262.625"/>
+  <use xlink:href="#glyph1-17" x="32.662109" y="262.625"/>
+  <use xlink:href="#glyph1-12" x="38.814453" y="262.625"/>
+  <use xlink:href="#glyph1-10" x="43.814453" y="262.625"/>
+  <use xlink:href="#glyph1-4" x="47.735352" y="262.625"/>
+  <use xlink:href="#glyph1-12" x="53.853516" y="262.625"/>
+  <use xlink:href="#glyph1-27" x="58.853516" y="262.625"/>
+  <use xlink:href="#glyph1-11" x="67.032227" y="262.625"/>
+  <use xlink:href="#glyph1-7" x="71.143555" y="262.625"/>
+  <use xlink:href="#glyph1-10" x="73.921875" y="262.625"/>
+  <use xlink:href="#glyph1-17" x="77.842773" y="262.625"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="12.027344" y="275.625"/>
+  <use xlink:href="#glyph1-2" x="20.40625" y="275.625"/>
+  <use xlink:href="#glyph1-17" x="23.584961" y="275.625"/>
+  <use xlink:href="#glyph1-28" x="29.737305" y="275.625"/>
+  <use xlink:href="#glyph1-3" x="35.655273" y="275.625"/>
+  <use xlink:href="#glyph1-20" x="41.15332" y="275.625"/>
+  <use xlink:href="#glyph1-23" x="43.931641" y="275.625"/>
+  <use xlink:href="#glyph1-16" x="50.269531" y="275.625"/>
+  <use xlink:href="#glyph1-17" x="56.617188" y="275.625"/>
+  <use xlink:href="#glyph1-12" x="62.769531" y="275.625"/>
+  <use xlink:href="#glyph1-4" x="67.769531" y="275.625"/>
+  <use xlink:href="#glyph1-13" x="73.887695" y="275.625"/>
+  <use xlink:href="#glyph1-10" x="80.235352" y="275.625"/>
+  <use xlink:href="#glyph1-7" x="84.15625" y="275.625"/>
+  <use xlink:href="#glyph1-4" x="86.93457" y="275.625"/>
+  <use xlink:href="#glyph1-5" x="93.052734" y="275.625"/>
+  <use xlink:href="#glyph1-14" x="99.390625" y="275.625"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="12.027344" y="288.625"/>
+  <use xlink:href="#glyph1-2" x="20.40625" y="288.625"/>
+  <use xlink:href="#glyph1-19" x="23.584961" y="288.625"/>
+  <use xlink:href="#glyph1-17" x="29.50293" y="288.625"/>
+  <use xlink:href="#glyph1-11" x="35.655273" y="288.625"/>
+  <use xlink:href="#glyph1-15" x="39.766602" y="288.625"/>
+  <use xlink:href="#glyph1-4" x="46.114258" y="288.625"/>
+  <use xlink:href="#glyph1-14" x="52.232422" y="288.625"/>
+  <use xlink:href="#glyph1-17" x="57.442383" y="288.625"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.000434028 -0.00111369 L 111.335503 -0.00111369 " transform="matrix(1,0,0,1,7.027778,297.032364)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="12.027344" y="309.625"/>
+  <use xlink:href="#glyph1-2" x="20.40625" y="309.625"/>
+  <use xlink:href="#glyph1-12" x="23.584961" y="309.625"/>
+  <use xlink:href="#glyph1-12" x="28.584961" y="309.625"/>
+  <use xlink:href="#glyph1-7" x="33.584961" y="309.625"/>
+  <use xlink:href="#glyph1-5" x="36.363281" y="309.625"/>
+  <use xlink:href="#glyph1-7" x="42.701172" y="309.625"/>
+  <use xlink:href="#glyph1-10" x="45.479492" y="309.625"/>
+  <use xlink:href="#glyph1-12" x="49.400391" y="309.625"/>
+  <use xlink:href="#glyph1-12" x="54.400391" y="309.625"/>
+  <use xlink:href="#glyph1-21" x="59.400391" y="309.625"/>
+  <use xlink:href="#glyph1-22" x="63.301758" y="309.625"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="12.027344" y="322.625"/>
+  <use xlink:href="#glyph1-2" x="20.40625" y="322.625"/>
+  <use xlink:href="#glyph1-24" x="23.584961" y="322.625"/>
+  <use xlink:href="#glyph1-11" x="29.712891" y="322.625"/>
+  <use xlink:href="#glyph1-8" x="33.824219" y="322.625"/>
+  <use xlink:href="#glyph1-23" x="40.171875" y="322.625"/>
+  <use xlink:href="#glyph1-9" x="46.509766" y="322.625"/>
+  <use xlink:href="#glyph1-17" x="56.250977" y="322.625"/>
+  <use xlink:href="#glyph1-5" x="62.40332" y="322.625"/>
+  <use xlink:href="#glyph1-10" x="68.741211" y="322.625"/>
+  <use xlink:href="#glyph1-14" x="72.662109" y="322.625"/>
+  <use xlink:href="#glyph1-21" x="77.87207" y="322.625"/>
+  <use xlink:href="#glyph1-22" x="81.773438" y="322.625"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="12.027344" y="335.625"/>
+  <use xlink:href="#glyph1-2" x="20.40625" y="335.625"/>
+  <use xlink:href="#glyph1-8" x="23.584961" y="335.625"/>
+  <use xlink:href="#glyph1-17" x="29.932617" y="335.625"/>
+  <use xlink:href="#glyph1-5" x="36.084961" y="335.625"/>
+  <use xlink:href="#glyph1-17" x="42.422852" y="335.625"/>
+  <use xlink:href="#glyph1-11" x="48.575195" y="335.625"/>
+  <use xlink:href="#glyph1-24" x="52.686523" y="335.625"/>
+  <use xlink:href="#glyph1-10" x="58.814453" y="335.625"/>
+  <use xlink:href="#glyph1-17" x="62.735352" y="335.625"/>
+  <use xlink:href="#glyph1-21" x="68.887695" y="335.625"/>
+  <use xlink:href="#glyph1-22" x="72.789062" y="335.625"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-19" x="27.832031" y="397.894531"/>
+  <use xlink:href="#glyph0-18" x="34.65332" y="397.894531"/>
+  <use xlink:href="#glyph0-20" x="41.435547" y="397.894531"/>
+  <use xlink:href="#glyph0-15" x="47.387695" y="397.894531"/>
+  <use xlink:href="#glyph0-6" x="52.167969" y="397.894531"/>
+  <use xlink:href="#glyph0-7" x="59.506836" y="397.894531"/>
+  <use xlink:href="#glyph0-8" x="66.376953" y="397.894531"/>
+  <use xlink:href="#glyph0-9" x="73.496094" y="397.894531"/>
+  <use xlink:href="#glyph0-3" x="77.84668" y="397.894531"/>
+  <use xlink:href="#glyph0-10" x="81.274414" y="397.894531"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 81.10026 19.751056 " transform="matrix(1,0,0,1,7.333333,378.143475)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.00130208 0.00105645 L 99.998698 0.00105645 L 99.998698 64.001056 L -0.00130208 64.001056 Z M -0.00130208 0.00105645 " transform="matrix(1,0,0,1,7.333333,378.143475)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.00130208 0.00105645 L 99.998698 0.00105645 " transform="matrix(1,0,0,1,7.333333,409.143475)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.00130208 0.00105645 L 99.998698 0.00105645 " transform="matrix(1,0,0,1,7.333333,419.143475)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="12.332031" y="431.738281"/>
+  <use xlink:href="#glyph1-2" x="20.710938" y="431.738281"/>
+  <use xlink:href="#glyph1-14" x="23.889648" y="431.738281"/>
+  <use xlink:href="#glyph1-29" x="29.099609" y="431.738281"/>
+  <use xlink:href="#glyph1-4" x="35.4375" y="431.738281"/>
+  <use xlink:href="#glyph1-27" x="41.555664" y="431.738281"/>
+  <use xlink:href="#glyph1-12" x="49.734375" y="431.738281"/>
+  <use xlink:href="#glyph1-11" x="54.734375" y="431.738281"/>
+  <use xlink:href="#glyph1-17" x="58.845703" y="431.738281"/>
+  <use xlink:href="#glyph1-14" x="64.998047" y="431.738281"/>
+  <use xlink:href="#glyph1-23" x="70.208008" y="431.738281"/>
+  <use xlink:href="#glyph1-20" x="76.545898" y="431.738281"/>
+  <use xlink:href="#glyph1-10" x="79.324219" y="431.738281"/>
+  <use xlink:href="#glyph1-21" x="83.245117" y="431.738281"/>
+  <use xlink:href="#glyph1-22" x="87.146484" y="431.738281"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-21" x="439.796875" y="682.914062"/>
+  <use xlink:href="#glyph0-13" x="447.125977" y="682.914062"/>
+  <use xlink:href="#glyph0-16" x="453.874023" y="682.914062"/>
+  <use xlink:href="#glyph0-20" x="458.805664" y="682.914062"/>
+  <use xlink:href="#glyph0-18" x="464.757812" y="682.914062"/>
+  <use xlink:href="#glyph0-16" x="471.540039" y="682.914062"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 92.250434 17.437254 " transform="matrix(1,0,0,1,384.222222,665.476808)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000434028 -0.00024563 L 147.148872 -0.00024563 L 147.148872 86.999754 L 0.000434028 86.999754 Z M 0.000434028 -0.00024563 " transform="matrix(1,0,0,1,384.222222,665.476808)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000434028 -0.00024563 L 147.148872 -0.00024563 " transform="matrix(1,0,0,1,384.222222,693.476808)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000434028 -0.00024563 L 147.148872 -0.00024563 " transform="matrix(1,0,0,1,384.222222,703.476808)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="389.222656" y="716.070312"/>
+  <use xlink:href="#glyph1-2" x="397.601562" y="716.070312"/>
+  <use xlink:href="#glyph1-12" x="400.780273" y="716.070312"/>
+  <use xlink:href="#glyph1-3" x="405.780273" y="716.070312"/>
+  <use xlink:href="#glyph1-29" x="411.27832" y="716.070312"/>
+  <use xlink:href="#glyph1-17" x="417.616211" y="716.070312"/>
+  <use xlink:href="#glyph1-3" x="423.768555" y="716.070312"/>
+  <use xlink:href="#glyph1-18" x="429.266602" y="716.070312"/>
+  <use xlink:href="#glyph1-12" x="435.057617" y="716.070312"/>
+  <use xlink:href="#glyph1-3" x="440.057617" y="716.070312"/>
+  <use xlink:href="#glyph1-4" x="445.555664" y="716.070312"/>
+  <use xlink:href="#glyph1-5" x="451.673828" y="716.070312"/>
+  <use xlink:href="#glyph1-6" x="458.011719" y="716.070312"/>
+  <use xlink:href="#glyph1-7" x="461.532227" y="716.070312"/>
+  <use xlink:href="#glyph1-8" x="464.310547" y="716.070312"/>
+  <use xlink:href="#glyph1-12" x="470.658203" y="716.070312"/>
+  <use xlink:href="#glyph1-14" x="475.658203" y="716.070312"/>
+  <use xlink:href="#glyph1-25" x="480.868164" y="716.070312"/>
+  <use xlink:href="#glyph1-5" x="486.786133" y="716.070312"/>
+  <use xlink:href="#glyph1-10" x="493.124023" y="716.070312"/>
+  <use xlink:href="#glyph1-24" x="497.044922" y="716.070312"/>
+  <use xlink:href="#glyph1-28" x="503.172852" y="716.070312"/>
+  <use xlink:href="#glyph1-21" x="509.09082" y="716.070312"/>
+  <use xlink:href="#glyph1-22" x="512.992188" y="716.070312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="389.222656" y="729.070312"/>
+  <use xlink:href="#glyph1-2" x="397.601562" y="729.070312"/>
+  <use xlink:href="#glyph1-13" x="400.780273" y="729.070312"/>
+  <use xlink:href="#glyph1-24" x="407.12793" y="729.070312"/>
+  <use xlink:href="#glyph1-11" x="413.255859" y="729.070312"/>
+  <use xlink:href="#glyph1-14" x="417.367188" y="729.070312"/>
+  <use xlink:href="#glyph1-17" x="422.577148" y="729.070312"/>
+  <use xlink:href="#glyph1-12" x="428.729492" y="729.070312"/>
+  <use xlink:href="#glyph1-3" x="433.729492" y="729.070312"/>
+  <use xlink:href="#glyph1-4" x="439.227539" y="729.070312"/>
+  <use xlink:href="#glyph1-5" x="445.345703" y="729.070312"/>
+  <use xlink:href="#glyph1-6" x="451.683594" y="729.070312"/>
+  <use xlink:href="#glyph1-7" x="455.204102" y="729.070312"/>
+  <use xlink:href="#glyph1-8" x="457.982422" y="729.070312"/>
+  <use xlink:href="#glyph1-21" x="464.330078" y="729.070312"/>
+  <use xlink:href="#glyph1-22" x="468.231445" y="729.070312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="389.222656" y="742.070312"/>
+  <use xlink:href="#glyph1-2" x="397.601562" y="742.070312"/>
+  <use xlink:href="#glyph1-9" x="400.780273" y="742.070312"/>
+  <use xlink:href="#glyph1-17" x="410.521484" y="742.070312"/>
+  <use xlink:href="#glyph1-11" x="416.673828" y="742.070312"/>
+  <use xlink:href="#glyph1-8" x="420.785156" y="742.070312"/>
+  <use xlink:href="#glyph1-17" x="427.132812" y="742.070312"/>
+  <use xlink:href="#glyph1-12" x="433.285156" y="742.070312"/>
+  <use xlink:href="#glyph1-3" x="438.285156" y="742.070312"/>
+  <use xlink:href="#glyph1-4" x="443.783203" y="742.070312"/>
+  <use xlink:href="#glyph1-5" x="449.901367" y="742.070312"/>
+  <use xlink:href="#glyph1-6" x="456.239258" y="742.070312"/>
+  <use xlink:href="#glyph1-7" x="459.759766" y="742.070312"/>
+  <use xlink:href="#glyph1-8" x="462.538086" y="742.070312"/>
+  <use xlink:href="#glyph1-14" x="468.885742" y="742.070312"/>
+  <use xlink:href="#glyph1-21" x="474.095703" y="742.070312"/>
+  <use xlink:href="#glyph1-22" x="477.99707" y="742.070312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-6" x="755.878906" y="145.226562"/>
+  <use xlink:href="#glyph0-16" x="763.217773" y="145.226562"/>
+  <use xlink:href="#glyph0-18" x="768.149414" y="145.226562"/>
+  <use xlink:href="#glyph0-13" x="774.931641" y="145.226562"/>
+  <use xlink:href="#glyph0-15" x="781.679688" y="145.226562"/>
+  <use xlink:href="#glyph0-18" x="786.459961" y="145.226562"/>
+  <use xlink:href="#glyph0-11" x="793.242188" y="145.226562"/>
+  <use xlink:href="#glyph0-3" x="801.542969" y="145.226562"/>
+  <use xlink:href="#glyph0-13" x="804.970703" y="145.226562"/>
+  <use xlink:href="#glyph0-4" x="811.71875" y="145.226562"/>
+  <use xlink:href="#glyph0-7" x="815.146484" y="145.226562"/>
+  <use xlink:href="#glyph0-10" x="822.016602" y="145.226562"/>
+  <use xlink:href="#glyph0-6" x="829.174805" y="145.226562"/>
+  <use xlink:href="#glyph0-7" x="836.513672" y="145.226562"/>
+  <use xlink:href="#glyph0-8" x="843.383789" y="145.226562"/>
+  <use xlink:href="#glyph0-20" x="850.50293" y="145.226562"/>
+  <use xlink:href="#glyph0-7" x="856.455078" y="145.226562"/>
+  <use xlink:href="#glyph0-4" x="863.325195" y="145.226562"/>
+  <use xlink:href="#glyph0-18" x="866.75293" y="145.226562"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 131.312934 19.749754 " transform="matrix(1,0,0,1,742.222222,125.476808)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000434028 -0.00024563 L 143.31684 -0.00024563 L 143.31684 63.999754 L 0.000434028 63.999754 Z M 0.000434028 -0.00024563 " transform="matrix(1,0,0,1,742.222222,125.476808)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000434028 -0.00024563 L 143.312934 -0.00024563 " transform="matrix(1,0,0,1,742.222222,156.476808)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000434028 -0.00024563 L 143.312934 -0.00024563 " transform="matrix(1,0,0,1,742.222222,166.476808)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="747.222656" y="179.070312"/>
+  <use xlink:href="#glyph1-2" x="755.601562" y="179.070312"/>
+  <use xlink:href="#glyph1-3" x="758.780273" y="179.070312"/>
+  <use xlink:href="#glyph1-11" x="764.27832" y="179.070312"/>
+  <use xlink:href="#glyph1-17" x="768.389648" y="179.070312"/>
+  <use xlink:href="#glyph1-24" x="774.541992" y="179.070312"/>
+  <use xlink:href="#glyph1-10" x="780.669922" y="179.070312"/>
+  <use xlink:href="#glyph1-17" x="784.59082" y="179.070312"/>
+  <use xlink:href="#glyph1-12" x="790.743164" y="179.070312"/>
+  <use xlink:href="#glyph1-16" x="795.743164" y="179.070312"/>
+  <use xlink:href="#glyph1-7" x="802.09082" y="179.070312"/>
+  <use xlink:href="#glyph1-24" x="804.869141" y="179.070312"/>
+  <use xlink:href="#glyph1-20" x="810.99707" y="179.070312"/>
+  <use xlink:href="#glyph1-4" x="813.775391" y="179.070312"/>
+  <use xlink:href="#glyph1-8" x="819.893555" y="179.070312"/>
+  <use xlink:href="#glyph1-21" x="826.241211" y="179.070312"/>
+  <use xlink:href="#glyph1-22" x="830.142578" y="179.070312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-22" x="802.964844" y="287.054688"/>
+  <use xlink:href="#glyph0-23" x="810.166992" y="287.054688"/>
+  <use xlink:href="#glyph0-20" x="816.685547" y="287.054688"/>
+  <use xlink:href="#glyph0-15" x="822.637695" y="287.054688"/>
+  <use xlink:href="#glyph0-18" x="827.417969" y="287.054688"/>
+  <use xlink:href="#glyph0-12" x="834.200195" y="287.054688"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 101.398872 19.577879 " transform="matrix(1,0,0,1,743.222222,267.476808)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000434028 -0.00024563 L 161.480903 -0.00024563 L 161.480903 244.999754 L 0.000434028 244.999754 Z M 0.000434028 -0.00024563 " transform="matrix(1,0,0,1,743.222222,267.476808)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000434028 -0.00024563 L 161.480903 -0.00024563 " transform="matrix(1,0,0,1,743.222222,297.476808)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="748.222656" y="310.070312"/>
+  <use xlink:href="#glyph1-2" x="756.601562" y="310.070312"/>
+  <use xlink:href="#glyph1-18" x="759.780273" y="310.070312"/>
+  <use xlink:href="#glyph1-19" x="765.571289" y="310.070312"/>
+  <use xlink:href="#glyph1-9" x="771.489258" y="310.070312"/>
+  <use xlink:href="#glyph1-12" x="781.230469" y="310.070312"/>
+  <use xlink:href="#glyph1-13" x="786.230469" y="310.070312"/>
+  <use xlink:href="#glyph1-7" x="792.578125" y="310.070312"/>
+  <use xlink:href="#glyph1-16" x="795.356445" y="310.070312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="748.222656" y="323.070312"/>
+  <use xlink:href="#glyph1-2" x="756.601562" y="323.070312"/>
+  <use xlink:href="#glyph1-18" x="759.780273" y="323.070312"/>
+  <use xlink:href="#glyph1-19" x="765.571289" y="323.070312"/>
+  <use xlink:href="#glyph1-9" x="771.489258" y="323.070312"/>
+  <use xlink:href="#glyph1-12" x="781.230469" y="323.070312"/>
+  <use xlink:href="#glyph1-13" x="786.230469" y="323.070312"/>
+  <use xlink:href="#glyph1-11" x="792.578125" y="323.070312"/>
+  <use xlink:href="#glyph1-4" x="796.689453" y="323.070312"/>
+  <use xlink:href="#glyph1-3" x="802.807617" y="323.070312"/>
+  <use xlink:href="#glyph1-17" x="808.305664" y="323.070312"/>
+  <use xlink:href="#glyph1-14" x="814.458008" y="323.070312"/>
+  <use xlink:href="#glyph1-14" x="819.667969" y="323.070312"/>
+  <use xlink:href="#glyph1-12" x="824.87793" y="323.070312"/>
+  <use xlink:href="#glyph1-19" x="829.87793" y="323.070312"/>
+  <use xlink:href="#glyph1-5" x="835.795898" y="323.070312"/>
+  <use xlink:href="#glyph1-3" x="842.133789" y="323.070312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="748.222656" y="336.070312"/>
+  <use xlink:href="#glyph1-2" x="756.601562" y="336.070312"/>
+  <use xlink:href="#glyph1-18" x="759.780273" y="336.070312"/>
+  <use xlink:href="#glyph1-19" x="765.571289" y="336.070312"/>
+  <use xlink:href="#glyph1-9" x="771.489258" y="336.070312"/>
+  <use xlink:href="#glyph1-12" x="781.230469" y="336.070312"/>
+  <use xlink:href="#glyph1-13" x="786.230469" y="336.070312"/>
+  <use xlink:href="#glyph1-11" x="792.578125" y="336.070312"/>
+  <use xlink:href="#glyph1-4" x="796.689453" y="336.070312"/>
+  <use xlink:href="#glyph1-3" x="802.807617" y="336.070312"/>
+  <use xlink:href="#glyph1-17" x="808.305664" y="336.070312"/>
+  <use xlink:href="#glyph1-14" x="814.458008" y="336.070312"/>
+  <use xlink:href="#glyph1-14" x="819.667969" y="336.070312"/>
+  <use xlink:href="#glyph1-12" x="824.87793" y="336.070312"/>
+  <use xlink:href="#glyph1-23" x="829.87793" y="336.070312"/>
+  <use xlink:href="#glyph1-23" x="836.21582" y="336.070312"/>
+  <use xlink:href="#glyph1-7" x="842.553711" y="336.070312"/>
+  <use xlink:href="#glyph1-16" x="845.332031" y="336.070312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="748.222656" y="349.070312"/>
+  <use xlink:href="#glyph1-2" x="756.601562" y="349.070312"/>
+  <use xlink:href="#glyph1-18" x="759.780273" y="349.070312"/>
+  <use xlink:href="#glyph1-19" x="765.571289" y="349.070312"/>
+  <use xlink:href="#glyph1-9" x="771.489258" y="349.070312"/>
+  <use xlink:href="#glyph1-12" x="781.230469" y="349.070312"/>
+  <use xlink:href="#glyph1-13" x="786.230469" y="349.070312"/>
+  <use xlink:href="#glyph1-11" x="792.578125" y="349.070312"/>
+  <use xlink:href="#glyph1-4" x="796.689453" y="349.070312"/>
+  <use xlink:href="#glyph1-3" x="802.807617" y="349.070312"/>
+  <use xlink:href="#glyph1-17" x="808.305664" y="349.070312"/>
+  <use xlink:href="#glyph1-14" x="814.458008" y="349.070312"/>
+  <use xlink:href="#glyph1-14" x="819.667969" y="349.070312"/>
+  <use xlink:href="#glyph1-12" x="824.87793" y="349.070312"/>
+  <use xlink:href="#glyph1-14" x="829.87793" y="349.070312"/>
+  <use xlink:href="#glyph1-10" x="835.087891" y="349.070312"/>
+  <use xlink:href="#glyph1-24" x="839.008789" y="349.070312"/>
+  <use xlink:href="#glyph1-10" x="845.136719" y="349.070312"/>
+  <use xlink:href="#glyph1-23" x="849.057617" y="349.070312"/>
+  <use xlink:href="#glyph1-14" x="855.395508" y="349.070312"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000434028 -0.00024563 L 161.480903 -0.00024563 " transform="matrix(1,0,0,1,743.222222,359.476808)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="748.222656" y="372.070312"/>
+  <use xlink:href="#glyph1-2" x="756.601562" y="372.070312"/>
+  <use xlink:href="#glyph1-12" x="759.780273" y="372.070312"/>
+  <use xlink:href="#glyph1-12" x="764.780273" y="372.070312"/>
+  <use xlink:href="#glyph1-7" x="769.780273" y="372.070312"/>
+  <use xlink:href="#glyph1-5" x="772.558594" y="372.070312"/>
+  <use xlink:href="#glyph1-7" x="778.896484" y="372.070312"/>
+  <use xlink:href="#glyph1-10" x="781.674805" y="372.070312"/>
+  <use xlink:href="#glyph1-12" x="785.595703" y="372.070312"/>
+  <use xlink:href="#glyph1-12" x="790.595703" y="372.070312"/>
+  <use xlink:href="#glyph1-21" x="795.595703" y="372.070312"/>
+  <use xlink:href="#glyph1-22" x="799.49707" y="372.070312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="748.222656" y="385.070312"/>
+  <use xlink:href="#glyph1-2" x="756.601562" y="385.070312"/>
+  <use xlink:href="#glyph1-24" x="759.780273" y="385.070312"/>
+  <use xlink:href="#glyph1-19" x="765.908203" y="385.070312"/>
+  <use xlink:href="#glyph1-24" x="771.826172" y="385.070312"/>
+  <use xlink:href="#glyph1-7" x="777.954102" y="385.070312"/>
+  <use xlink:href="#glyph1-20" x="780.732422" y="385.070312"/>
+  <use xlink:href="#glyph1-12" x="783.510742" y="385.070312"/>
+  <use xlink:href="#glyph1-9" x="788.510742" y="385.070312"/>
+  <use xlink:href="#glyph1-17" x="798.251953" y="385.070312"/>
+  <use xlink:href="#glyph1-9" x="804.404297" y="385.070312"/>
+  <use xlink:href="#glyph1-4" x="814.145508" y="385.070312"/>
+  <use xlink:href="#glyph1-11" x="820.263672" y="385.070312"/>
+  <use xlink:href="#glyph1-25" x="824.375" y="385.070312"/>
+  <use xlink:href="#glyph1-21" x="830.292969" y="385.070312"/>
+  <use xlink:href="#glyph1-22" x="834.194336" y="385.070312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="748.222656" y="398.070312"/>
+  <use xlink:href="#glyph1-2" x="756.601562" y="398.070312"/>
+  <use xlink:href="#glyph1-10" x="759.780273" y="398.070312"/>
+  <use xlink:href="#glyph1-4" x="763.701172" y="398.070312"/>
+  <use xlink:href="#glyph1-10" x="769.819336" y="398.070312"/>
+  <use xlink:href="#glyph1-24" x="773.740234" y="398.070312"/>
+  <use xlink:href="#glyph1-20" x="779.868164" y="398.070312"/>
+  <use xlink:href="#glyph1-12" x="782.646484" y="398.070312"/>
+  <use xlink:href="#glyph1-9" x="787.646484" y="398.070312"/>
+  <use xlink:href="#glyph1-17" x="797.387695" y="398.070312"/>
+  <use xlink:href="#glyph1-9" x="803.540039" y="398.070312"/>
+  <use xlink:href="#glyph1-4" x="813.28125" y="398.070312"/>
+  <use xlink:href="#glyph1-11" x="819.399414" y="398.070312"/>
+  <use xlink:href="#glyph1-25" x="823.510742" y="398.070312"/>
+  <use xlink:href="#glyph1-21" x="829.428711" y="398.070312"/>
+  <use xlink:href="#glyph1-22" x="833.330078" y="398.070312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="748.222656" y="411.070312"/>
+  <use xlink:href="#glyph1-2" x="756.601562" y="411.070312"/>
+  <use xlink:href="#glyph1-8" x="759.780273" y="411.070312"/>
+  <use xlink:href="#glyph1-17" x="766.12793" y="411.070312"/>
+  <use xlink:href="#glyph1-10" x="772.280273" y="411.070312"/>
+  <use xlink:href="#glyph1-12" x="776.201172" y="411.070312"/>
+  <use xlink:href="#glyph1-3" x="781.201172" y="411.070312"/>
+  <use xlink:href="#glyph1-16" x="786.699219" y="411.070312"/>
+  <use xlink:href="#glyph1-11" x="793.046875" y="411.070312"/>
+  <use xlink:href="#glyph1-4" x="797.158203" y="411.070312"/>
+  <use xlink:href="#glyph1-9" x="803.276367" y="411.070312"/>
+  <use xlink:href="#glyph1-21" x="813.017578" y="411.070312"/>
+  <use xlink:href="#glyph1-22" x="816.918945" y="411.070312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="748.222656" y="424.070312"/>
+  <use xlink:href="#glyph1-2" x="756.601562" y="424.070312"/>
+  <use xlink:href="#glyph1-8" x="759.780273" y="424.070312"/>
+  <use xlink:href="#glyph1-17" x="766.12793" y="424.070312"/>
+  <use xlink:href="#glyph1-10" x="772.280273" y="424.070312"/>
+  <use xlink:href="#glyph1-12" x="776.201172" y="424.070312"/>
+  <use xlink:href="#glyph1-13" x="781.201172" y="424.070312"/>
+  <use xlink:href="#glyph1-7" x="787.548828" y="424.070312"/>
+  <use xlink:href="#glyph1-16" x="790.327148" y="424.070312"/>
+  <use xlink:href="#glyph1-21" x="796.674805" y="424.070312"/>
+  <use xlink:href="#glyph1-22" x="800.576172" y="424.070312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="748.222656" y="437.070312"/>
+  <use xlink:href="#glyph1-2" x="756.601562" y="437.070312"/>
+  <use xlink:href="#glyph1-12" x="759.780273" y="437.070312"/>
+  <use xlink:href="#glyph1-8" x="764.780273" y="437.070312"/>
+  <use xlink:href="#glyph1-17" x="771.12793" y="437.070312"/>
+  <use xlink:href="#glyph1-10" x="777.280273" y="437.070312"/>
+  <use xlink:href="#glyph1-12" x="781.201172" y="437.070312"/>
+  <use xlink:href="#glyph1-19" x="786.201172" y="437.070312"/>
+  <use xlink:href="#glyph1-5" x="792.119141" y="437.070312"/>
+  <use xlink:href="#glyph1-3" x="798.457031" y="437.070312"/>
+  <use xlink:href="#glyph1-21" x="803.955078" y="437.070312"/>
+  <use xlink:href="#glyph1-22" x="807.856445" y="437.070312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="748.222656" y="450.070312"/>
+  <use xlink:href="#glyph1-2" x="756.601562" y="450.070312"/>
+  <use xlink:href="#glyph1-12" x="759.780273" y="450.070312"/>
+  <use xlink:href="#glyph1-8" x="764.780273" y="450.070312"/>
+  <use xlink:href="#glyph1-17" x="771.12793" y="450.070312"/>
+  <use xlink:href="#glyph1-10" x="777.280273" y="450.070312"/>
+  <use xlink:href="#glyph1-12" x="781.201172" y="450.070312"/>
+  <use xlink:href="#glyph1-23" x="786.201172" y="450.070312"/>
+  <use xlink:href="#glyph1-23" x="792.539062" y="450.070312"/>
+  <use xlink:href="#glyph1-7" x="798.876953" y="450.070312"/>
+  <use xlink:href="#glyph1-16" x="801.655273" y="450.070312"/>
+  <use xlink:href="#glyph1-21" x="808.00293" y="450.070312"/>
+  <use xlink:href="#glyph1-22" x="811.904297" y="450.070312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="748.222656" y="463.070312"/>
+  <use xlink:href="#glyph1-2" x="756.601562" y="463.070312"/>
+  <use xlink:href="#glyph1-12" x="759.780273" y="463.070312"/>
+  <use xlink:href="#glyph1-8" x="764.780273" y="463.070312"/>
+  <use xlink:href="#glyph1-17" x="771.12793" y="463.070312"/>
+  <use xlink:href="#glyph1-10" x="777.280273" y="463.070312"/>
+  <use xlink:href="#glyph1-12" x="781.201172" y="463.070312"/>
+  <use xlink:href="#glyph1-14" x="786.201172" y="463.070312"/>
+  <use xlink:href="#glyph1-10" x="791.411133" y="463.070312"/>
+  <use xlink:href="#glyph1-24" x="795.332031" y="463.070312"/>
+  <use xlink:href="#glyph1-10" x="801.459961" y="463.070312"/>
+  <use xlink:href="#glyph1-23" x="805.380859" y="463.070312"/>
+  <use xlink:href="#glyph1-14" x="811.71875" y="463.070312"/>
+  <use xlink:href="#glyph1-21" x="816.928711" y="463.070312"/>
+  <use xlink:href="#glyph1-22" x="820.830078" y="463.070312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="748.222656" y="476.070312"/>
+  <use xlink:href="#glyph1-2" x="756.601562" y="476.070312"/>
+  <use xlink:href="#glyph1-12" x="759.780273" y="476.070312"/>
+  <use xlink:href="#glyph1-8" x="764.780273" y="476.070312"/>
+  <use xlink:href="#glyph1-17" x="771.12793" y="476.070312"/>
+  <use xlink:href="#glyph1-10" x="777.280273" y="476.070312"/>
+  <use xlink:href="#glyph1-12" x="781.201172" y="476.070312"/>
+  <use xlink:href="#glyph1-13" x="786.201172" y="476.070312"/>
+  <use xlink:href="#glyph1-11" x="792.548828" y="476.070312"/>
+  <use xlink:href="#glyph1-4" x="796.660156" y="476.070312"/>
+  <use xlink:href="#glyph1-3" x="802.77832" y="476.070312"/>
+  <use xlink:href="#glyph1-17" x="808.276367" y="476.070312"/>
+  <use xlink:href="#glyph1-14" x="814.428711" y="476.070312"/>
+  <use xlink:href="#glyph1-14" x="819.638672" y="476.070312"/>
+  <use xlink:href="#glyph1-12" x="824.848633" y="476.070312"/>
+  <use xlink:href="#glyph1-7" x="829.848633" y="476.070312"/>
+  <use xlink:href="#glyph1-5" x="832.626953" y="476.070312"/>
+  <use xlink:href="#glyph1-6" x="838.964844" y="476.070312"/>
+  <use xlink:href="#glyph1-4" x="842.485352" y="476.070312"/>
+  <use xlink:href="#glyph1-21" x="848.603516" y="476.070312"/>
+  <use xlink:href="#glyph1-22" x="852.504883" y="476.070312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="748.222656" y="489.070312"/>
+  <use xlink:href="#glyph1-2" x="756.601562" y="489.070312"/>
+  <use xlink:href="#glyph1-8" x="759.780273" y="489.070312"/>
+  <use xlink:href="#glyph1-17" x="766.12793" y="489.070312"/>
+  <use xlink:href="#glyph1-10" x="772.280273" y="489.070312"/>
+  <use xlink:href="#glyph1-12" x="776.201172" y="489.070312"/>
+  <use xlink:href="#glyph1-13" x="781.201172" y="489.070312"/>
+  <use xlink:href="#glyph1-11" x="787.548828" y="489.070312"/>
+  <use xlink:href="#glyph1-4" x="791.660156" y="489.070312"/>
+  <use xlink:href="#glyph1-3" x="797.77832" y="489.070312"/>
+  <use xlink:href="#glyph1-17" x="803.276367" y="489.070312"/>
+  <use xlink:href="#glyph1-14" x="809.428711" y="489.070312"/>
+  <use xlink:href="#glyph1-14" x="814.638672" y="489.070312"/>
+  <use xlink:href="#glyph1-12" x="819.848633" y="489.070312"/>
+  <use xlink:href="#glyph1-7" x="824.848633" y="489.070312"/>
+  <use xlink:href="#glyph1-5" x="827.626953" y="489.070312"/>
+  <use xlink:href="#glyph1-6" x="833.964844" y="489.070312"/>
+  <use xlink:href="#glyph1-4" x="837.485352" y="489.070312"/>
+  <use xlink:href="#glyph1-11" x="843.603516" y="489.070312"/>
+  <use xlink:href="#glyph1-9" x="847.714844" y="489.070312"/>
+  <use xlink:href="#glyph1-24" x="857.456055" y="489.070312"/>
+  <use xlink:href="#glyph1-10" x="863.583984" y="489.070312"/>
+  <use xlink:href="#glyph1-7" x="867.504883" y="489.070312"/>
+  <use xlink:href="#glyph1-4" x="870.283203" y="489.070312"/>
+  <use xlink:href="#glyph1-5" x="876.401367" y="489.070312"/>
+  <use xlink:href="#glyph1-21" x="882.739258" y="489.070312"/>
+  <use xlink:href="#glyph1-22" x="886.640625" y="489.070312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="748.222656" y="502.070312"/>
+  <use xlink:href="#glyph1-2" x="756.601562" y="502.070312"/>
+  <use xlink:href="#glyph1-7" x="759.780273" y="502.070312"/>
+  <use xlink:href="#glyph1-14" x="762.558594" y="502.070312"/>
+  <use xlink:href="#glyph1-12" x="767.768555" y="502.070312"/>
+  <use xlink:href="#glyph1-11" x="772.768555" y="502.070312"/>
+  <use xlink:href="#glyph1-23" x="776.879883" y="502.070312"/>
+  <use xlink:href="#glyph1-5" x="783.217773" y="502.070312"/>
+  <use xlink:href="#glyph1-5" x="789.555664" y="502.070312"/>
+  <use xlink:href="#glyph1-7" x="795.893555" y="502.070312"/>
+  <use xlink:href="#glyph1-5" x="798.671875" y="502.070312"/>
+  <use xlink:href="#glyph1-8" x="805.009766" y="502.070312"/>
+  <use xlink:href="#glyph1-21" x="811.357422" y="502.070312"/>
+  <use xlink:href="#glyph1-22" x="815.258789" y="502.070312"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-1" x="597.933594" y="285.738281"/>
+  <use xlink:href="#glyph0-2" x="605.555664" y="285.738281"/>
+  <use xlink:href="#glyph0-3" x="612.674805" y="285.738281"/>
+  <use xlink:href="#glyph0-4" x="616.102539" y="285.738281"/>
+  <use xlink:href="#glyph0-5" x="619.530273" y="285.738281"/>
+  <use xlink:href="#glyph0-6" x="626.688477" y="285.738281"/>
+  <use xlink:href="#glyph0-7" x="634.027344" y="285.738281"/>
+  <use xlink:href="#glyph0-12" x="640.897461" y="285.738281"/>
+  <use xlink:href="#glyph0-12" x="651.317383" y="285.738281"/>
+  <use xlink:href="#glyph0-13" x="661.737305" y="285.738281"/>
+  <use xlink:href="#glyph0-8" x="668.485352" y="285.738281"/>
+  <use xlink:href="#glyph0-5" x="675.604492" y="285.738281"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 99.428385 17.733695 " transform="matrix(1,0,0,1,583.333333,268.004586)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.00130208 -0.000679658 L 112.201823 -0.000679658 L 112.201823 96.99932 L -0.00130208 96.99932 Z M -0.00130208 -0.000679658 " transform="matrix(1,0,0,1,583.333333,268.004586)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.00130208 -0.000679658 L 112.201823 -0.000679658 " transform="matrix(1,0,0,1,583.333333,297.004586)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="588.332031" y="309.597656"/>
+  <use xlink:href="#glyph1-2" x="596.710938" y="309.597656"/>
+  <use xlink:href="#glyph1-3" x="599.889648" y="309.597656"/>
+  <use xlink:href="#glyph1-4" x="605.387695" y="309.597656"/>
+  <use xlink:href="#glyph1-9" x="611.505859" y="309.597656"/>
+  <use xlink:href="#glyph1-9" x="621.24707" y="309.597656"/>
+  <use xlink:href="#glyph1-9" x="630.988281" y="309.597656"/>
+  <use xlink:href="#glyph1-24" x="640.729492" y="309.597656"/>
+  <use xlink:href="#glyph1-5" x="646.857422" y="309.597656"/>
+  <use xlink:href="#glyph1-16" x="653.195312" y="309.597656"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="588.332031" y="320.597656"/>
+  <use xlink:href="#glyph1-2" x="596.710938" y="320.597656"/>
+  <use xlink:href="#glyph1-3" x="599.889648" y="320.597656"/>
+  <use xlink:href="#glyph1-4" x="605.387695" y="320.597656"/>
+  <use xlink:href="#glyph1-9" x="611.505859" y="320.597656"/>
+  <use xlink:href="#glyph1-9" x="621.24707" y="320.597656"/>
+  <use xlink:href="#glyph1-24" x="630.988281" y="320.597656"/>
+  <use xlink:href="#glyph1-5" x="637.116211" y="320.597656"/>
+  <use xlink:href="#glyph1-16" x="643.454102" y="320.597656"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.00130208 -0.000679658 L 112.201823 -0.000679658 " transform="matrix(1,0,0,1,583.333333,329.004586)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="588.332031" y="341.597656"/>
+  <use xlink:href="#glyph1-2" x="596.710938" y="341.597656"/>
+  <use xlink:href="#glyph1-12" x="599.889648" y="341.597656"/>
+  <use xlink:href="#glyph1-12" x="604.889648" y="341.597656"/>
+  <use xlink:href="#glyph1-7" x="609.889648" y="341.597656"/>
+  <use xlink:href="#glyph1-5" x="612.667969" y="341.597656"/>
+  <use xlink:href="#glyph1-7" x="619.005859" y="341.597656"/>
+  <use xlink:href="#glyph1-10" x="621.78418" y="341.597656"/>
+  <use xlink:href="#glyph1-12" x="625.705078" y="341.597656"/>
+  <use xlink:href="#glyph1-12" x="630.705078" y="341.597656"/>
+  <use xlink:href="#glyph1-21" x="635.705078" y="341.597656"/>
+  <use xlink:href="#glyph1-22" x="639.606445" y="341.597656"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="588.332031" y="354.597656"/>
+  <use xlink:href="#glyph1-2" x="596.710938" y="354.597656"/>
+  <use xlink:href="#glyph1-15" x="599.889648" y="354.597656"/>
+  <use xlink:href="#glyph1-23" x="606.237305" y="354.597656"/>
+  <use xlink:href="#glyph1-7" x="612.575195" y="354.597656"/>
+  <use xlink:href="#glyph1-20" x="615.353516" y="354.597656"/>
+  <use xlink:href="#glyph1-16" x="618.131836" y="354.597656"/>
+  <use xlink:href="#glyph1-12" x="624.479492" y="354.597656"/>
+  <use xlink:href="#glyph1-3" x="629.479492" y="354.597656"/>
+  <use xlink:href="#glyph1-4" x="634.977539" y="354.597656"/>
+  <use xlink:href="#glyph1-9" x="641.095703" y="354.597656"/>
+  <use xlink:href="#glyph1-9" x="650.836914" y="354.597656"/>
+  <use xlink:href="#glyph1-24" x="660.578125" y="354.597656"/>
+  <use xlink:href="#glyph1-5" x="666.706055" y="354.597656"/>
+  <use xlink:href="#glyph1-16" x="673.043945" y="354.597656"/>
+  <use xlink:href="#glyph1-21" x="679.391602" y="354.597656"/>
+  <use xlink:href="#glyph1-22" x="683.292969" y="354.597656"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-24" x="189.503906" y="507.089844"/>
+  <use xlink:href="#glyph0-18" x="197.873047" y="507.089844"/>
+  <use xlink:href="#glyph0-13" x="204.655273" y="507.089844"/>
+  <use xlink:href="#glyph0-5" x="211.40332" y="507.089844"/>
+  <use xlink:href="#glyph0-18" x="218.561523" y="507.089844"/>
+  <use xlink:href="#glyph0-16" x="225.34375" y="507.089844"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 89.298993 17.735258 " transform="matrix(1,0,0,1,140.974444,489.354586)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.00178819 0.000882842 L 137.060712 0.000882842 L 137.060712 166.000883 L -0.00178819 166.000883 Z M -0.00178819 0.000882842 " transform="matrix(1,0,0,1,140.974444,489.354586)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.00178819 0.000882842 L 137.060712 0.000882842 " transform="matrix(1,0,0,1,140.974444,518.354586)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="145.972656" y="530.949219"/>
+  <use xlink:href="#glyph1-2" x="154.351562" y="530.949219"/>
+  <use xlink:href="#glyph1-18" x="157.530273" y="530.949219"/>
+  <use xlink:href="#glyph1-19" x="163.321289" y="530.949219"/>
+  <use xlink:href="#glyph1-9" x="169.239258" y="530.949219"/>
+  <use xlink:href="#glyph1-12" x="178.980469" y="530.949219"/>
+  <use xlink:href="#glyph1-15" x="183.980469" y="530.949219"/>
+  <use xlink:href="#glyph1-24" x="190.328125" y="530.949219"/>
+  <use xlink:href="#glyph1-14" x="196.456055" y="530.949219"/>
+  <use xlink:href="#glyph1-17" x="201.666016" y="530.949219"/>
+  <use xlink:href="#glyph1-12" x="207.818359" y="530.949219"/>
+  <use xlink:href="#glyph1-3" x="212.818359" y="530.949219"/>
+  <use xlink:href="#glyph1-4" x="218.316406" y="530.949219"/>
+  <use xlink:href="#glyph1-5" x="224.43457" y="530.949219"/>
+  <use xlink:href="#glyph1-6" x="230.772461" y="530.949219"/>
+  <use xlink:href="#glyph1-7" x="234.292969" y="530.949219"/>
+  <use xlink:href="#glyph1-8" x="237.071289" y="530.949219"/>
+  <use xlink:href="#glyph1-12" x="243.418945" y="530.949219"/>
+  <use xlink:href="#glyph1-16" x="248.418945" y="530.949219"/>
+  <use xlink:href="#glyph1-7" x="254.766602" y="530.949219"/>
+  <use xlink:href="#glyph1-11" x="257.544922" y="530.949219"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="145.972656" y="543.949219"/>
+  <use xlink:href="#glyph1-2" x="154.351562" y="543.949219"/>
+  <use xlink:href="#glyph1-12" x="157.530273" y="543.949219"/>
+  <use xlink:href="#glyph1-18" x="162.530273" y="543.949219"/>
+  <use xlink:href="#glyph1-19" x="168.321289" y="543.949219"/>
+  <use xlink:href="#glyph1-9" x="174.239258" y="543.949219"/>
+  <use xlink:href="#glyph1-12" x="183.980469" y="543.949219"/>
+  <use xlink:href="#glyph1-14" x="188.980469" y="543.949219"/>
+  <use xlink:href="#glyph1-3" x="194.19043" y="543.949219"/>
+  <use xlink:href="#glyph1-11" x="199.688477" y="543.949219"/>
+  <use xlink:href="#glyph1-7" x="203.799805" y="543.949219"/>
+  <use xlink:href="#glyph1-13" x="206.578125" y="543.949219"/>
+  <use xlink:href="#glyph1-10" x="212.925781" y="543.949219"/>
+  <use xlink:href="#glyph1-12" x="216.84668" y="543.949219"/>
+  <use xlink:href="#glyph1-16" x="221.84668" y="543.949219"/>
+  <use xlink:href="#glyph1-7" x="228.194336" y="543.949219"/>
+  <use xlink:href="#glyph1-11" x="230.972656" y="543.949219"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="145.972656" y="556.949219"/>
+  <use xlink:href="#glyph1-2" x="154.351562" y="556.949219"/>
+  <use xlink:href="#glyph1-12" x="157.530273" y="556.949219"/>
+  <use xlink:href="#glyph1-18" x="162.530273" y="556.949219"/>
+  <use xlink:href="#glyph1-19" x="168.321289" y="556.949219"/>
+  <use xlink:href="#glyph1-9" x="174.239258" y="556.949219"/>
+  <use xlink:href="#glyph1-12" x="183.980469" y="556.949219"/>
+  <use xlink:href="#glyph1-16" x="188.980469" y="556.949219"/>
+  <use xlink:href="#glyph1-4" x="195.328125" y="556.949219"/>
+  <use xlink:href="#glyph1-9" x="201.446289" y="556.949219"/>
+  <use xlink:href="#glyph1-24" x="211.1875" y="556.949219"/>
+  <use xlink:href="#glyph1-7" x="217.31543" y="556.949219"/>
+  <use xlink:href="#glyph1-5" x="220.09375" y="556.949219"/>
+  <use xlink:href="#glyph1-12" x="226.431641" y="556.949219"/>
+  <use xlink:href="#glyph1-16" x="231.431641" y="556.949219"/>
+  <use xlink:href="#glyph1-7" x="237.779297" y="556.949219"/>
+  <use xlink:href="#glyph1-11" x="240.557617" y="556.949219"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="145.972656" y="569.949219"/>
+  <use xlink:href="#glyph1-2" x="154.351562" y="569.949219"/>
+  <use xlink:href="#glyph1-12" x="157.530273" y="569.949219"/>
+  <use xlink:href="#glyph1-18" x="162.530273" y="569.949219"/>
+  <use xlink:href="#glyph1-19" x="168.321289" y="569.949219"/>
+  <use xlink:href="#glyph1-9" x="174.239258" y="569.949219"/>
+  <use xlink:href="#glyph1-12" x="183.980469" y="569.949219"/>
+  <use xlink:href="#glyph1-3" x="188.980469" y="569.949219"/>
+  <use xlink:href="#glyph1-4" x="194.478516" y="569.949219"/>
+  <use xlink:href="#glyph1-5" x="200.59668" y="569.949219"/>
+  <use xlink:href="#glyph1-6" x="206.93457" y="569.949219"/>
+  <use xlink:href="#glyph1-12" x="210.455078" y="569.949219"/>
+  <use xlink:href="#glyph1-16" x="215.455078" y="569.949219"/>
+  <use xlink:href="#glyph1-7" x="221.802734" y="569.949219"/>
+  <use xlink:href="#glyph1-11" x="224.581055" y="569.949219"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="145.972656" y="582.949219"/>
+  <use xlink:href="#glyph1-2" x="154.351562" y="582.949219"/>
+  <use xlink:href="#glyph1-12" x="157.530273" y="582.949219"/>
+  <use xlink:href="#glyph1-18" x="162.530273" y="582.949219"/>
+  <use xlink:href="#glyph1-19" x="168.321289" y="582.949219"/>
+  <use xlink:href="#glyph1-9" x="174.239258" y="582.949219"/>
+  <use xlink:href="#glyph1-12" x="183.980469" y="582.949219"/>
+  <use xlink:href="#glyph1-3" x="188.980469" y="582.949219"/>
+  <use xlink:href="#glyph1-4" x="194.478516" y="582.949219"/>
+  <use xlink:href="#glyph1-5" x="200.59668" y="582.949219"/>
+  <use xlink:href="#glyph1-6" x="206.93457" y="582.949219"/>
+  <use xlink:href="#glyph1-12" x="210.455078" y="582.949219"/>
+  <use xlink:href="#glyph1-5" x="215.455078" y="582.949219"/>
+  <use xlink:href="#glyph1-24" x="221.792969" y="582.949219"/>
+  <use xlink:href="#glyph1-9" x="227.920898" y="582.949219"/>
+  <use xlink:href="#glyph1-17" x="237.662109" y="582.949219"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="145.972656" y="595.949219"/>
+  <use xlink:href="#glyph1-2" x="154.351562" y="595.949219"/>
+  <use xlink:href="#glyph1-10" x="157.530273" y="595.949219"/>
+  <use xlink:href="#glyph1-17" x="161.451172" y="595.949219"/>
+  <use xlink:href="#glyph1-20" x="167.603516" y="595.949219"/>
+  <use xlink:href="#glyph1-5" x="170.381836" y="595.949219"/>
+  <use xlink:href="#glyph1-17" x="176.719727" y="595.949219"/>
+  <use xlink:href="#glyph1-10" x="182.87207" y="595.949219"/>
+  <use xlink:href="#glyph1-12" x="186.792969" y="595.949219"/>
+  <use xlink:href="#glyph1-13" x="191.792969" y="595.949219"/>
+  <use xlink:href="#glyph1-4" x="198.140625" y="595.949219"/>
+  <use xlink:href="#glyph1-11" x="204.258789" y="595.949219"/>
+  <use xlink:href="#glyph1-10" x="208.370117" y="595.949219"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="145.972656" y="608.949219"/>
+  <use xlink:href="#glyph1-2" x="154.351562" y="608.949219"/>
+  <use xlink:href="#glyph1-18" x="157.530273" y="608.949219"/>
+  <use xlink:href="#glyph1-19" x="163.321289" y="608.949219"/>
+  <use xlink:href="#glyph1-9" x="169.239258" y="608.949219"/>
+  <use xlink:href="#glyph1-12" x="178.980469" y="608.949219"/>
+  <use xlink:href="#glyph1-11" x="183.980469" y="608.949219"/>
+  <use xlink:href="#glyph1-23" x="188.091797" y="608.949219"/>
+  <use xlink:href="#glyph1-5" x="194.429688" y="608.949219"/>
+  <use xlink:href="#glyph1-12" x="200.767578" y="608.949219"/>
+  <use xlink:href="#glyph1-13" x="205.767578" y="608.949219"/>
+  <use xlink:href="#glyph1-24" x="212.115234" y="608.949219"/>
+  <use xlink:href="#glyph1-10" x="218.243164" y="608.949219"/>
+  <use xlink:href="#glyph1-29" x="222.164062" y="608.949219"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="145.972656" y="621.949219"/>
+  <use xlink:href="#glyph1-2" x="154.351562" y="621.949219"/>
+  <use xlink:href="#glyph1-17" x="157.530273" y="621.949219"/>
+  <use xlink:href="#glyph1-28" x="163.682617" y="621.949219"/>
+  <use xlink:href="#glyph1-3" x="169.600586" y="621.949219"/>
+  <use xlink:href="#glyph1-20" x="175.098633" y="621.949219"/>
+  <use xlink:href="#glyph1-23" x="177.876953" y="621.949219"/>
+  <use xlink:href="#glyph1-16" x="184.214844" y="621.949219"/>
+  <use xlink:href="#glyph1-17" x="190.5625" y="621.949219"/>
+  <use xlink:href="#glyph1-12" x="196.714844" y="621.949219"/>
+  <use xlink:href="#glyph1-4" x="201.714844" y="621.949219"/>
+  <use xlink:href="#glyph1-13" x="207.833008" y="621.949219"/>
+  <use xlink:href="#glyph1-10" x="214.180664" y="621.949219"/>
+  <use xlink:href="#glyph1-7" x="218.101562" y="621.949219"/>
+  <use xlink:href="#glyph1-4" x="220.879883" y="621.949219"/>
+  <use xlink:href="#glyph1-5" x="226.998047" y="621.949219"/>
+  <use xlink:href="#glyph1-14" x="233.335938" y="621.949219"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.00178819 0.000882842 L 137.060712 0.000882842 " transform="matrix(1,0,0,1,140.974444,632.354586)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="145.972656" y="644.949219"/>
+  <use xlink:href="#glyph1-2" x="154.351562" y="644.949219"/>
+  <use xlink:href="#glyph1-12" x="157.530273" y="644.949219"/>
+  <use xlink:href="#glyph1-12" x="162.530273" y="644.949219"/>
+  <use xlink:href="#glyph1-7" x="167.530273" y="644.949219"/>
+  <use xlink:href="#glyph1-5" x="170.308594" y="644.949219"/>
+  <use xlink:href="#glyph1-7" x="176.646484" y="644.949219"/>
+  <use xlink:href="#glyph1-10" x="179.424805" y="644.949219"/>
+  <use xlink:href="#glyph1-12" x="183.345703" y="644.949219"/>
+  <use xlink:href="#glyph1-12" x="188.345703" y="644.949219"/>
+  <use xlink:href="#glyph1-21" x="193.345703" y="644.949219"/>
+  <use xlink:href="#glyph1-22" x="197.24707" y="644.949219"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-22" x="433.742188" y="291.53125"/>
+  <use xlink:href="#glyph0-18" x="440.944336" y="291.53125"/>
+  <use xlink:href="#glyph0-15" x="447.726562" y="291.53125"/>
+  <use xlink:href="#glyph0-6" x="452.506836" y="291.53125"/>
+  <use xlink:href="#glyph0-7" x="459.845703" y="291.53125"/>
+  <use xlink:href="#glyph0-8" x="466.71582" y="291.53125"/>
+  <use xlink:href="#glyph0-9" x="473.834961" y="291.53125"/>
+  <use xlink:href="#glyph0-3" x="478.185547" y="291.53125"/>
+  <use xlink:href="#glyph0-10" x="481.613281" y="291.53125"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 116.328993 19.748886 " transform="matrix(1,0,0,1,372.444444,271.782364)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000868056 -0.00111369 L 175.594618 -0.00111369 L 175.594618 323.998886 L 0.000868056 323.998886 Z M 0.000868056 -0.00111369 " transform="matrix(1,0,0,1,372.444444,271.782364)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000868056 -0.00111369 L 175.590712 -0.00111369 " transform="matrix(1,0,0,1,372.444444,302.782364)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="315.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="315.375"/>
+  <use xlink:href="#glyph1-18" x="389.00293" y="315.375"/>
+  <use xlink:href="#glyph1-19" x="394.793945" y="315.375"/>
+  <use xlink:href="#glyph1-9" x="400.711914" y="315.375"/>
+  <use xlink:href="#glyph1-12" x="410.453125" y="315.375"/>
+  <use xlink:href="#glyph1-16" x="415.453125" y="315.375"/>
+  <use xlink:href="#glyph1-4" x="421.800781" y="315.375"/>
+  <use xlink:href="#glyph1-9" x="427.918945" y="315.375"/>
+  <use xlink:href="#glyph1-24" x="437.660156" y="315.375"/>
+  <use xlink:href="#glyph1-7" x="443.788086" y="315.375"/>
+  <use xlink:href="#glyph1-5" x="446.566406" y="315.375"/>
+  <use xlink:href="#glyph1-12" x="452.904297" y="315.375"/>
+  <use xlink:href="#glyph1-16" x="457.904297" y="315.375"/>
+  <use xlink:href="#glyph1-7" x="464.251953" y="315.375"/>
+  <use xlink:href="#glyph1-11" x="467.030273" y="315.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="328.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="328.375"/>
+  <use xlink:href="#glyph1-18" x="389.00293" y="328.375"/>
+  <use xlink:href="#glyph1-19" x="394.793945" y="328.375"/>
+  <use xlink:href="#glyph1-9" x="400.711914" y="328.375"/>
+  <use xlink:href="#glyph1-12" x="410.453125" y="328.375"/>
+  <use xlink:href="#glyph1-16" x="415.453125" y="328.375"/>
+  <use xlink:href="#glyph1-4" x="421.800781" y="328.375"/>
+  <use xlink:href="#glyph1-9" x="427.918945" y="328.375"/>
+  <use xlink:href="#glyph1-24" x="437.660156" y="328.375"/>
+  <use xlink:href="#glyph1-7" x="443.788086" y="328.375"/>
+  <use xlink:href="#glyph1-5" x="446.566406" y="328.375"/>
+  <use xlink:href="#glyph1-12" x="452.904297" y="328.375"/>
+  <use xlink:href="#glyph1-5" x="457.904297" y="328.375"/>
+  <use xlink:href="#glyph1-24" x="464.242188" y="328.375"/>
+  <use xlink:href="#glyph1-9" x="470.370117" y="328.375"/>
+  <use xlink:href="#glyph1-17" x="480.111328" y="328.375"/>
+  <use xlink:href="#glyph1-12" x="486.263672" y="328.375"/>
+  <use xlink:href="#glyph1-24" x="491.263672" y="328.375"/>
+  <use xlink:href="#glyph1-20" x="497.391602" y="328.375"/>
+  <use xlink:href="#glyph1-20" x="500.169922" y="328.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="341.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="341.375"/>
+  <use xlink:href="#glyph1-18" x="389.00293" y="341.375"/>
+  <use xlink:href="#glyph1-19" x="394.793945" y="341.375"/>
+  <use xlink:href="#glyph1-9" x="400.711914" y="341.375"/>
+  <use xlink:href="#glyph1-12" x="410.453125" y="341.375"/>
+  <use xlink:href="#glyph1-16" x="415.453125" y="341.375"/>
+  <use xlink:href="#glyph1-4" x="421.800781" y="341.375"/>
+  <use xlink:href="#glyph1-9" x="427.918945" y="341.375"/>
+  <use xlink:href="#glyph1-24" x="437.660156" y="341.375"/>
+  <use xlink:href="#glyph1-7" x="443.788086" y="341.375"/>
+  <use xlink:href="#glyph1-5" x="446.566406" y="341.375"/>
+  <use xlink:href="#glyph1-12" x="452.904297" y="341.375"/>
+  <use xlink:href="#glyph1-5" x="457.904297" y="341.375"/>
+  <use xlink:href="#glyph1-24" x="464.242188" y="341.375"/>
+  <use xlink:href="#glyph1-9" x="470.370117" y="341.375"/>
+  <use xlink:href="#glyph1-17" x="480.111328" y="341.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="354.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="354.375"/>
+  <use xlink:href="#glyph1-18" x="389.00293" y="354.375"/>
+  <use xlink:href="#glyph1-19" x="394.793945" y="354.375"/>
+  <use xlink:href="#glyph1-9" x="400.711914" y="354.375"/>
+  <use xlink:href="#glyph1-12" x="410.453125" y="354.375"/>
+  <use xlink:href="#glyph1-16" x="415.453125" y="354.375"/>
+  <use xlink:href="#glyph1-4" x="421.800781" y="354.375"/>
+  <use xlink:href="#glyph1-9" x="427.918945" y="354.375"/>
+  <use xlink:href="#glyph1-24" x="437.660156" y="354.375"/>
+  <use xlink:href="#glyph1-7" x="443.788086" y="354.375"/>
+  <use xlink:href="#glyph1-5" x="446.566406" y="354.375"/>
+  <use xlink:href="#glyph1-12" x="452.904297" y="354.375"/>
+  <use xlink:href="#glyph1-6" x="457.904297" y="354.375"/>
+  <use xlink:href="#glyph1-7" x="461.424805" y="354.375"/>
+  <use xlink:href="#glyph1-20" x="464.203125" y="354.375"/>
+  <use xlink:href="#glyph1-17" x="466.981445" y="354.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="367.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="367.375"/>
+  <use xlink:href="#glyph1-18" x="389.00293" y="367.375"/>
+  <use xlink:href="#glyph1-19" x="394.793945" y="367.375"/>
+  <use xlink:href="#glyph1-9" x="400.711914" y="367.375"/>
+  <use xlink:href="#glyph1-12" x="410.453125" y="367.375"/>
+  <use xlink:href="#glyph1-14" x="415.453125" y="367.375"/>
+  <use xlink:href="#glyph1-3" x="420.663086" y="367.375"/>
+  <use xlink:href="#glyph1-11" x="426.161133" y="367.375"/>
+  <use xlink:href="#glyph1-7" x="430.272461" y="367.375"/>
+  <use xlink:href="#glyph1-13" x="433.050781" y="367.375"/>
+  <use xlink:href="#glyph1-10" x="439.398438" y="367.375"/>
+  <use xlink:href="#glyph1-12" x="443.319336" y="367.375"/>
+  <use xlink:href="#glyph1-16" x="448.319336" y="367.375"/>
+  <use xlink:href="#glyph1-7" x="454.666992" y="367.375"/>
+  <use xlink:href="#glyph1-11" x="457.445312" y="367.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="380.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="380.375"/>
+  <use xlink:href="#glyph1-18" x="389.00293" y="380.375"/>
+  <use xlink:href="#glyph1-19" x="394.793945" y="380.375"/>
+  <use xlink:href="#glyph1-9" x="400.711914" y="380.375"/>
+  <use xlink:href="#glyph1-12" x="410.453125" y="380.375"/>
+  <use xlink:href="#glyph1-13" x="415.453125" y="380.375"/>
+  <use xlink:href="#glyph1-7" x="421.800781" y="380.375"/>
+  <use xlink:href="#glyph1-16" x="424.579102" y="380.375"/>
+  <use xlink:href="#glyph1-6" x="430.926758" y="380.375"/>
+  <use xlink:href="#glyph1-7" x="434.447266" y="380.375"/>
+  <use xlink:href="#glyph1-20" x="437.225586" y="380.375"/>
+  <use xlink:href="#glyph1-17" x="440.003906" y="380.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="393.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="393.375"/>
+  <use xlink:href="#glyph1-18" x="389.00293" y="393.375"/>
+  <use xlink:href="#glyph1-19" x="394.793945" y="393.375"/>
+  <use xlink:href="#glyph1-9" x="400.711914" y="393.375"/>
+  <use xlink:href="#glyph1-12" x="410.453125" y="393.375"/>
+  <use xlink:href="#glyph1-14" x="415.453125" y="393.375"/>
+  <use xlink:href="#glyph1-4" x="420.663086" y="393.375"/>
+  <use xlink:href="#glyph1-3" x="426.78125" y="393.375"/>
+  <use xlink:href="#glyph1-18" x="432.279297" y="393.375"/>
+  <use xlink:href="#glyph1-17" x="438.070312" y="393.375"/>
+  <use xlink:href="#glyph1-10" x="444.222656" y="393.375"/>
+  <use xlink:href="#glyph1-6" x="448.143555" y="393.375"/>
+  <use xlink:href="#glyph1-7" x="451.664062" y="393.375"/>
+  <use xlink:href="#glyph1-20" x="454.442383" y="393.375"/>
+  <use xlink:href="#glyph1-17" x="457.220703" y="393.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="406.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="406.375"/>
+  <use xlink:href="#glyph1-18" x="389.00293" y="406.375"/>
+  <use xlink:href="#glyph1-19" x="394.793945" y="406.375"/>
+  <use xlink:href="#glyph1-9" x="400.711914" y="406.375"/>
+  <use xlink:href="#glyph1-12" x="410.453125" y="406.375"/>
+  <use xlink:href="#glyph1-3" x="415.453125" y="406.375"/>
+  <use xlink:href="#glyph1-4" x="420.951172" y="406.375"/>
+  <use xlink:href="#glyph1-5" x="427.069336" y="406.375"/>
+  <use xlink:href="#glyph1-6" x="433.407227" y="406.375"/>
+  <use xlink:href="#glyph1-12" x="436.927734" y="406.375"/>
+  <use xlink:href="#glyph1-6" x="441.927734" y="406.375"/>
+  <use xlink:href="#glyph1-7" x="445.448242" y="406.375"/>
+  <use xlink:href="#glyph1-20" x="448.226562" y="406.375"/>
+  <use xlink:href="#glyph1-17" x="451.004883" y="406.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="419.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="419.375"/>
+  <use xlink:href="#glyph1-12" x="389.00293" y="419.375"/>
+  <use xlink:href="#glyph1-19" x="394.00293" y="419.375"/>
+  <use xlink:href="#glyph1-24" x="399.920898" y="419.375"/>
+  <use xlink:href="#glyph1-20" x="406.048828" y="419.375"/>
+  <use xlink:href="#glyph1-23" x="408.827148" y="419.375"/>
+  <use xlink:href="#glyph1-17" x="415.165039" y="419.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="432.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="432.375"/>
+  <use xlink:href="#glyph1-18" x="389.00293" y="432.375"/>
+  <use xlink:href="#glyph1-19" x="394.793945" y="432.375"/>
+  <use xlink:href="#glyph1-9" x="400.711914" y="432.375"/>
+  <use xlink:href="#glyph1-12" x="410.453125" y="432.375"/>
+  <use xlink:href="#glyph1-3" x="415.453125" y="432.375"/>
+  <use xlink:href="#glyph1-4" x="420.951172" y="432.375"/>
+  <use xlink:href="#glyph1-5" x="427.069336" y="432.375"/>
+  <use xlink:href="#glyph1-6" x="433.407227" y="432.375"/>
+  <use xlink:href="#glyph1-12" x="436.927734" y="432.375"/>
+  <use xlink:href="#glyph1-16" x="441.927734" y="432.375"/>
+  <use xlink:href="#glyph1-7" x="448.275391" y="432.375"/>
+  <use xlink:href="#glyph1-11" x="451.053711" y="432.375"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000868056 -0.00111369 L 175.590712 -0.00111369 " transform="matrix(1,0,0,1,372.444444,442.782364)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="455.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="455.375"/>
+  <use xlink:href="#glyph1-12" x="389.00293" y="455.375"/>
+  <use xlink:href="#glyph1-12" x="394.00293" y="455.375"/>
+  <use xlink:href="#glyph1-7" x="399.00293" y="455.375"/>
+  <use xlink:href="#glyph1-5" x="401.78125" y="455.375"/>
+  <use xlink:href="#glyph1-7" x="408.119141" y="455.375"/>
+  <use xlink:href="#glyph1-10" x="410.897461" y="455.375"/>
+  <use xlink:href="#glyph1-12" x="414.818359" y="455.375"/>
+  <use xlink:href="#glyph1-12" x="419.818359" y="455.375"/>
+  <use xlink:href="#glyph1-21" x="424.818359" y="455.375"/>
+  <use xlink:href="#glyph1-22" x="428.719727" y="455.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="468.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="468.375"/>
+  <use xlink:href="#glyph1-3" x="389.00293" y="468.375"/>
+  <use xlink:href="#glyph1-4" x="394.500977" y="468.375"/>
+  <use xlink:href="#glyph1-5" x="400.619141" y="468.375"/>
+  <use xlink:href="#glyph1-6" x="406.957031" y="468.375"/>
+  <use xlink:href="#glyph1-7" x="410.477539" y="468.375"/>
+  <use xlink:href="#glyph1-8" x="413.255859" y="468.375"/>
+  <use xlink:href="#glyph1-21" x="419.603516" y="468.375"/>
+  <use xlink:href="#glyph1-22" x="423.504883" y="468.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="481.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="481.375"/>
+  <use xlink:href="#glyph1-12" x="389.00293" y="481.375"/>
+  <use xlink:href="#glyph1-14" x="394.00293" y="481.375"/>
+  <use xlink:href="#glyph1-17" x="399.212891" y="481.375"/>
+  <use xlink:href="#glyph1-10" x="405.365234" y="481.375"/>
+  <use xlink:href="#glyph1-12" x="409.286133" y="481.375"/>
+  <use xlink:href="#glyph1-18" x="414.286133" y="481.375"/>
+  <use xlink:href="#glyph1-19" x="420.077148" y="481.375"/>
+  <use xlink:href="#glyph1-9" x="425.995117" y="481.375"/>
+  <use xlink:href="#glyph1-12" x="435.736328" y="481.375"/>
+  <use xlink:href="#glyph1-13" x="440.736328" y="481.375"/>
+  <use xlink:href="#glyph1-7" x="447.083984" y="481.375"/>
+  <use xlink:href="#glyph1-16" x="449.862305" y="481.375"/>
+  <use xlink:href="#glyph1-12" x="456.209961" y="481.375"/>
+  <use xlink:href="#glyph1-6" x="461.209961" y="481.375"/>
+  <use xlink:href="#glyph1-7" x="464.730469" y="481.375"/>
+  <use xlink:href="#glyph1-20" x="467.508789" y="481.375"/>
+  <use xlink:href="#glyph1-17" x="470.287109" y="481.375"/>
+  <use xlink:href="#glyph1-21" x="476.439453" y="481.375"/>
+  <use xlink:href="#glyph1-22" x="480.34082" y="481.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="494.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="494.375"/>
+  <use xlink:href="#glyph1-12" x="389.00293" y="494.375"/>
+  <use xlink:href="#glyph1-14" x="394.00293" y="494.375"/>
+  <use xlink:href="#glyph1-17" x="399.212891" y="494.375"/>
+  <use xlink:href="#glyph1-10" x="405.365234" y="494.375"/>
+  <use xlink:href="#glyph1-12" x="409.286133" y="494.375"/>
+  <use xlink:href="#glyph1-18" x="414.286133" y="494.375"/>
+  <use xlink:href="#glyph1-19" x="420.077148" y="494.375"/>
+  <use xlink:href="#glyph1-9" x="425.995117" y="494.375"/>
+  <use xlink:href="#glyph1-12" x="435.736328" y="494.375"/>
+  <use xlink:href="#glyph1-14" x="440.736328" y="494.375"/>
+  <use xlink:href="#glyph1-4" x="445.946289" y="494.375"/>
+  <use xlink:href="#glyph1-3" x="452.064453" y="494.375"/>
+  <use xlink:href="#glyph1-18" x="457.5625" y="494.375"/>
+  <use xlink:href="#glyph1-17" x="463.353516" y="494.375"/>
+  <use xlink:href="#glyph1-10" x="469.505859" y="494.375"/>
+  <use xlink:href="#glyph1-12" x="473.426758" y="494.375"/>
+  <use xlink:href="#glyph1-6" x="478.426758" y="494.375"/>
+  <use xlink:href="#glyph1-7" x="481.947266" y="494.375"/>
+  <use xlink:href="#glyph1-20" x="484.725586" y="494.375"/>
+  <use xlink:href="#glyph1-17" x="487.503906" y="494.375"/>
+  <use xlink:href="#glyph1-21" x="493.65625" y="494.375"/>
+  <use xlink:href="#glyph1-22" x="497.557617" y="494.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="507.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="507.375"/>
+  <use xlink:href="#glyph1-12" x="389.00293" y="507.375"/>
+  <use xlink:href="#glyph1-14" x="394.00293" y="507.375"/>
+  <use xlink:href="#glyph1-17" x="399.212891" y="507.375"/>
+  <use xlink:href="#glyph1-10" x="405.365234" y="507.375"/>
+  <use xlink:href="#glyph1-12" x="409.286133" y="507.375"/>
+  <use xlink:href="#glyph1-18" x="414.286133" y="507.375"/>
+  <use xlink:href="#glyph1-19" x="420.077148" y="507.375"/>
+  <use xlink:href="#glyph1-9" x="425.995117" y="507.375"/>
+  <use xlink:href="#glyph1-12" x="435.736328" y="507.375"/>
+  <use xlink:href="#glyph1-14" x="440.736328" y="507.375"/>
+  <use xlink:href="#glyph1-3" x="445.946289" y="507.375"/>
+  <use xlink:href="#glyph1-11" x="451.444336" y="507.375"/>
+  <use xlink:href="#glyph1-7" x="455.555664" y="507.375"/>
+  <use xlink:href="#glyph1-13" x="458.333984" y="507.375"/>
+  <use xlink:href="#glyph1-10" x="464.681641" y="507.375"/>
+  <use xlink:href="#glyph1-12" x="468.602539" y="507.375"/>
+  <use xlink:href="#glyph1-16" x="473.602539" y="507.375"/>
+  <use xlink:href="#glyph1-7" x="479.950195" y="507.375"/>
+  <use xlink:href="#glyph1-11" x="482.728516" y="507.375"/>
+  <use xlink:href="#glyph1-21" x="486.839844" y="507.375"/>
+  <use xlink:href="#glyph1-22" x="490.741211" y="507.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="520.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="520.375"/>
+  <use xlink:href="#glyph1-12" x="389.00293" y="520.375"/>
+  <use xlink:href="#glyph1-14" x="394.00293" y="520.375"/>
+  <use xlink:href="#glyph1-17" x="399.212891" y="520.375"/>
+  <use xlink:href="#glyph1-10" x="405.365234" y="520.375"/>
+  <use xlink:href="#glyph1-12" x="409.286133" y="520.375"/>
+  <use xlink:href="#glyph1-18" x="414.286133" y="520.375"/>
+  <use xlink:href="#glyph1-19" x="420.077148" y="520.375"/>
+  <use xlink:href="#glyph1-9" x="425.995117" y="520.375"/>
+  <use xlink:href="#glyph1-12" x="435.736328" y="520.375"/>
+  <use xlink:href="#glyph1-3" x="440.736328" y="520.375"/>
+  <use xlink:href="#glyph1-4" x="446.234375" y="520.375"/>
+  <use xlink:href="#glyph1-5" x="452.352539" y="520.375"/>
+  <use xlink:href="#glyph1-6" x="458.69043" y="520.375"/>
+  <use xlink:href="#glyph1-12" x="462.210938" y="520.375"/>
+  <use xlink:href="#glyph1-16" x="467.210938" y="520.375"/>
+  <use xlink:href="#glyph1-7" x="473.558594" y="520.375"/>
+  <use xlink:href="#glyph1-11" x="476.336914" y="520.375"/>
+  <use xlink:href="#glyph1-21" x="480.448242" y="520.375"/>
+  <use xlink:href="#glyph1-22" x="484.349609" y="520.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="533.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="533.375"/>
+  <use xlink:href="#glyph1-12" x="389.00293" y="533.375"/>
+  <use xlink:href="#glyph1-14" x="394.00293" y="533.375"/>
+  <use xlink:href="#glyph1-17" x="399.212891" y="533.375"/>
+  <use xlink:href="#glyph1-10" x="405.365234" y="533.375"/>
+  <use xlink:href="#glyph1-12" x="409.286133" y="533.375"/>
+  <use xlink:href="#glyph1-18" x="414.286133" y="533.375"/>
+  <use xlink:href="#glyph1-19" x="420.077148" y="533.375"/>
+  <use xlink:href="#glyph1-9" x="425.995117" y="533.375"/>
+  <use xlink:href="#glyph1-12" x="435.736328" y="533.375"/>
+  <use xlink:href="#glyph1-3" x="440.736328" y="533.375"/>
+  <use xlink:href="#glyph1-4" x="446.234375" y="533.375"/>
+  <use xlink:href="#glyph1-5" x="452.352539" y="533.375"/>
+  <use xlink:href="#glyph1-6" x="458.69043" y="533.375"/>
+  <use xlink:href="#glyph1-12" x="462.210938" y="533.375"/>
+  <use xlink:href="#glyph1-6" x="467.210938" y="533.375"/>
+  <use xlink:href="#glyph1-7" x="470.731445" y="533.375"/>
+  <use xlink:href="#glyph1-20" x="473.509766" y="533.375"/>
+  <use xlink:href="#glyph1-17" x="476.288086" y="533.375"/>
+  <use xlink:href="#glyph1-21" x="482.44043" y="533.375"/>
+  <use xlink:href="#glyph1-22" x="486.341797" y="533.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="546.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="546.375"/>
+  <use xlink:href="#glyph1-12" x="389.00293" y="546.375"/>
+  <use xlink:href="#glyph1-14" x="394.00293" y="546.375"/>
+  <use xlink:href="#glyph1-17" x="399.212891" y="546.375"/>
+  <use xlink:href="#glyph1-10" x="405.365234" y="546.375"/>
+  <use xlink:href="#glyph1-12" x="409.286133" y="546.375"/>
+  <use xlink:href="#glyph1-18" x="414.286133" y="546.375"/>
+  <use xlink:href="#glyph1-19" x="420.077148" y="546.375"/>
+  <use xlink:href="#glyph1-9" x="425.995117" y="546.375"/>
+  <use xlink:href="#glyph1-12" x="435.736328" y="546.375"/>
+  <use xlink:href="#glyph1-16" x="440.736328" y="546.375"/>
+  <use xlink:href="#glyph1-4" x="447.083984" y="546.375"/>
+  <use xlink:href="#glyph1-9" x="453.202148" y="546.375"/>
+  <use xlink:href="#glyph1-24" x="462.943359" y="546.375"/>
+  <use xlink:href="#glyph1-7" x="469.071289" y="546.375"/>
+  <use xlink:href="#glyph1-5" x="471.849609" y="546.375"/>
+  <use xlink:href="#glyph1-12" x="478.1875" y="546.375"/>
+  <use xlink:href="#glyph1-16" x="483.1875" y="546.375"/>
+  <use xlink:href="#glyph1-7" x="489.535156" y="546.375"/>
+  <use xlink:href="#glyph1-11" x="492.313477" y="546.375"/>
+  <use xlink:href="#glyph1-21" x="496.424805" y="546.375"/>
+  <use xlink:href="#glyph1-22" x="500.326172" y="546.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="559.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="559.375"/>
+  <use xlink:href="#glyph1-12" x="389.00293" y="559.375"/>
+  <use xlink:href="#glyph1-14" x="394.00293" y="559.375"/>
+  <use xlink:href="#glyph1-17" x="399.212891" y="559.375"/>
+  <use xlink:href="#glyph1-10" x="405.365234" y="559.375"/>
+  <use xlink:href="#glyph1-12" x="409.286133" y="559.375"/>
+  <use xlink:href="#glyph1-18" x="414.286133" y="559.375"/>
+  <use xlink:href="#glyph1-19" x="420.077148" y="559.375"/>
+  <use xlink:href="#glyph1-9" x="425.995117" y="559.375"/>
+  <use xlink:href="#glyph1-12" x="435.736328" y="559.375"/>
+  <use xlink:href="#glyph1-16" x="440.736328" y="559.375"/>
+  <use xlink:href="#glyph1-4" x="447.083984" y="559.375"/>
+  <use xlink:href="#glyph1-9" x="453.202148" y="559.375"/>
+  <use xlink:href="#glyph1-24" x="462.943359" y="559.375"/>
+  <use xlink:href="#glyph1-7" x="469.071289" y="559.375"/>
+  <use xlink:href="#glyph1-5" x="471.849609" y="559.375"/>
+  <use xlink:href="#glyph1-12" x="478.1875" y="559.375"/>
+  <use xlink:href="#glyph1-5" x="483.1875" y="559.375"/>
+  <use xlink:href="#glyph1-24" x="489.525391" y="559.375"/>
+  <use xlink:href="#glyph1-9" x="495.65332" y="559.375"/>
+  <use xlink:href="#glyph1-17" x="505.394531" y="559.375"/>
+  <use xlink:href="#glyph1-12" x="511.546875" y="559.375"/>
+  <use xlink:href="#glyph1-24" x="516.546875" y="559.375"/>
+  <use xlink:href="#glyph1-20" x="522.674805" y="559.375"/>
+  <use xlink:href="#glyph1-20" x="525.453125" y="559.375"/>
+  <use xlink:href="#glyph1-21" x="528.231445" y="559.375"/>
+  <use xlink:href="#glyph1-22" x="532.132812" y="559.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="572.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="572.375"/>
+  <use xlink:href="#glyph1-12" x="389.00293" y="572.375"/>
+  <use xlink:href="#glyph1-14" x="394.00293" y="572.375"/>
+  <use xlink:href="#glyph1-17" x="399.212891" y="572.375"/>
+  <use xlink:href="#glyph1-10" x="405.365234" y="572.375"/>
+  <use xlink:href="#glyph1-21" x="409.286133" y="572.375"/>
+  <use xlink:href="#glyph1-22" x="413.1875" y="572.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="377.445312" y="585.375"/>
+  <use xlink:href="#glyph1-2" x="385.824219" y="585.375"/>
+  <use xlink:href="#glyph1-12" x="389.00293" y="585.375"/>
+  <use xlink:href="#glyph1-8" x="394.00293" y="585.375"/>
+  <use xlink:href="#glyph1-17" x="400.350586" y="585.375"/>
+  <use xlink:href="#glyph1-10" x="406.50293" y="585.375"/>
+  <use xlink:href="#glyph1-21" x="410.423828" y="585.375"/>
+  <use xlink:href="#glyph1-22" x="414.325195" y="585.375"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-25" x="210.15625" y="24.933594"/>
+  <use xlink:href="#glyph0-26" x="217.895508" y="24.933594"/>
+  <use xlink:href="#glyph0-15" x="223.823242" y="24.933594"/>
+  <use xlink:href="#glyph0-3" x="228.603516" y="24.933594"/>
+  <use xlink:href="#glyph0-7" x="232.03125" y="24.933594"/>
+  <use xlink:href="#glyph0-8" x="238.901367" y="24.933594"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 91.90842 17.734563 " transform="matrix(1,0,0,1,154.111111,7.19903)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.00173611 0.000188398 L 148.092014 0.000188398 L 148.092014 231.000188 L -0.00173611 231.000188 Z M -0.00173611 0.000188398 " transform="matrix(1,0,0,1,154.111111,7.19903)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.00173611 0.000188398 L 148.092014 0.000188398 " transform="matrix(1,0,0,1,154.111111,36.19903)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="159.109375" y="48.792969"/>
+  <use xlink:href="#glyph1-2" x="167.488281" y="48.792969"/>
+  <use xlink:href="#glyph1-18" x="170.666992" y="48.792969"/>
+  <use xlink:href="#glyph1-19" x="176.458008" y="48.792969"/>
+  <use xlink:href="#glyph1-9" x="182.375977" y="48.792969"/>
+  <use xlink:href="#glyph1-12" x="192.117188" y="48.792969"/>
+  <use xlink:href="#glyph1-17" x="197.117188" y="48.792969"/>
+  <use xlink:href="#glyph1-11" x="203.269531" y="48.792969"/>
+  <use xlink:href="#glyph1-11" x="207.380859" y="48.792969"/>
+  <use xlink:href="#glyph1-4" x="211.492188" y="48.792969"/>
+  <use xlink:href="#glyph1-11" x="217.610352" y="48.792969"/>
+  <use xlink:href="#glyph1-14" x="221.72168" y="48.792969"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.00173611 0.000188398 L 148.092014 0.000188398 " transform="matrix(1,0,0,1,154.111111,59.19903)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="159.109375" y="71.792969"/>
+  <use xlink:href="#glyph1-2" x="167.488281" y="71.792969"/>
+  <use xlink:href="#glyph1-12" x="170.666992" y="71.792969"/>
+  <use xlink:href="#glyph1-12" x="175.666992" y="71.792969"/>
+  <use xlink:href="#glyph1-7" x="180.666992" y="71.792969"/>
+  <use xlink:href="#glyph1-5" x="183.445312" y="71.792969"/>
+  <use xlink:href="#glyph1-7" x="189.783203" y="71.792969"/>
+  <use xlink:href="#glyph1-10" x="192.561523" y="71.792969"/>
+  <use xlink:href="#glyph1-12" x="196.482422" y="71.792969"/>
+  <use xlink:href="#glyph1-12" x="201.482422" y="71.792969"/>
+  <use xlink:href="#glyph1-21" x="206.482422" y="71.792969"/>
+  <use xlink:href="#glyph1-22" x="210.383789" y="71.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="159.109375" y="84.792969"/>
+  <use xlink:href="#glyph1-2" x="167.488281" y="84.792969"/>
+  <use xlink:href="#glyph1-18" x="170.666992" y="84.792969"/>
+  <use xlink:href="#glyph1-19" x="176.458008" y="84.792969"/>
+  <use xlink:href="#glyph1-9" x="182.375977" y="84.792969"/>
+  <use xlink:href="#glyph1-12" x="192.117188" y="84.792969"/>
+  <use xlink:href="#glyph1-17" x="197.117188" y="84.792969"/>
+  <use xlink:href="#glyph1-11" x="203.269531" y="84.792969"/>
+  <use xlink:href="#glyph1-11" x="207.380859" y="84.792969"/>
+  <use xlink:href="#glyph1-4" x="211.492188" y="84.792969"/>
+  <use xlink:href="#glyph1-11" x="217.610352" y="84.792969"/>
+  <use xlink:href="#glyph1-21" x="221.72168" y="84.792969"/>
+  <use xlink:href="#glyph1-22" x="225.623047" y="84.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="159.109375" y="97.792969"/>
+  <use xlink:href="#glyph1-2" x="167.488281" y="97.792969"/>
+  <use xlink:href="#glyph1-24" x="170.666992" y="97.792969"/>
+  <use xlink:href="#glyph1-19" x="176.794922" y="97.792969"/>
+  <use xlink:href="#glyph1-24" x="182.712891" y="97.792969"/>
+  <use xlink:href="#glyph1-7" x="188.84082" y="97.792969"/>
+  <use xlink:href="#glyph1-20" x="191.619141" y="97.792969"/>
+  <use xlink:href="#glyph1-24" x="194.397461" y="97.792969"/>
+  <use xlink:href="#glyph1-15" x="200.525391" y="97.792969"/>
+  <use xlink:href="#glyph1-20" x="206.873047" y="97.792969"/>
+  <use xlink:href="#glyph1-17" x="209.651367" y="97.792969"/>
+  <use xlink:href="#glyph1-12" x="215.803711" y="97.792969"/>
+  <use xlink:href="#glyph1-24" x="220.803711" y="97.792969"/>
+  <use xlink:href="#glyph1-3" x="226.931641" y="97.792969"/>
+  <use xlink:href="#glyph1-10" x="232.429688" y="97.792969"/>
+  <use xlink:href="#glyph1-7" x="236.350586" y="97.792969"/>
+  <use xlink:href="#glyph1-4" x="239.128906" y="97.792969"/>
+  <use xlink:href="#glyph1-5" x="245.24707" y="97.792969"/>
+  <use xlink:href="#glyph1-14" x="251.584961" y="97.792969"/>
+  <use xlink:href="#glyph1-21" x="256.794922" y="97.792969"/>
+  <use xlink:href="#glyph1-22" x="260.696289" y="97.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="159.109375" y="110.792969"/>
+  <use xlink:href="#glyph1-2" x="167.488281" y="110.792969"/>
+  <use xlink:href="#glyph1-18" x="170.666992" y="110.792969"/>
+  <use xlink:href="#glyph1-19" x="176.458008" y="110.792969"/>
+  <use xlink:href="#glyph1-9" x="182.375977" y="110.792969"/>
+  <use xlink:href="#glyph1-12" x="192.117188" y="110.792969"/>
+  <use xlink:href="#glyph1-14" x="197.117188" y="110.792969"/>
+  <use xlink:href="#glyph1-29" x="202.327148" y="110.792969"/>
+  <use xlink:href="#glyph1-4" x="208.665039" y="110.792969"/>
+  <use xlink:href="#glyph1-27" x="214.783203" y="110.792969"/>
+  <use xlink:href="#glyph1-12" x="222.961914" y="110.792969"/>
+  <use xlink:href="#glyph1-24" x="227.961914" y="110.792969"/>
+  <use xlink:href="#glyph1-3" x="234.089844" y="110.792969"/>
+  <use xlink:href="#glyph1-10" x="239.587891" y="110.792969"/>
+  <use xlink:href="#glyph1-7" x="243.508789" y="110.792969"/>
+  <use xlink:href="#glyph1-4" x="246.287109" y="110.792969"/>
+  <use xlink:href="#glyph1-5" x="252.405273" y="110.792969"/>
+  <use xlink:href="#glyph1-21" x="258.743164" y="110.792969"/>
+  <use xlink:href="#glyph1-22" x="262.644531" y="110.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="159.109375" y="123.792969"/>
+  <use xlink:href="#glyph1-2" x="167.488281" y="123.792969"/>
+  <use xlink:href="#glyph1-18" x="170.666992" y="123.792969"/>
+  <use xlink:href="#glyph1-19" x="176.458008" y="123.792969"/>
+  <use xlink:href="#glyph1-9" x="182.375977" y="123.792969"/>
+  <use xlink:href="#glyph1-12" x="192.117188" y="123.792969"/>
+  <use xlink:href="#glyph1-9" x="197.117188" y="123.792969"/>
+  <use xlink:href="#glyph1-4" x="206.858398" y="123.792969"/>
+  <use xlink:href="#glyph1-16" x="212.976562" y="123.792969"/>
+  <use xlink:href="#glyph1-7" x="219.324219" y="123.792969"/>
+  <use xlink:href="#glyph1-6" x="222.102539" y="123.792969"/>
+  <use xlink:href="#glyph1-25" x="225.623047" y="123.792969"/>
+  <use xlink:href="#glyph1-12" x="231.541016" y="123.792969"/>
+  <use xlink:href="#glyph1-24" x="236.541016" y="123.792969"/>
+  <use xlink:href="#glyph1-3" x="242.668945" y="123.792969"/>
+  <use xlink:href="#glyph1-10" x="248.166992" y="123.792969"/>
+  <use xlink:href="#glyph1-7" x="252.087891" y="123.792969"/>
+  <use xlink:href="#glyph1-4" x="254.866211" y="123.792969"/>
+  <use xlink:href="#glyph1-5" x="260.984375" y="123.792969"/>
+  <use xlink:href="#glyph1-21" x="267.322266" y="123.792969"/>
+  <use xlink:href="#glyph1-22" x="271.223633" y="123.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="159.109375" y="136.792969"/>
+  <use xlink:href="#glyph1-2" x="167.488281" y="136.792969"/>
+  <use xlink:href="#glyph1-18" x="170.666992" y="136.792969"/>
+  <use xlink:href="#glyph1-19" x="176.458008" y="136.792969"/>
+  <use xlink:href="#glyph1-9" x="182.375977" y="136.792969"/>
+  <use xlink:href="#glyph1-12" x="192.117188" y="136.792969"/>
+  <use xlink:href="#glyph1-3" x="197.117188" y="136.792969"/>
+  <use xlink:href="#glyph1-11" x="202.615234" y="136.792969"/>
+  <use xlink:href="#glyph1-17" x="206.726562" y="136.792969"/>
+  <use xlink:href="#glyph1-24" x="212.878906" y="136.792969"/>
+  <use xlink:href="#glyph1-10" x="219.006836" y="136.792969"/>
+  <use xlink:href="#glyph1-17" x="222.927734" y="136.792969"/>
+  <use xlink:href="#glyph1-12" x="229.080078" y="136.792969"/>
+  <use xlink:href="#glyph1-24" x="234.080078" y="136.792969"/>
+  <use xlink:href="#glyph1-3" x="240.208008" y="136.792969"/>
+  <use xlink:href="#glyph1-10" x="245.706055" y="136.792969"/>
+  <use xlink:href="#glyph1-7" x="249.626953" y="136.792969"/>
+  <use xlink:href="#glyph1-4" x="252.405273" y="136.792969"/>
+  <use xlink:href="#glyph1-5" x="258.523438" y="136.792969"/>
+  <use xlink:href="#glyph1-21" x="264.861328" y="136.792969"/>
+  <use xlink:href="#glyph1-22" x="268.762695" y="136.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="159.109375" y="149.792969"/>
+  <use xlink:href="#glyph1-2" x="167.488281" y="149.792969"/>
+  <use xlink:href="#glyph1-18" x="170.666992" y="149.792969"/>
+  <use xlink:href="#glyph1-19" x="176.458008" y="149.792969"/>
+  <use xlink:href="#glyph1-9" x="182.375977" y="149.792969"/>
+  <use xlink:href="#glyph1-12" x="192.117188" y="149.792969"/>
+  <use xlink:href="#glyph1-9" x="197.117188" y="149.792969"/>
+  <use xlink:href="#glyph1-7" x="206.858398" y="149.792969"/>
+  <use xlink:href="#glyph1-8" x="209.636719" y="149.792969"/>
+  <use xlink:href="#glyph1-11" x="215.984375" y="149.792969"/>
+  <use xlink:href="#glyph1-24" x="220.095703" y="149.792969"/>
+  <use xlink:href="#glyph1-10" x="226.223633" y="149.792969"/>
+  <use xlink:href="#glyph1-17" x="230.144531" y="149.792969"/>
+  <use xlink:href="#glyph1-12" x="236.296875" y="149.792969"/>
+  <use xlink:href="#glyph1-24" x="241.296875" y="149.792969"/>
+  <use xlink:href="#glyph1-3" x="247.424805" y="149.792969"/>
+  <use xlink:href="#glyph1-10" x="252.922852" y="149.792969"/>
+  <use xlink:href="#glyph1-7" x="256.84375" y="149.792969"/>
+  <use xlink:href="#glyph1-4" x="259.62207" y="149.792969"/>
+  <use xlink:href="#glyph1-5" x="265.740234" y="149.792969"/>
+  <use xlink:href="#glyph1-21" x="272.078125" y="149.792969"/>
+  <use xlink:href="#glyph1-22" x="275.979492" y="149.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="159.109375" y="162.792969"/>
+  <use xlink:href="#glyph1-2" x="167.488281" y="162.792969"/>
+  <use xlink:href="#glyph1-18" x="170.666992" y="162.792969"/>
+  <use xlink:href="#glyph1-19" x="176.458008" y="162.792969"/>
+  <use xlink:href="#glyph1-9" x="182.375977" y="162.792969"/>
+  <use xlink:href="#glyph1-12" x="192.117188" y="162.792969"/>
+  <use xlink:href="#glyph1-9" x="197.117188" y="162.792969"/>
+  <use xlink:href="#glyph1-4" x="206.858398" y="162.792969"/>
+  <use xlink:href="#glyph1-5" x="212.976562" y="162.792969"/>
+  <use xlink:href="#glyph1-7" x="219.314453" y="162.792969"/>
+  <use xlink:href="#glyph1-10" x="222.092773" y="162.792969"/>
+  <use xlink:href="#glyph1-4" x="226.013672" y="162.792969"/>
+  <use xlink:href="#glyph1-11" x="232.131836" y="162.792969"/>
+  <use xlink:href="#glyph1-12" x="236.243164" y="162.792969"/>
+  <use xlink:href="#glyph1-24" x="241.243164" y="162.792969"/>
+  <use xlink:href="#glyph1-3" x="247.371094" y="162.792969"/>
+  <use xlink:href="#glyph1-10" x="252.869141" y="162.792969"/>
+  <use xlink:href="#glyph1-7" x="256.790039" y="162.792969"/>
+  <use xlink:href="#glyph1-4" x="259.568359" y="162.792969"/>
+  <use xlink:href="#glyph1-5" x="265.686523" y="162.792969"/>
+  <use xlink:href="#glyph1-21" x="272.024414" y="162.792969"/>
+  <use xlink:href="#glyph1-22" x="275.925781" y="162.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="159.109375" y="175.792969"/>
+  <use xlink:href="#glyph1-2" x="167.488281" y="175.792969"/>
+  <use xlink:href="#glyph1-18" x="170.666992" y="175.792969"/>
+  <use xlink:href="#glyph1-19" x="176.458008" y="175.792969"/>
+  <use xlink:href="#glyph1-9" x="182.375977" y="175.792969"/>
+  <use xlink:href="#glyph1-12" x="192.117188" y="175.792969"/>
+  <use xlink:href="#glyph1-15" x="197.117188" y="175.792969"/>
+  <use xlink:href="#glyph1-4" x="203.464844" y="175.792969"/>
+  <use xlink:href="#glyph1-4" x="209.583008" y="175.792969"/>
+  <use xlink:href="#glyph1-10" x="215.701172" y="175.792969"/>
+  <use xlink:href="#glyph1-12" x="219.62207" y="175.792969"/>
+  <use xlink:href="#glyph1-24" x="224.62207" y="175.792969"/>
+  <use xlink:href="#glyph1-3" x="230.75" y="175.792969"/>
+  <use xlink:href="#glyph1-10" x="236.248047" y="175.792969"/>
+  <use xlink:href="#glyph1-7" x="240.168945" y="175.792969"/>
+  <use xlink:href="#glyph1-4" x="242.947266" y="175.792969"/>
+  <use xlink:href="#glyph1-5" x="249.06543" y="175.792969"/>
+  <use xlink:href="#glyph1-21" x="255.40332" y="175.792969"/>
+  <use xlink:href="#glyph1-22" x="259.304688" y="175.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="159.109375" y="188.792969"/>
+  <use xlink:href="#glyph1-2" x="167.488281" y="188.792969"/>
+  <use xlink:href="#glyph1-18" x="170.666992" y="188.792969"/>
+  <use xlink:href="#glyph1-19" x="176.458008" y="188.792969"/>
+  <use xlink:href="#glyph1-9" x="182.375977" y="188.792969"/>
+  <use xlink:href="#glyph1-12" x="192.117188" y="188.792969"/>
+  <use xlink:href="#glyph1-11" x="197.117188" y="188.792969"/>
+  <use xlink:href="#glyph1-17" x="201.228516" y="188.792969"/>
+  <use xlink:href="#glyph1-15" x="207.380859" y="188.792969"/>
+  <use xlink:href="#glyph1-4" x="213.728516" y="188.792969"/>
+  <use xlink:href="#glyph1-4" x="219.84668" y="188.792969"/>
+  <use xlink:href="#glyph1-10" x="225.964844" y="188.792969"/>
+  <use xlink:href="#glyph1-12" x="229.885742" y="188.792969"/>
+  <use xlink:href="#glyph1-24" x="234.885742" y="188.792969"/>
+  <use xlink:href="#glyph1-3" x="241.013672" y="188.792969"/>
+  <use xlink:href="#glyph1-10" x="246.511719" y="188.792969"/>
+  <use xlink:href="#glyph1-7" x="250.432617" y="188.792969"/>
+  <use xlink:href="#glyph1-4" x="253.210938" y="188.792969"/>
+  <use xlink:href="#glyph1-5" x="259.329102" y="188.792969"/>
+  <use xlink:href="#glyph1-21" x="265.666992" y="188.792969"/>
+  <use xlink:href="#glyph1-22" x="269.568359" y="188.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="159.109375" y="201.792969"/>
+  <use xlink:href="#glyph1-2" x="167.488281" y="201.792969"/>
+  <use xlink:href="#glyph1-18" x="170.666992" y="201.792969"/>
+  <use xlink:href="#glyph1-19" x="176.458008" y="201.792969"/>
+  <use xlink:href="#glyph1-9" x="182.375977" y="201.792969"/>
+  <use xlink:href="#glyph1-12" x="192.117188" y="201.792969"/>
+  <use xlink:href="#glyph1-14" x="197.117188" y="201.792969"/>
+  <use xlink:href="#glyph1-29" x="202.327148" y="201.792969"/>
+  <use xlink:href="#glyph1-23" x="208.665039" y="201.792969"/>
+  <use xlink:href="#glyph1-10" x="215.00293" y="201.792969"/>
+  <use xlink:href="#glyph1-16" x="218.923828" y="201.792969"/>
+  <use xlink:href="#glyph1-4" x="225.271484" y="201.792969"/>
+  <use xlink:href="#glyph1-27" x="231.389648" y="201.792969"/>
+  <use xlink:href="#glyph1-5" x="239.568359" y="201.792969"/>
+  <use xlink:href="#glyph1-12" x="245.90625" y="201.792969"/>
+  <use xlink:href="#glyph1-24" x="250.90625" y="201.792969"/>
+  <use xlink:href="#glyph1-3" x="257.03418" y="201.792969"/>
+  <use xlink:href="#glyph1-10" x="262.532227" y="201.792969"/>
+  <use xlink:href="#glyph1-7" x="266.453125" y="201.792969"/>
+  <use xlink:href="#glyph1-4" x="269.231445" y="201.792969"/>
+  <use xlink:href="#glyph1-5" x="275.349609" y="201.792969"/>
+  <use xlink:href="#glyph1-21" x="281.6875" y="201.792969"/>
+  <use xlink:href="#glyph1-22" x="285.588867" y="201.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="159.109375" y="214.792969"/>
+  <use xlink:href="#glyph1-2" x="167.488281" y="214.792969"/>
+  <use xlink:href="#glyph1-18" x="170.666992" y="214.792969"/>
+  <use xlink:href="#glyph1-19" x="176.458008" y="214.792969"/>
+  <use xlink:href="#glyph1-9" x="182.375977" y="214.792969"/>
+  <use xlink:href="#glyph1-12" x="192.117188" y="214.792969"/>
+  <use xlink:href="#glyph1-18" x="197.117188" y="214.792969"/>
+  <use xlink:href="#glyph1-7" x="202.908203" y="214.792969"/>
+  <use xlink:href="#glyph1-20" x="205.686523" y="214.792969"/>
+  <use xlink:href="#glyph1-20" x="208.464844" y="214.792969"/>
+  <use xlink:href="#glyph1-12" x="211.243164" y="214.792969"/>
+  <use xlink:href="#glyph1-24" x="216.243164" y="214.792969"/>
+  <use xlink:href="#glyph1-3" x="222.371094" y="214.792969"/>
+  <use xlink:href="#glyph1-10" x="227.869141" y="214.792969"/>
+  <use xlink:href="#glyph1-7" x="231.790039" y="214.792969"/>
+  <use xlink:href="#glyph1-4" x="234.568359" y="214.792969"/>
+  <use xlink:href="#glyph1-5" x="240.686523" y="214.792969"/>
+  <use xlink:href="#glyph1-21" x="247.024414" y="214.792969"/>
+  <use xlink:href="#glyph1-22" x="250.925781" y="214.792969"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="159.109375" y="227.792969"/>
+  <use xlink:href="#glyph1-2" x="167.488281" y="227.792969"/>
+  <use xlink:href="#glyph1-18" x="170.666992" y="227.792969"/>
+  <use xlink:href="#glyph1-19" x="176.458008" y="227.792969"/>
+  <use xlink:href="#glyph1-9" x="182.375977" y="227.792969"/>
+  <use xlink:href="#glyph1-12" x="192.117188" y="227.792969"/>
+  <use xlink:href="#glyph1-14" x="197.117188" y="227.792969"/>
+  <use xlink:href="#glyph1-10" x="202.327148" y="227.792969"/>
+  <use xlink:href="#glyph1-24" x="206.248047" y="227.792969"/>
+  <use xlink:href="#glyph1-10" x="212.375977" y="227.792969"/>
+  <use xlink:href="#glyph1-23" x="216.296875" y="227.792969"/>
+  <use xlink:href="#glyph1-14" x="222.634766" y="227.792969"/>
+  <use xlink:href="#glyph1-12" x="227.844727" y="227.792969"/>
+  <use xlink:href="#glyph1-24" x="232.844727" y="227.792969"/>
+  <use xlink:href="#glyph1-3" x="238.972656" y="227.792969"/>
+  <use xlink:href="#glyph1-10" x="244.470703" y="227.792969"/>
+  <use xlink:href="#glyph1-7" x="248.391602" y="227.792969"/>
+  <use xlink:href="#glyph1-4" x="251.169922" y="227.792969"/>
+  <use xlink:href="#glyph1-5" x="257.288086" y="227.792969"/>
+  <use xlink:href="#glyph1-21" x="263.625977" y="227.792969"/>
+  <use xlink:href="#glyph1-22" x="267.527344" y="227.792969"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.000736865 -0.000648368 L 14.999687 -9.998504 L 15.000932 10.002332 Z M -0.000736865 -0.000648368 " transform="matrix(0.892178,-0.451683,0.451683,0.892178,527.75095,665.476808)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 13.381862 -6.773683 L 77.526393 -39.250246 " transform="matrix(1,0,0,1,527.75095,665.476808)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.00125718 0.000642894 L 14.999837 -10.001543 L 14.99947 10.000646 Z M 0.00125718 0.000642894 " transform="matrix(0.188243,-0.982123,0.982123,0.188243,372.444444,271.782364)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2.825087 -14.731582 L 17.637587 -92.028457 " transform="matrix(1,0,0,1,372.444444,271.782364)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000248284 0.00130158 L 14.999418 -10.001952 L 15.001127 9.998086 Z M 0.000248284 0.00130158 " transform="matrix(0.00203856,-0.999998,0.999998,0.00203856,594.416667,432.226808)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.0286458 -15.000246 L 0.138021 -67.222902 " transform="matrix(1,0,0,1,594.416667,432.226808)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.00188994 -0.00169659 L 14.999239 -10.00049 L 15.001336 9.999788 Z M -0.00188994 -0.00169659 " transform="matrix(0.999986,0.00537824,-0.00537824,0.999986,278.037037,491.322019)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 14.998119 0.0803245 L 34.947338 0.1897 L 37.029369 143.244387 L 109.947338 143.244387 L 111.966869 104.459231 " transform="matrix(1,0,0,1,278.037037,491.322019)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.0013567 -0.00056279 L 14.999827 -10.000521 L 14.999569 10.001771 Z M 0.0013567 -0.00056279 " transform="matrix(-0.641538,-0.767091,0.767091,-0.641538,372.083333,92.754586)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -9.622396 -11.504586 L -69.880208 -83.555367 " transform="matrix(1,0,0,1,372.083333,92.754586)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.000466135 0.000177293 L 15.001162 -9.998143 L 15.0016 10.000656 Z M -0.000466135 0.000177293 " transform="matrix(-0.988539,0.150964,-0.150964,-0.988539,742.222222,139.476808)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -14.827691 2.265379 L -155.222222 23.702879 L -273.437066 40.277098 " transform="matrix(1,0,0,1,742.222222,139.476808)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.00147407 0.0000530334 L 14.999773 -9.997955 L 15.000812 10.001706 Z M 0.00147407 0.0000530334 " transform="matrix(-0.903509,-0.42857,0.42857,-0.903509,592.048184,268.004586)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -13.55209 -6.430367 L -186.048184 -88.25068 " transform="matrix(1,0,0,1,592.048184,268.004586)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.000266166 0.00105279 L 15.000798 -10.000952 L 15.001432 9.999525 Z M 0.000266166 0.00105279 " transform="matrix(0.409589,-0.91227,0.91227,0.409589,336.924712,269.19903)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.145601 -13.683405 L 40.157319 -89.445124 " transform="matrix(1,0,0,1,336.924712,269.19903)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.00191351 -0.000267671 L 14.999269 -10.001461 L 15.000628 10.000944 Z M 0.00191351 -0.000267671 " transform="matrix(-0.96471,-0.263315,0.263315,-0.96471,755.388635,267.476808)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -14.470666 -3.949464 L -321.388635 -87.722902 " transform="matrix(1,0,0,1,755.388635,267.476808)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph0-27" x="27.402344" y="24.074219"/>
+  <use xlink:href="#glyph0-28" x="35.151367" y="24.074219"/>
+  <use xlink:href="#glyph0-12" x="41.669922" y="24.074219"/>
+  <use xlink:href="#glyph0-25" x="52.089844" y="24.074219"/>
+  <use xlink:href="#glyph0-5" x="59.829102" y="24.074219"/>
+  <use xlink:href="#glyph0-12" x="66.987305" y="24.074219"/>
+  <use xlink:href="#glyph0-3" x="77.407227" y="24.074219"/>
+  <use xlink:href="#glyph0-8" x="80.834961" y="24.074219"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 81.953125 17.7363 " transform="matrix(1,0,0,1,6,6.337919)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.000000000000001776 0.00192451 L 103.804688 0.00192451 L 103.804688 115.89255 L -0.000000000000001776 115.89255 Z M -0.000000000000001776 0.00192451 " transform="matrix(1,0,0,1,6,6.337919)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.000000000000001776 0.00192451 L 103.804688 0.00192451 " transform="matrix(1,0,0,1,6,35.337919)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="11" y="47.933594"/>
+  <use xlink:href="#glyph1-2" x="19.378906" y="47.933594"/>
+  <use xlink:href="#glyph1-12" x="22.557617" y="47.933594"/>
+  <use xlink:href="#glyph1-24" x="27.557617" y="47.933594"/>
+  <use xlink:href="#glyph1-11" x="33.685547" y="47.933594"/>
+  <use xlink:href="#glyph1-8" x="37.796875" y="47.933594"/>
+  <use xlink:href="#glyph1-14" x="44.144531" y="47.933594"/>
+  <use xlink:href="#glyph1-12" x="49.354492" y="47.933594"/>
+  <use xlink:href="#glyph1-19" x="54.354492" y="47.933594"/>
+  <use xlink:href="#glyph1-24" x="60.272461" y="47.933594"/>
+  <use xlink:href="#glyph1-20" x="66.400391" y="47.933594"/>
+  <use xlink:href="#glyph1-23" x="69.178711" y="47.933594"/>
+  <use xlink:href="#glyph1-17" x="75.516602" y="47.933594"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.000000000000001776 0.00192451 L 103.804688 0.00192451 " transform="matrix(1,0,0,1,6,58.337919)"/>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="11" y="70.933594"/>
+  <use xlink:href="#glyph1-2" x="19.378906" y="70.933594"/>
+  <use xlink:href="#glyph1-11" x="22.557617" y="70.933594"/>
+  <use xlink:href="#glyph1-23" x="26.668945" y="70.933594"/>
+  <use xlink:href="#glyph1-5" x="33.006836" y="70.933594"/>
+  <use xlink:href="#glyph1-21" x="39.344727" y="70.933594"/>
+  <use xlink:href="#glyph1-22" x="43.246094" y="70.933594"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="11" y="82.933594"/>
+  <use xlink:href="#glyph1-2" x="19.378906" y="82.933594"/>
+  <use xlink:href="#glyph1-14" x="22.557617" y="82.933594"/>
+  <use xlink:href="#glyph1-29" x="27.767578" y="82.933594"/>
+  <use xlink:href="#glyph1-4" x="34.105469" y="82.933594"/>
+  <use xlink:href="#glyph1-27" x="40.223633" y="82.933594"/>
+  <use xlink:href="#glyph1-12" x="48.402344" y="82.933594"/>
+  <use xlink:href="#glyph1-17" x="53.402344" y="82.933594"/>
+  <use xlink:href="#glyph1-11" x="59.554688" y="82.933594"/>
+  <use xlink:href="#glyph1-11" x="63.666016" y="82.933594"/>
+  <use xlink:href="#glyph1-4" x="67.777344" y="82.933594"/>
+  <use xlink:href="#glyph1-11" x="73.895508" y="82.933594"/>
+  <use xlink:href="#glyph1-21" x="78.006836" y="82.933594"/>
+  <use xlink:href="#glyph1-22" x="81.908203" y="82.933594"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="11" y="95.933594"/>
+  <use xlink:href="#glyph1-2" x="19.378906" y="95.933594"/>
+  <use xlink:href="#glyph1-12" x="22.557617" y="95.933594"/>
+  <use xlink:href="#glyph1-14" x="27.557617" y="95.933594"/>
+  <use xlink:href="#glyph1-17" x="32.767578" y="95.933594"/>
+  <use xlink:href="#glyph1-10" x="38.919922" y="95.933594"/>
+  <use xlink:href="#glyph1-21" x="42.84082" y="95.933594"/>
+  <use xlink:href="#glyph1-7" x="46.742188" y="95.933594"/>
+  <use xlink:href="#glyph1-5" x="49.520508" y="95.933594"/>
+  <use xlink:href="#glyph1-2" x="55.858398" y="95.933594"/>
+  <use xlink:href="#glyph1-19" x="59.037109" y="95.933594"/>
+  <use xlink:href="#glyph1-24" x="64.955078" y="95.933594"/>
+  <use xlink:href="#glyph1-20" x="71.083008" y="95.933594"/>
+  <use xlink:href="#glyph1-23" x="73.861328" y="95.933594"/>
+  <use xlink:href="#glyph1-17" x="80.199219" y="95.933594"/>
+  <use xlink:href="#glyph1-22" x="86.351562" y="95.933594"/>
+</g>
+<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
+  <use xlink:href="#glyph1-1" x="11" y="108.933594"/>
+  <use xlink:href="#glyph1-2" x="19.378906" y="108.933594"/>
+  <use xlink:href="#glyph1-12" x="22.557617" y="108.933594"/>
+  <use xlink:href="#glyph1-8" x="27.557617" y="108.933594"/>
+  <use xlink:href="#glyph1-17" x="33.905273" y="108.933594"/>
+  <use xlink:href="#glyph1-10" x="40.057617" y="108.933594"/>
+  <use xlink:href="#glyph1-21" x="43.978516" y="108.933594"/>
+  <use xlink:href="#glyph1-22" x="47.879883" y="108.933594"/>
+</g>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.00171254 -0.00151751 L 14.999209 -9.999507 L 15.000128 9.999029 Z M 0.00171254 -0.00151751 " transform="matrix(-0.999877,-0.0156721,0.0156721,-0.999877,154.111111,11.115697)"/>
+<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -14.99783 -0.236791 L -44.306424 -0.693822 " transform="matrix(1,0,0,1,154.111111,11.115697)"/>
+</g>
+</svg>
--- a/kvmtools/__init__.py	Thu Nov 17 00:47:16 2011 +0100
+++ b/kvmtools/__init__.py	Wed Nov 23 04:33:55 2011 +0100
@@ -0,0 +1,14 @@
+try:
+    from kvmtools.qemu_kvm_options import qemu_kvm_options
+except ImportError:
+    import os
+    os.system("generate-kvm-options --generate")
+    try:
+        from kvmtools.qemu_kvm_options import qemu_kvm_options
+    except ImportError, error_msg:
+        import sys
+        print error_msg
+        sys.extit(1)
+        
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kvmtools/config/configtest.py	Wed Nov 23 04:33:55 2011 +0100
@@ -0,0 +1,46 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# Test for kvm guest config file
+#
+
+"""
+(c) 2007-2011 Jens Kasten <jens@kasten-edv.de>
+"""
+
+import os
+import argparse
+
+from kvmtools.configparser import Parser
+
+
+class TestConfig(object):
+    """kvm guest test config parser"""
+    
+    def show_result(self, config_file):
+        """Print the parsed config file."""
+        if not os.path.isfile(config_file):
+            print "Configfile does not exists: ", config_file
+            return
+        parser = Parser()
+        result = parser(config_file)
+        for key, value in result.iteritems():
+            print "%s=%s" % (key, value)
+
+
+def main():
+    """commandline usage"""
+    parser = argparse.ArgumentParser()
+    parser.add_argument("-c", "--config", metavar="kvm guest config file",
+        help="Absolute path for kvm guest config file.")
+    args = parser.parse_args()
+
+    if not args.config:
+        parser.print_usage()
+        return
+    config = TestConfig()
+    config.show_result(args.config)
+
+
+if __name__ == "__main__":
+    main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kvmtools/config/create_dialog.py	Wed Nov 23 04:33:55 2011 +0100
@@ -0,0 +1,172 @@
+#
+# Module to create an initial kvm-admin domain configuration file
+#
+
+"""
+(c) 2011 Jens Kasten <jens@kasten-edv.de>
+"""
+
+
+class CreateDialogConsole(object):
+    """Console dialog to create inital config file."""
+    
+    def create_dialog(self, open_type="r"):
+        """Methode to create a dialog for creating a domain config"""
+        with open(self.kvm_domain_file, open_type) as _fd:
+            name = raw_input("Name [%s]: " % self.kvm_domain_name)
+            if len(name) == 0:
+                _fd.write("name = %s\n" % self.kvm_domain_name)
+            else:
+                _fd.write("name = %s\n" % name)
+            # set memory 
+            print ("Total memory of the machine: %d" % \
+            self.total_memory())
+            while True:
+                memory = raw_input("Memory in MB [%d]: " % 128)
+                if len(memory) == 0:
+                    _fd.write("m = 128\t\t\t# system memory in megabyte\n")
+                    break
+                if memory == "q":
+                    break
+                try:
+                    memory = int(memory)
+                    if memory > self.total_memory():
+                        print ("Machine has not enough total memory %d." % \
+                            self.avail_memory())
+                        accept = raw_input("Should this value used? [Y/n]:").lower()
+                        if len(accept) == 0 or accept == "y":
+                            _fd.write("m = %d\t\t\t# system memory in megabyte\n" % \
+                                memory)
+                            break
+                   
+                    elif memory > self.avail_memory():
+                        print ("Machine has not enough available memory %d." % \
+                            self.avail_memory())
+                        accept = raw_input("Should this value used? [Y/n]:").lower()
+                        if len(accept) == 0 or accept == "y":
+                            _fd.write("m = %d\t# system memory in megabyte\n" % \
+                                memory)
+                            break
+                    else:
+                        _fd.write("m = %d\t# system memory in megabyte\n" % \
+                            memory)
+                        break
+                except ValueError:
+                    print ("Memory must give as a positive digit or type q to contiue.")
+            # set cdrom
+            is_cdrom = False
+            cdrom = raw_input("Would you like use a cdrom [Y/n]: ").lower()
+            if len(cdrom) == 0 or cdrom == "y":
+                if self.get_cdrom():
+                    cdrom_path = raw_input("Path to cdrom device [%s] press just enter or path to image: " \
+                        % self.get_cdrom())
+                else:
+                    print ("Could not found cdrom device.")
+                    while True:
+                        cdrom_path = raw_input("Path to iso image: ")
+                        if len(cdrom_path) == 0:
+                            print "Type q to continue."
+                        elif cdrom_path == "q" or len(cdrom_path) > 0:
+                            break
+                while True:
+                    if cdrom_path == "q":
+                        break
+                    if len(cdrom_path) == 0:
+                        is_cdrom = True
+                        cdrom_device = self.get_cdrom()
+                        if self.get_cdrom():
+                            _fd.write("cdrom = %s\t# path to cdrom or iso image\n" % \
+                                self.get_cdrom())
+                            break
+                        else:
+                            break
+                    else:
+                        is_cdrom = True
+                        _fd.write("cdrom = %s\t# path to cdrom or iso image\n" % cdrom_path)
+                        break
+                if is_cdrom:
+                    boot = raw_input("Would you like to boot the qemu-kvm guest from cdrom? [Y/n]")
+                    while True:
+                        if boot.lower() == "y" or len(boot) == 0:
+                            _fd.write("boot = cd\t# boot order harddrive and if not bootable then cdrom.\n")
+                            break
+                        else:
+                            _fd.write("boot = c\t# boot order harddrive and if not bootable then cdrom.\n")
+                            break
+            # set drive
+            drives = {}
+            while True:
+                print ("Available qemu-kvm device driver [ide,scsi,virtio].")
+                print ("Type q to continue without harddrive.")
+                driver = raw_input("default qemu-kvm device driver [virtio]: ")
+                if driver == "q":
+                    break
+                if driver in ["ide", "scsi", "virtio"]:
+                    break
+                elif len(driver) == 0:
+                    driver = "virtio"
+                    break
+            while True:
+                if driver == "q":
+                    break
+                drive_amount = raw_input("How many harddrives you are like to use [1]: ")
+                try:
+                    if drive_amount == "q":
+                        break
+                    elif len(drive_amount) == 0:
+                        drive_amount = 1
+                        break
+                    else:
+                        drive_amount = int(drive_amount)
+                        if drive_amount > 4:
+                            print "Its initial configuration. Max 4 devices cat set."
+                        else:
+                            break
+                except ValueError:
+                    print ("Amount of drive must a positive digit greater the null.")
+                    print ("Type q to continue without harddrive.")
+            while True:
+                if driver == "q":
+                    break
+                for i in range(1, drive_amount + 1):
+                    while True:
+                        drive = raw_input("Path to hardrive %d: " % i)
+                        if len(drive) > 0:
+                            drives[i] = {
+                                "file": drive, 
+                                "if": driver, 
+                                "index": i-1,
+                                "boot": "off",
+                                "cache": "none",
+                                "media": "disk",
+                            }
+                            break
+                break
+            if len(drives) > 1:
+                print ("From which device should boot: ")
+            while True:
+                if driver == "q":
+                    break
+                if len(drives) == 1:
+                    drives[1]["boot"] = "on"
+                    break
+                else:
+                    for key in drives.iterkeys():
+                        print "[%d] %s" % (key, drives[key]["file"])
+                    boot = raw_input("Index: ")
+                    if boot == "q":
+                        break
+                try:
+                    boot = int(boot)
+                    drives[boot]["boot"] = "on"
+                    break
+                except ValueError:
+                    print "Index have to a digit from list above."
+                    print "Type q to continue without set boot on for a harddrive."
+                except KeyError:
+                    print "Index not in list."
+            for key, value in drives.iteritems():
+                to_write = "drive = file=%s,index=%d,media=%s,cache=%s,boot=%s" % \
+                    (value["file"], value["index"], value["media"], 
+                     value["cache"], value["boot"])
+                _fd.write(to_write + "\n")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kvmtools/config/domain.py	Wed Nov 23 04:33:55 2011 +0100
@@ -0,0 +1,44 @@
+# 
+# Module which handle the domain config
+#
+
+"""
+(c) 2011 Jens Kasten <jens@kasten-edv.de>
+"""
+
+import os
+
+from kvmtools.config.set_config import SetConfig
+from kvmtools.config.create_dialog import CreateDialogConsole
+from kvmtools.kvm.build_command import BuildCommand
+from kvmtools.kvm.monitor import Monitor
+from kvmtools.kvm.system import System
+
+
+class Domain(SetConfig, CreateDialogConsole, BuildCommand, Monitor, System):
+    """Class domain handle the domain(guest) configuration."""
+
+    def __init__(self):
+        SetConfig.__init__(self)
+        CreateDialogConsole.__init__(self)
+        BuildCommand.__init__(self)
+        Monitor.__init__(self)
+        System.__init__(self)
+
+    def create(self):
+        """Create a minimalistic guest config file."""
+        print ("Creating the domain config file: %s" % self.kvm_domain_file)
+        self.create_dialog("w")
+        self.modify()
+
+    def modify(self):
+        """Edit a guest config file."""
+        if os.path.isfile(self.kvm_domain_file):
+            if os.access(self.kvm_domain_file, os.W_OK):
+                os.execl("/usr/bin/editor", "", self.kvm_domain_file)
+            else:
+                print ("Permission denied to write to %s" % \
+                    self.kvm_domain_file)
+        else:
+            self.create()
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kvmtools/config/parser.py	Wed Nov 23 04:33:55 2011 +0100
@@ -0,0 +1,114 @@
+#!/usr/bin/env python
+#
+# Parser to get content from a configfile.
+#
+# config file syntax:
+#       key = value
+#       #key = value    <- commented 
+#       key = value  # comment
+#
+
+"""
+(c) 2007-2011 Jens Kasten <jens@kasten-edv.de>
+"""
+
+import os
+import sys
+import re
+
+try:
+    from kvmtools.qemu_kvm_options import qemu_kvm_options
+except ImportError:
+    os.system("generate-kvm-options --generate")
+    try:
+        from kvmtools.qemu_kvm_options import qemu_kvm_options
+    except ImportError, error_msg:
+        print error_msg
+        sys.exit(1)
+
+class Parser(object):
+    """Simple config parser for kvm guest config file."""
+    
+    def _check_config_syntax(self, config_name):
+        """Return a cleaned dictionary from a befor readed config file."""
+        if not os.path.isfile(config_name):
+            return False
+        else:
+            counter = 1
+            config = []
+            with open(config_name) as fd:
+                lines = fd.readlines()
+                # remove withespace but not and arguments 
+                for line in lines:
+                    if len(line) > 1 and not line.startswith('#'):
+                        # split only the first equal sign form left side
+                        temp = line.strip().split("=", 1)
+                        # check for sign '=' 
+                        if len(temp) == 1:
+                            msg = "Missing sign '=' in %s on line %s" % \
+                                (config_name, counter)
+                            self.kvm_error(msg)
+                        # remove all withespace from string
+                        key = re.sub(r'\s', '', temp[0])
+                        if key not in self.exclude_options and key not in qemu_kvm_options:
+                            msg = "Not a qemu-kvm command: '%s' in %s on line %s" % \
+                                (key, config_name, counter)
+                            self.kvm_error(msg)
+                        # remove comments
+                        if len(temp) == 1:
+                            msg = "Missing value in %s on line %s" % \
+                                (config_name, counter)
+                            self.kvm_error(msg)
+                        else:
+                            value = temp[1].split("#")[0].strip()
+                        content = "=".join([key, value])
+                        config.append(content)
+                    counter += 1
+            return config
+
+    def parse_config(self, config_name):
+        """Return a dictionary"""
+        lines = self._check_config_syntax(config_name)
+        if not lines:
+            return 
+        config = {}
+        drive = {}
+        drive_counter = 0
+        net = {}
+        net_counter = 0
+        chardev = {}
+        chardev_counter = 0
+        for line in lines:
+            if len(line) > 0:
+                line = line.split("=", 1)
+                # check for drive, net and char keys and 
+                # add them im a separate dict to avoid overriding
+                if line[0] == "drive":
+                    drive[drive_counter] = line[1]
+                    config['drive'] = drive
+                    drive_counter += 1
+                elif line[0] == "net":
+                    net[net_counter] = line[1]
+                    config['net'] = net
+                    net_counter += 1
+                elif line[0] == "chardev":
+                    chardev[chardev_counter] = line[1]
+                    config['chardev'] = chardev
+                    chardev_counter += 1
+                else:
+                    config[line[0]] = line[1]
+        return config
+
+    def merge_configs(self, config_one, config_two):
+        """Merge two configs into a single one without duplications."""
+        config = {}
+        if not config_one or not config_two:
+            return
+        for key, value in config_one.iteritems():
+            config[key] = value
+        for key in config_two.keys():
+            if key not in config_one:
+                config[key] = config_two[key]
+        return config
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kvmtools/config/set_config.py	Wed Nov 23 04:33:55 2011 +0100
@@ -0,0 +1,113 @@
+#
+# Module to set the basics paths and files
+#
+#       The values come from header.py
+#       This value surrounded by {}
+#       self.kvm_base_config_dir = {/etc/kvm}
+#       self.kvm_conf_dir = self.kvm_base_config_dir/{conf}
+#       self.kvm_domain_dir = self.kvm_base_config_dir/{domains}
+#       self.kvm_domain_name = sys.argv[1]
+#       self.kvm_domain_file = self.kvm_domain_dir/self.kvm_domain_name
+#       self.kvm_script_dir = self.kvm_base_config_dir/{scripts}
+#       self.kvm_conf_file = self.kvm_conf_dir/{kvm.cfg}
+
+"""
+(c) 2011 Jens Kasten <jens@kasten-edv.de>
+"""
+
+import os
+
+from kvmtools.header import Header
+
+class SetConfig(Header):
+
+    def __init__(self):
+        Header.__init__(self)
+        # initialize attribute
+        self.kvm_domain_dir = None
+        self.kvm_domain_name_all = []
+        self.kvm_domain_name = None
+        self.kvm_domain_file = None
+        self.kvm_script_dir = None
+        self.kvm_pidfile = None
+        self.kvm_socketfile = None
+        self.kvm_conf_file = None
+        self._value = None
+        self.config()
+
+    def config(self):
+        """Methode to call from other modules. 
+        Set all nesessary attribute."""
+        self._set_kvm_script_dir()
+        self._set_kvm_conf_dir()
+        self._set_kvm_conf_file()
+        self._set_kvm_domain_dir()
+        self._set_kvm_domain_name_all()
+
+    def _set_kvm_pid_file(self):
+        """Set the absolute path for the pidfile."""
+        kvm_pidfile = "".join([self.kvm_domain_name, ".pid"])
+        self.kvm_pidfile = os.path.join(self.kvm_run_path, kvm_pidfile)
+        assert type(self.kvm_pidfile) is str, "pidfile is None"
+    
+    def _set_kvm_socket_file(self):
+        """Set the absolute path for the socketfile."""
+        kvm_socketfile = "".join([self.kvm_domain_name, ".socket"])
+        self.kvm_socketfile = os.path.join(self.kvm_run_path, kvm_socketfile)
+        assert type(self.kvm_socketfile) is str, "socketfile is None"
+
+    def _set_kvm_script_dir(self):
+        """Set the absolute path for global configuration directory."""
+        kvm_script_dir = os.path.join(self.kvm_base_config_dir,
+            self._kvm_script_dir)
+        if os.path.isdir(kvm_script_dir):
+            self.kvm_script_dir = kvm_script_dir
+        assert type(self.kvm_script_dir) is str, "kvm_script_dir is None"
+
+    def _set_kvm_conf_dir(self):
+        """Set the absolute path for global configuration directory."""
+        kvm_conf_dir = os.path.join(self.kvm_base_config_dir,
+            self._kvm_conf_dir)
+        if os.path.isdir(kvm_conf_dir):
+            self.kvm_conf_dir = kvm_conf_dir
+        assert type(self.kvm_conf_dir) is str, "kvm_conf_dir is None"
+
+    def _set_kvm_conf_file(self):
+        """Set the global config file."""
+        kvm_conf_file = os.path.join(self.kvm_conf_dir, self._kvm_conf_name)
+        if os.path.isfile(kvm_conf_file):
+            self.kvm_conf_file = kvm_conf_file
+        assert type(self.kvm_conf_file) is str, "kvm_conf_file is None"
+
+    def _set_kvm_domain_dir(self):
+        """Set the absolute path for domain configuration directory."""
+        kvm_domain_dir = os.path.join(self.kvm_base_config_dir,
+            self._kvm_domain_dir)
+        if os.path.isdir(kvm_domain_dir):
+            self.kvm_domain_dir = kvm_domain_dir
+        assert type(self.kvm_domain_dir) is str, "kvm_domain_dir is None"
+
+    def _set_kvm_domain_name_all(self):
+        """Set all available guests as an dictionary."""
+        for domain_name in os.listdir(self.kvm_domain_dir):
+            if os.path.isfile(os.path.join(self.kvm_domain_dir, domain_name)):
+                self.kvm_domain_name_all.append(domain_name)
+
+    # property to set, get, and delte the domain_conf_file
+    def _set(self, value):
+        """Set property."""
+        if value:
+            self._value = value
+            self.kvm_domain_file = os.path.join(self.kvm_domain_dir, value)
+            assert type(self.kvm_domain_file) is str, \
+                "kvm_domain_file is None"
+            self._set_kvm_pid_file()
+            self._set_kvm_socket_file()
+            self.build_command()
+            self.get_pid()
+
+    def _get(self):
+        """Get property."""
+        return self._value
+
+    kvm_domain_name = property(_get, _set)
--- a/kvmtools/configparser.py	Thu Nov 17 00:47:16 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-#!/usr/bin/env python
-
-""" 
-Parser to get content from a configfile.
-(c) 2007-2010 Jens Kasten <jens@kasten-edv.de>
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-"""
-
-import os
-import sys
-import re
-
-
-class Parser:
-
-    def __init__(self):
-        # list thats contain all lines from configurations file
-        self.config_lines = []
-        # dictionary thats contain the configuration parameters 
-        self.config = {}
-
-    def read_config(self, config_name):
-        """
-        Read the file content from a guest configuration.
-        Full list self.config_lines with all lines.
-        @param string config_name
-        """
-        if not os.path.isfile(config_name):
-            print "Configuration file '%s' does not exists." % config_name
-            sys.exit()
-        else:
-            try:
-                fd = open(config_name)
-                lines = fd.readlines()
-                # remove withespace but not and arguments 
-                # and add them to a list
-                for line in lines:
-                    if len(line) > 1 and not line.startswith('#'):
-                        # split only the first equal sign
-                        temp = line.strip().split("=", 1)
-                        # remove all withespace from string
-                        temp_first = re.sub(r'\s', '', temp[0])
-                        # remove only the withspace on the beginning and the end
-                        temp_second = temp[1].lstrip(' ')#.rstrip(' ')
-                        # put the cleaned string together again
-                        # FIX: configparser have to revisit 
-                        temp_result = "=".join([temp_first, temp_second])
-                        self.config_lines.append(temp_result)
-                fd.close()
-            except OSError, e:
-                print str(e)
-                sys.exit()
-
-
-    def __call__(self, config_name):
-        """  
-        Return a dictionary
-        """
-        self.read_config(config_name)
-        # counter for printing exact position if a error occur
-        try:
-            counter = 1
-            drive = {}
-            drive_counter = 0
-            net = {}
-            net_counter = 0
-            chardev = {}
-            chardev_counter = 0
-            for line in self.config_lines:
-                # remove empty lines and coments at line begin
-                if len(line) > 0 and not re.search("^#", line):
-                    line = line.split("=", 1)
-                    # remove coments after values
-                    value = line[1].split('#', 1)
-                    # check for drive, net and char keys and add them im a separate dict 
-                    # to avoid overriding
-                    if line[0] == "drive":
-                        drive[drive_counter] = value[0]
-                        self.config['drive'] = drive
-                        drive_counter += 1
-                    elif line[0] == "net":
-                        net[net_counter] = value[0]
-                        self.config['net'] = net
-                        net_counter += 1
-                    elif line[0] == "chardev":
-                        chardev[chardev_counter] = value[0]
-                        self.config['chardev'] = chardev
-                        chardev_counter += 1
-                    else:
-                        self.config[line[0]] = value[0]
-                    if len(value[0]) == 0:
-                        raise IndexError
-                counter += 1                        
-            return self.config
-        except IndexError, e:
-            msg = "Missing value for key '%s' on line %d in '%s'" % \
-                (line[0], counter, config_name)
-            print msg               
-            print "Use syntax: key = value"
-            sys.exit()                
-                    
-# vim: tabstop=4 expandtab shiftwidth=4
--- a/kvmtools/configtest.py	Thu Nov 17 00:47:16 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""
-Testcase for configparser.
-(c) 2007-20010 Jens Kasten <igraltist@rsbac.org>
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-"""
-
-import os
-import sys
-import getopt
-
-from configparser import Parser
-
-
-class TestParser(object):
-
-    def help(self):
-        print """ 
--c | --config  # its need the absolut path to the config wich should testet.
--h | --help    # print this help
-        """
-        sys.exit()
-
-    def usage(self):
-        print "usage: %s -c 'configfile' or [--help|-h]" % sys.argv[0]
-        sys.exit()
-
-    def arguments(self):
-        """
-        It take a configfile and print the output 'key = value' from configparser.
-        """
-        try:
-            opts, args = getopt.getopt(sys.argv[1:], "hc:", ["help", "config"])
-        except getopt.GetoptError:
-            self.usage()
-
-        if len(opts) == 1:
-            if opts[0][0] in ("-c", "--config"):
-                config_to_parse = opts[0][1]
-                if not os.path.isfile(config_to_parse):
-                    print "Error, '%s' not exists" % config_to_parse
-                    sys.exit()
-                else:
-                    return config_to_parse
-            else:
-                if opts[0][0] in ("-h, --help"):
-                    self.help()
-                else:
-                    self.usage()
-        else:
-            self.usage()
-
-
-def main():
-    tester = TestParser()
-    config = tester.arguments()
-    parser = Parser()
-    result = parser(config)
-    for key,value in result.iteritems():
-        print "%s=%s" % (key, value)
-
-if __name__ == "__main__":
-    main()
-
-# vim: tabstop=4 expandtab shiftwidth=4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kvmtools/functions.py	Wed Nov 23 04:33:55 2011 +0100
@@ -0,0 +1,43 @@
+#
+# A collection of global functions.
+#
+
+"""
+(c) 2011 jens Kasten <jens@kasten-edv.de>
+"""
+
+import os
+import sys
+from subprocess import Popen, PIPE
+
+
+def which(file_name):
+    """Python implementation of which."""
+    if os.path.isfile(file_name) and os.access(file_name, os.X_OK):
+        return True
+    paths = ["/bin", "/sbin", "/usr/bin", "/usr/sbin", "/usr/local/sbin",
+        "/usr/local/bin"]
+    for path in paths:
+        service = os.path.join(path, file_name)
+        if os.path.isfile(service) and os.access(service, os.X_OK):
+            return service
+    return False
+
+def get_pid_from_name(prog_name):
+    """Return the pid."""
+    try:
+        process = Popen(["pgrep", prog_name], stdout=PIPE, stderr=PIPE)
+        result = process.communicate()
+        if len(result[1]) > 0:
+            print result[1]
+        else:
+            if result[0] != "":
+                temp = result[0].split("\n")
+                if len(temp) > 3:
+                    sys.exit("Need more specific program name.")
+                else:
+                    return int(temp[0])
+    except OSError, e:
+        sys.exit(e)
+    except IOError, e:
+        sys.exit(e)
--- a/kvmtools/generate_options.py	Thu Nov 17 00:47:16 2011 +0100
+++ b/kvmtools/generate_options.py	Wed Nov 23 04:33:55 2011 +0100
@@ -1,87 +1,94 @@
 #!/usr/bin/env python
+#
+# Module to generate qemu-kvm options to compare them with kvm guest config
+# file to validate them.
+# 
 
 """
-Tool to extract kvm-qemu paramater.
 (c) 2010 Jens Kasten <jens@kasten-edv.de>
 """
 
 import os
-import sys
 import re
-from subprocess import Popen, PIPE, call
+from subprocess import Popen, PIPE
+
+# need to import kvmtools to get absolute path
+import kvmtools
+from kvmtools.functions import which
 
 
 class Generator(object):
+    """Generate qemu-kvm options and write them in file
+    qemu_kvm_options.py."""
 
     def __init__(self):
-        # Contain the absolute path to kvm binary.
-        # Debian and Gentoo use this for default path.
-        self.qemu_kvm = "/usr/bin/kvm"
-
+        # binary name for qemu-kvm
+        self.qemu_kvm = "kvm"
         # default setting for most parameters
         self.disabled = "disabled"
         # default setting for options_enabled_by_default
         self.enabled = "enabled"
         # file where to write the dictonary
-        self.file_to_write = os.path.join(os.path.dirname(__file__), "qemu_kvm_options.py")
-        # option on commandline
-        self.doit = "doit"
+        module_path = os.path.abspath(os.path.dirname(kvmtools.__file__))
+        self.file_to_write = os.path.join(module_path, "qemu_kvm_options.py")
         # option to exclude
         self.exclude_options = ['h', 'version']
-
-    def usage(self):
-        print "Usage: %s %s" % (sys.argv[0], self.doit)
-
-    def help(self):
-        print "help"
+        # print output of all values of the generated dictionary
+        self.verbose = False
+        self.arguments()
 
     def arguments(self):
-        """
-        Check input and set the binary path.
-        """
-        print "Type q to quit."
-        if os.path.exists(self.qemu_kvm):
-            print "Found %s" % self.qemu_kvm
-            result = raw_input("Should i use it [y/n]")
-            if result == "" or result == "y":
-                return
-            elif result == "q":
-                sys.exit()
-        print "Type the absolute path to qemu-kvm  binary and press enter."
-        result = raw_input("Path: ")
-        if result == "q":
-            sys.exit()
-        elif os.path.exists(result):
-            self.qemu_kvm = result
-            return
-        else:
-            print "Coult not found %s" % result
+        """Check input and set the binary path."""
+        bin_path = which(self.qemu_kvm)
+        if bin_path:
+            self.qemu_kvm = bin_path
+            return 
+        print "Type the qemu-kvm binary name and press enter or q to quit."
+        while True:
+            result = raw_input("Name: ")
+            if result == "q":
+                break
+            bin_path = which(result)
+            if bin_path:
+                self.qemu_kvm = bin_path
+                break
 
     def generate(self):
-        """
-        Extract all arguments.
-        """
+        """Extract all arguments."""
         try:
             # dictionary which contain all options
             output = {}
             # line counter as key for dictionary output 
             line_counter = 0
-
+            # remove the file if its already exists
             if os.path.isfile(self.file_to_write):
                 os.remove(self.file_to_write)
-            
+            if self.verbose:
+                print "Path to auto generated file: %s" % self.file_to_write
+
+            cmd = [self.qemu_kvm, '--help']
+            process = Popen(cmd, stdout=PIPE, stderr=PIPE)
+            process.wait()
+            result = process.communicate()
+            if len(result[1]) > 0:
+                print result[1]
+                return
+            if len(result[0]) == 0:
+                raise Exception("No output: %s --help" % self.file_to_write)
+            status = result[0].split("\n")
+
+            if self.verbose:
+                print "Generated for: %s" % status[0]
+
             header = "#!/usr/bin/env python\n"
-            header += '"""\n'
-            header += "    Autogenerated dictionary. Don't edit this file!\n"
-            header += '"""\n\n'
+            header += '#\n'
+            header += "# Autogenerated dictionary. Don't edit this file!\n#\n"
+            header += '# Generated for: %s\n#\n\n' % status[0]
             header += "qemu_kvm_options = {\n"
             footer = "}\n"
 
-            cmd = [self.qemu_kvm, '--help']
-            result = Popen(cmd, stdin=PIPE, stdout=PIPE)
-
             # extract option from kvm --help output
-            for line in result.stdout:
+            for line in status:
                 if line.startswith('-'):
                     # split options from help text
                     options = line.split(' ', 1)
@@ -103,35 +110,23 @@
                                 (options, self.disabled)
                             line_counter += 1 
                                
-    
-            # write output to __init__.py
-            fd = open(self.file_to_write, 'a')
-            fd.write(header)
+            # write output to file
+            _fd = open(self.file_to_write, 'a')
+            _fd.write(header)
             for index, value in output.iteritems():
                 if index == 0:
-                    fd.write(value + "\n")
+                    if self.verbose:
+                        print value
+                    _fd.write(value + "\n")
                 else:
                     # check for double key
                     if value != output[index-1]:
-                        fd.write(value + "\n")
-            fd.write(footer)                        
-            fd.close()
-        except OSError, e:
-            print str(e)
-        except IOError, e:
-            print str(e)
-    
-
-def main():
-    generator = Generator()
-    if len(sys.argv) < 2:
-        generator.usage()
-    elif len(sys.argv) == 2 and sys.argv[1] == generator.doit:
-        #generator.arguments()
-        #if generator.qemu_kvm:
-        generator.generate()
-    else:
-        generator.help()
-    
-if __name__ == "__main__":
-    main()
+                        if self.verbose:
+                            print value
+                        _fd.write(value + "\n")
+            _fd.write(footer)                        
+            _fd.close()
+        except OSError, error_msg:
+            print str(error_msg)
+        except IOError, error_msg:
+            print str(error_msg)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kvmtools/header.py	Wed Nov 23 04:33:55 2011 +0100
@@ -0,0 +1,35 @@
+#
+# header file 
+#
+
+"""
+(c) 2011 Jens Kasten <jens@kasten-edv.de>
+"""
+
+import os
+
+
+class Header(object):
+    """Contain all attribute to store filename or paths."""
+    
+    def __init__(self):
+        # base direcotry configs, and scripts 
+        self.kvm_base_config_dir = "/etc/kvm"
+        # subdirecotories from self.base_dir
+        # directory name to store the ifdown and ifup scripts
+        self._kvm_script_dir = 'scripts'
+        # directory name to store the guest configuration files
+        self._kvm_domain_dir = 'domains'
+        # directory name to store the global configuration file
+        self._kvm_conf_dir = 'config'
+        # name for global configuration file
+        self._kvm_conf_name = 'kvm.cfg'
+        # default telnet port 23, can only use once at time in one guest
+        # otherwise each guest have to set expliciet a different port
+        self.telnet_port = 23
+        # default directory for pidfile,and socketfile
+        self.kvm_run_path = '/var/run/kvm'
+        # this exclude_options are using internal only
+        self.exclude_options = ['qemu-kvm', 'python-debug']
+
+
--- a/kvmtools/kvm.py	Thu Nov 17 00:47:16 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,272 +0,0 @@
-#!/usr/bin/env python
-#
-# Module provide the action methodes for a guest.
-#
-
-"""
-(c) 2007-2011 Jens Kasten <jens@kasten-edv.de> 
-"""
-
-import os
-import sys
-from subprocess import Popen, PIPE
-from time import sleep
-
-from kvm_monitor import KvmMonitor
-
-
-class Kvm(KvmMonitor):
-    """
-    Class Kvm provide methodes for start, stop and all stuff around this.
-    """
-
-    def __init__(self, guest, uuid, pidfile, monitor):
-        self._environ_path = "/bin:/usr/bin/:/sbin:/usr/sbin"
-        self._pid = None
-        self._guest_status = None
-        self.guest = guest
-        self.uuid = uuid
-        self.pidfile = pidfile
-        self.socketfile = None
-        if "SocketFile" in monitor:
-            self.socketfile = monitor['SocketFile']
-        # call the parent constructor 
-        KvmMonitor.__init__(self, monitor)
-
-    def __del__(self):
-        KvmMonitor.__del__(self)
-    
-    def kvm_monitor(self, command_monitor):
-        """Monitor to the qemu-kvm guest on commandline."""
-        if self._is_running():
-            self.monitor_send(command_monitor)
-            data = self.monitor_recieve()
-            data = "\n".join([i for i in data])
-            print data
-        else:
-            print "Guest is not running."
-
-    def kvm_boot(self, cmd, bridge):
-        """Boot the qemu-kvm guest."""
-        if not self._is_running():
-            env = {} 
-            #env['PATH'] = self._environ_path
-            # Fix: add only nessesary path options
-            env = os.environ.copy()
-            # add the bridge(s) to the enviroment,
-            # so the kvm-if[up|down] can use them
-            if len(bridge) > 0:
-                for key, value in bridge.iteritems():
-                    env[key] = value
-            try:        
-                result = Popen(cmd, env=env, stdin=PIPE, stdout=PIPE)
-                result.wait()
-            except OSError, e:
-                print "Starting guest. [FAIL]"
-                return False
-            except IOError, e:
-                print "Starting guest. [FAIL]"
-                return False
-            else:
-                if self._is_running():
-                    print "Starting guest. [OK]" 
-                else:
-                    print "Starting guest. [FAIL]"
-        else:
-            print "Guest is already running."
-
-    def kvm_reboot(self):
-        """Reboot the guest."""
-        if self._is_running():
-            if self.monitor_send(self.qemu_monitor["reboot"]):
-                print "Rebooting ..."
-            else:
-                print "Could not send signal reboot to guest."
-        else:
-            print "Guest is not running."
-
-    def kvm_shutdown(self):
-        """Shutdown the guest.
-        Its work for windows and linux guests, 
-        but not on linux when the Xserver is looked.
-        """
-        flag = 0
-        if self._is_running():
-            if self.monitor_send(self.qemu_monitor["shutdown"]):
-                self.monitor_send(self.qemu_monitor["enter"])
-                print "Shutdown ..."
-                while True:
-                    # some fancy ticker
-                    if flag == 0:
-                        sign = "\\"; flag = 1
-                    elif flag == 1:    
-                        sign = "|"; flag = 2
-                    elif flag == 2:
-                        sign = "/"; flag = 3
-                    elif flag == 3:
-                        sign = "-"; flag = 0
-                    sys.stdout.write("waiting ... %s\r" % sign)
-                    sys.stdout.flush()
-                    sleep(0.05)
-                    #if self._check_is_running():
-                    if not os.path.isfile(self.pidfile):
-                        sys.stdout.write("Done.         \n")
-                        sys.stdout.flush()
-                        sys.exit(0) 
-                    else:
-                        self._is_running()
-            else:
-                print "Could not send signal shutdown."
-        else:
-            print "Guest is not running."
-
-    def kvm_kill(self):
-        """Kill the guest.
-        Dangerous option, its simply like pull the power cable out.
-        """
-        if self._is_running():
-            try:    
-                os.kill(self._pid, 9)
-                sleep(0.8)
-                if not self._is_running():
-                    print "Killed guest. [OK]"
-            except OSError, e:
-                 print e
-        else:
-            print "Guest is not running."
-
-    def kvm_status(self):
-        """Show information about the guest."""
-        if self._is_running():
-            process = self._get_process_information()
-            print "Name: %s" % process['Name'].split("[")[0]
-            print "%s" % process["Status"]
-            print "Guest uuid: %s" % process['Uuid']
-            print "State: %s" % process['State']
-            print "UID: %s" % process['Uid']
-            print "GID: %s" % process['Gid']
-            print "Groups: %s" % process['Groups']
-            print "PID: %s :: PPID: %s" % (process['Pid'], process['PPid'])
-            print "VNC: %s" % process["VNC"]
-        else:
-            print "Guest is not running."
-
-    def _check_is_running(self):
-        """Check if the process is running by a given pidfile."""
-        if os.path.isfile(self.pidfile):
-            with open(self.pidfile) as fd:
-                self._pid = int(fd.readline().strip())
-                fd.close()
-            # check if process alive
-            try:
-                signal = os.kill(self._pid, 0)
-                return True
-            except OSError, e:
-                return False
-            except IOError, e:
-                return False
-        else:
-            p1 = Popen(['ps', 'aux'], stdout=PIPE, stderr=PIPE)
-            search = "kvm_" + self.guest
-            p2 = Popen(['grep', search], stdin=p1.stdout, stdout=PIPE,
-                stderr=PIPE)
-            result = p2.communicate()
-            status = result[0].split("\n")
-            # search for pid
-            if len(status) > 1:
-                # iterate over the ps aux output per line
-                for i in status:
-                    if not "grep" in i:
-                        pid = i.split(" ")
-                        # remove first element, its the user name
-                        del pid[0]
-                        for j in pid:
-                            if j == "":
-                                continue
-                            else:
-                                # found pid 
-                                self._pid = int(j)
-                                return True
-                return False
-            else:
-                return False
-
-    def _is_running(self):
-        """Avoid killing the socket connection, 
-        if call boot twice or more on a running guest.
-        """
-        if self._check_is_running():
-            return True
-        else:
-            if os.path.isfile(self.pidfile):
-                os.remove(self.pidfile)
-            try:
-                os.remove(self.socketfile)
-            except OSError, e:
-                pass
-            return False
-
-    def _get_vnc(self):
-        self.monitor_send("info vnc")
-        vnc = self.monitor_recieve()
-        vnc = "\n".join(vnc)
-        return vnc
-
-    def _get_uuid(self):
-        """Return the guest uuid."""
-        self.monitor_send(self.qemu_monitor["uuid"])
-        uuid = self.monitor_recieve()[0]
-        return uuid
-
-    def _get_status(self):
-        """Return the status from guest."""
-        self.monitor_send(self.qemu_monitor["status"])
-        status = self.monitor_recieve()[0]
-        return status
-
-    def _get_process_information(self):
-        """Collect process information from different sources."""
-        from subprocess import Popen, PIPE
-        process = {}
-        process['Uuid'] = self._get_uuid()
-        process['Status'] = self._get_status()
-        process["VNC"] = self._get_vnc()
-        try:
-            fd = open(os.path.join("/proc", "%d/status" % self._pid))
-            lines = [line.strip().split(':') for line in fd.readlines()]
-            fd.close()
-            for i in lines:
-                process[i[0]] = i[1]
-        except OSError, e:
-            raise Exception(e)
-        except IOError, e:
-            raise Exception(e)
-        else:
-            return process
-
-def main():
-    if len(sys.argv) == 3:
-        guest = sys.argv[1]
-        action = sys.argv[2]
-        pid = "/var/run/kvm/%s.pid" % guest
-        socket = "/var/run/kvm/%s.socket" % guest
-        monitor = {}
-        monitor['Type'] = "unix"
-        monitor['SocketFile'] = socket
-        kvm = Kvm(guest, pid, socket)
-        kvm.guest = guest
-        if action == "shutdown":
-            kvm.kvm_shutdown()
-        if action == "status":
-            kvm.kvm_status()
-        if action == "boot":
-            kvm.kvm_boot("no", "no")
-        if action == "reboot":
-            kvm.kvm_reboot()
-        if action == "kill":
-            kvm.kvm_kill()
-    else:
-        print "Usage: %s guest_name action" % (sys.argv[0])
-
-if __name__ == "__main__":
-    main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kvmtools/kvm/action.py	Wed Nov 23 04:33:55 2011 +0100
@@ -0,0 +1,159 @@
+#
+# Modulde which contain the methodes which can call from commandline
+#
+
+"""
+(c) 2011 Jens Kasten <jens@kasten-edv.de>
+"""
+
+import os
+import sys
+from subprocess import Popen, PIPE
+from time import sleep
+
+from kvmtools.config.domain import Domain
+
+
+class Action(Domain):
+    
+    def __init__(self):
+        Domain.__init__(self)
+        self.kvm_errors = []
+
+    def kvm_error(self, error_message):
+        """Append a error message to error list."""
+        self.kvm_errors.append(error_message)
+
+    def available_actions(self):
+        """Return all methods which start with kvm_ and end with _action."""
+        actions = []
+        for action in dir(self):
+            if action.startswith("kvm_") and action.endswith("_action"):
+                methode = action.replace("kvm_", "").replace("_action", "")
+                actions.append(methode)
+        return actions
+   
+    def kvm_show_action(self):
+        """show the command as string"""
+        print self.command[1]
+
+    def kvm_modify_action(self):
+        """Modify a domain configuration file."""
+        self.modify()
+
+    def kvm_create_action(self):
+        """Create a domain configuration file."""
+        if os.path.isfile(self.kvm_domain_file):
+            self.modify()
+        else:
+            self.create()
+
+    def kvm_migrate_action(self, command_monitor):
+        self.kvm_monitor_action(command_monitor)
+
+    def kvm_monitor_action(self, command_monitor):
+        """Monitor to the qemu-kvm guest on commandline."""
+        if not self.is_running():
+            print ("Guest is not running.")
+            return
+        self.monitor_send(command_monitor)
+        data = self.monitor_recieve()
+        data = "\n".join([i for i in data])
+        print data
+
+    def kvm_boot_action(self):
+        """Boot the qemu-kvm guest."""
+        if self.is_running():
+            print ("Guest already running.")
+            return True
+        env = os.environ.copy()
+        # add the  to the enviroment
+        if len(self.bridge) > 0:
+            for key, value in self.bridge.iteritems():
+                env[key] = value
+        try:
+            result = Popen(self.command[0], env=env, stdin=PIPE, stdout=PIPE)
+            result.wait()
+            return (True, "")
+        except OSError, error_msg:
+            return (False, error_msg)
+        except IOError, error_msg:
+            return (False, error_msg)
+
+    def kvm_reboot_action(self):
+        """Reboot the guest."""
+        if not self.is_running():
+            print ("Guest is not running.")
+            return False
+        if not self.monitor_send(self.qemu_monitor["reboot"]):
+            print ("Could not send signal reboot to guest.")
+
+    def kvm_shutdown_action(self):
+        """Shutdown the guest.
+        Its work for windows and linux guests, 
+        but not on linux when the Xserver is looked.
+        """
+        if not self.is_running():
+            print ("Guest is not running.")
+        flag = 0
+        if self.monitor_send(self.qemu_monitor["shutdown"]):
+            self.monitor_send(self.qemu_monitor["enter"])
+            print ("Shutdown ...")
+            while True:
+                # some fancy ticker
+                if flag == 0:
+                    sign = "\\" 
+                    flag = 1
+                elif flag == 1:    
+                    sign = "|"
+                    flag = 2
+                elif flag == 2:
+                    sign = "/"
+                    flag = 3
+                elif flag == 3:
+                    sign = "-"
+                    flag = 0
+                if not self.is_running():
+                    sys.stdout.write("Done.         \n")
+                    sys.stdout.flush()
+                    sys.exit(0) 
+                else:
+                    sys.stdout.write("waiting ... %s\r" % sign)
+                    sys.stdout.flush()
+                    sleep(0.05)
+        else:
+            print ("Could not send signal shutdown.")
+
+    def kvm_kill_action(self):
+        """Kill the guest.
+        Dangerous option, its simply like pull the power cable out.
+        """
+        if not self.is_running():
+            print ("Guest is not running.")
+            return False
+        try:    
+            os.kill(self.kvm_pid, 9)
+            sleep(0.8)
+            self.is_running()
+            sys.exit(0)
+        except OSError, error_msg:
+            print error_msg
+            self.is_running()
+            sys.exit(1)
+
+    def kvm_status_action(self):
+        """Show information about the guest."""
+        if not self.is_running():
+            print ("Guest is not running.")
+            return False
+        self.get_process_information()
+        print "Process name: %s" % self.kvm_process_name
+        print "%s" % self.kvm_process_status
+        print "Domain uuid: %s" % self.kvm_process_uuid
+        print "Process state: %s" % self.kvm_process_state
+        print "UID: %s" % self.kvm_process_uid
+        print "GID: %s" % self.kvm_process_gid
+        print "Groups: %s" % self.kvm_process_groups
+        print "PID: %s :: PPID: %s" % (self.kvm_process_pid, 
+            self.kvm_process_ppid)
+        print "VNC: %s" % self.kvm_process_vnc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kvmtools/kvm/build_command.py	Wed Nov 23 04:33:55 2011 +0100
@@ -0,0 +1,54 @@
+#
+# build command to executing
+#
+
+"""
+(c) 2011 Jens Kasten <jens@kasten-edv.de>
+"""
+
+from kvmtools.kvm.build_config import BuildConfig
+
+
+class BuildCommand(BuildConfig):
+    """Build command"""
+    
+    def __init__(self):
+        BuildConfig.__init__(self)
+        self.commmand = ()
+
+    def build_command(self):
+        """Return a tuple. First entry is a list to execute via subprocess
+        and the second is a string to display it.
+        """
+        self.build_config()
+        if self.config is None:
+            return None
+        cmd_execute = []
+        cmd_string = ""
+        # Start to build a list, firstly add the qemu-kvm binary
+        if "qemu-kvm" not in self.config:
+            raise Exception("Need qemu-kvm = /path/to/kvm option in config.")
+        cmd_execute.append(self.config["qemu-kvm"])
+        for key in self.exclude_options:
+            if key in self.config:
+                del self.config[key]
+        # iterate over the user config and build a list
+        for key, value in self.config.iteritems():
+            # this check search for more option like -drive -drive etc.
+            if "disabled" == value:
+                continue
+            elif isinstance(value, dict):
+                for i in value.itervalues():
+                    cmd_execute.append(''.join(['-', key]))
+                    cmd_execute.append(i)
+            elif "enabled" != value:
+                # this qemu-kvm option have an option, so add -key value
+                cmd_execute.append(''.join(['-', key]))
+                cmd_execute.append(value)
+            else:
+                # this qemu-kvm option don't have any option 
+                # so only add -key as argument
+                cmd_execute.append(''.join(['-', key]))
+        # build a string for to display on terminal output
+        cmd_string = " ".join([value for value in cmd_execute])
+        self.command = (cmd_execute, cmd_string)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kvmtools/kvm/build_config.py	Wed Nov 23 04:33:55 2011 +0100
@@ -0,0 +1,159 @@
+#
+# Module BuildConfig collect all data to create a command qemu-kvm command.
+# 
+
+"""
+(c) 2011 Jens Kasten <jens@kasten-edv.de>
+"""
+
+import os
+import random
+import string
+import re
+
+from kvmtools.config.parser import Parser
+
+
+class BuildConfig(Parser):
+    
+    def __init__(self):
+        self.config = {}
+        self.monitor_options = {}
+        self.bridge = {}
+
+    def build_config(self):
+        """Load domain and global config and then merge them."""
+        kvm_conf_file = self.parse_config(self.kvm_conf_file)
+        kvm_domain_file = self.parse_config(self.kvm_domain_file)
+        self.config = self.merge_configs(kvm_conf_file, kvm_domain_file)
+        if not self.config:
+            return None
+        self._add_name()
+        self._add_uuid()
+        self._add_pidfile()
+        self._add_monitor()
+        self._add_net()
+
+    def _add_pidfile(self):
+        """Append the pidfile option to the config dictionary or reverse."""
+        if "pidfile" not in self.config:
+            pidfile = os.path.join(self.kvm_run_path, self.kvm_pidfile)
+            self.config["pidfile"] = pidfile
+        else:
+            self.kvm_pidfile = self.config["pidfile"]
+
+    def _add_uuid(self):
+        """Append an unique uuid to the config dictionary."""
+        if "uuid" in self.config:
+            check_uid = re.match(r"([a-z,A-z,0-9]{8})-([a-z,A-Z,0-9]{4})-([a-z,A-Z,0-9]{4})-([a-z,A-Z,0-9]{4})-([a-z,A-Z,0-9]{12})", self.config["uuid"])
+            if not check_uid:
+                msg = "Your uuid has wrong format, you can delete it, the script does generate a correct new one."
+                self.kvm_error(msg)
+                self.kvm_error(self.config["uuid"])
+            return
+        random.seed(os.urandom(8))
+        charset = string.digits + "abcdef"
+        eight = "".join(random.sample(charset, 8))
+        four_first = "".join(random.sample(charset, 4))
+        four_second = "".join(random.sample(charset, 4))
+        four_third = "".join(random.sample(charset, 4))
+        twelve =  "".join(random.sample(charset, 12))
+        uuid = "-".join([eight, four_first, four_second, four_third, twelve])
+        # inster the uuid into domain config file if it not exists
+        with open(self.kvm_domain_file, "a+") as fd:
+            fd.write("uuid = %s\t# autogenerted and instert from script\n" % uuid)
+        self.config["uuid"] = uuid
+
+    def _add_name(self):
+        """Append a name for window title and process name (on linux only)."""
+        if "name" in self.config:
+            name = self.config["name"].split(" ")[0]
+            process_name = "=kvm_".join(["process", name])
+            self.config["name"] = ",".join([name, process_name])
+        else:
+            process_name = "=".join(["process", self.kvm_domain_name])
+            self.config["name"] = ",".join([self.kvm_domain_name, process_name])
+
+    def _add_monitor(self):
+        """Add a dictionry with type and the path to the socket file or
+        the host and port.
+        """
+        if "monitor" in self.config:
+            monitor = self.config["monitor"]
+            # get the string befor the first comma 
+            # and then split this string by colon
+            monitor_type = monitor.split(',')[0].split(':')
+            if len(monitor_type) == 3:
+                # this is usally for tcp
+                self.monitor_options['Type'] = monitor_type[0] 
+                self.monitor_options['Host'] = monitor_type[1]
+                self.monitor_options['Port'] = int(monitor_type[2])
+            elif len(monitor_type) == 2:
+                # this is for telnet, when no port is given
+                self.monitor_options['Type'] = monitor_type[0]
+                if monitor_type[0] == 'unix':
+                    self.monitor_options['SocketFile'] = monitor_type[1]
+                self.monitor_options['Host'] = monitor_type[1]
+                self.monitor_options['Port'] = self.telnet_port
+        else:
+            # set unix socket as default monitor access
+            monitor = "unix:%s,server,nowait" % self.kvm_socketfile
+            self.monitor_options["Type"] = "unix"
+            self.monitor_options['SocketFile'] = self.kvm_socketfile
+        self.config["monitor"] = monitor 
+
+    def _add_net(self):
+        """Examine the -net tap option for ifname and additional scripts and 
+        bridge strings, if not -tap option don't touch the values.
+        """
+        temp = {} 
+        counter = 0
+        if "net" not in self.config:
+            return False
+        for key, value in self.config["net"].iteritems():
+            if value.startswith("tap"):
+                # search for ifname otherwise set it from domain_name name
+                if re.search("ifname", value):
+                    ifname = re.search("ifname=([a-zA-Z0-9]+)", value)
+                    bridge_if = ifname.group(1)
+                else:
+                    ifname = "=".join(["ifname", 
+                        self.kvm_domain_name + str(counter)])
+                    bridge_if = self.kvm_domain_name + str(counter)
+                    if re.match("tap,", value):
+                        value = re.sub("tap,", "tap,%s,", value) % ifname
+                    else:
+                        value = re.sub("tap", "tap,%s", value) % ifname
+                    counter += 1
+                assert type(bridge_if) is str, "ifname is not a string %s" % ifname
+                # build the bridge key for exporting to the environ   
+                bridge_key = "_".join(["kvm_bridge", bridge_if])
+                assert type(bridge_key) is str, "bridge_key is not a str: %s" % \
+                    bridge_key
+                # search for bridge value
+                if re.search("bridge", value):
+                    bridge = re.search("(,|)bridge=([a-zA-Z0-9]+)", value)
+                    # remove the bridge from string
+                    value = value.replace(bridge.group(0), "")
+                    # assign bridge for exporting the bridge name
+                    self.bridge[bridge_key] = bridge.group(2)
+                else:
+                    msg = "Missing second Value for bridge.\n"
+                    msg += "Syntax example: bridge=br0"
+                    raise Exception(msg)
+                # search for script 
+                if not re.search("script", value):
+                    ifup = "=".join(["script",
+                        os.path.join(self.kvm_script_dir, 'kvm-ifup')])
+                    value = ",".join([value, ifup])
+                # search for downscript
+                if not re.search("downscript", value):
+                    ifdown = "=".join(["downscript",
+                        os.path.join(self.kvm_script_dir, 'kvm-ifdown')])
+                    value = ",".join([value, ifdown])
+                # add the cleaned value to temporary dictionary
+                temp[key] = value
+            else:                    
+                temp[key] = value
+        # add the cleand temp dictionary back to config        
+        self.config["net"] = temp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kvmtools/kvm/monitor.py	Wed Nov 23 04:33:55 2011 +0100
@@ -0,0 +1,110 @@
+#!/usr/bin/env python
+#
+# Module to handle the monitor stuff.
+#
+
+"""
+(c) 2009-2011 Jens Kasten <jens@kasten-edv.de>
+"""
+
+import socket
+import time
+
+
+class Monitor(object):
+    """
+    Class for connect and disconnect to a qemu monitor socket.
+    Additional send data to and recieve data from monitor.
+    """
+
+    def __init__(self):
+        # keep the socket
+        self.socket = None
+        # flag if socket can acces
+        self.socket_status = False
+        # data for method socket_recieve
+        self.recieve_data = {
+            "data_offset_first_call": 2, 
+            "data_offset_second_call": 1,
+        } 
+        # predefined qemu monitor options
+        self.qemu_monitor = {
+            "shutdown": "system_powerdown",
+            "reboot": "sendkey ctrl-alt-delete 200",
+            "enter": "sendkey ret",
+            "status": "info status",
+            "uuid": "info uuid",
+            "network": "info network",
+        }
+
+    #########################################
+    # monitor via unix socket or tcp socket #
+    #########################################
+    def monitor_open(self):        
+        """Open a socket to connect to the qemu-kvm monitor."""
+        if self.monitor_options['Type'] == 'unix': 
+            self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+            try:
+                self.socket.connect(self.kvm_socketfile)
+                self.socket_status = True
+            except socket.error:
+                return False      
+        else:
+            self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+            try:
+                self.socket.connect((self.monitor_options['Host'], 
+                    self.monitor_options['Port']))
+                self.socket_status = True
+            except socket.error:
+                return False
+
+    def monitor_close(self):
+        """Close the opened socket connection."""    
+        if self.socket is not None:
+            self.socket.close()
+
+    def monitor_send(self, command, raw=True):
+        """Send data to socket."""
+        if raw:
+            command = '%s\n' % command
+        if self.socket_status:
+            try:
+                self.socket.send(command)
+                time.sleep(0.2)
+                return True
+            except socket.error, error_msg:
+                if error_msg[0] == 32:
+                    print "Could not send data to socket."
+                print error_msg[1]
+                return False
+        else:
+            return False
+
+    def monitor_recieve(self, socket_buffer=4098):
+        """Recieve data from socket and return it as a list."""
+        result = []
+        no_result = ['No data available']
+        if self.socket_status:
+            data = self.socket.recv(socket_buffer)
+            if len(data) == 0:
+                return no_result
+            data = data.split("\r\n")
+            # have to do this check because second call does not send
+            # the qemu info string
+            if data[0].startswith("QEMU"):
+                counter = self.recieve_data['data_offset_first_call']
+                if len(data) > self.recieve_data['data_offset_first_call']:
+                    while counter < len(data) - 1:
+                        result.append(data[counter])
+                        counter += 1
+                    if len(result) == 0:
+                        result = ["Done"]
+                    return result
+            else:                    
+                counter = self.recieve_data['data_offset_second_call']
+                if len(data) > self.recieve_data['data_offset_second_call']:
+                    while counter < len(data)-1:
+                        result.append(data[counter])
+                        counter += 1
+                    return result
+        return no_result
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kvmtools/kvm/system.py	Wed Nov 23 04:33:55 2011 +0100
@@ -0,0 +1,117 @@
+#
+# Module provide system information 
+#
+
+"""
+(c) Jens Kasten <jens@kasten-edv.de>
+"""
+
+import os
+import sys
+from subprocess import Popen, PIPE
+
+
+class System(object):
+
+    def  __init__(self):
+        self.kvm_pid = None
+
+    def avail_memory(self):
+        """Return available system memory in megabyte."""
+        return 0
+
+    def total_memory(self):
+        """Return total amount of system memory in megabyte."""
+        return 0
+
+    def get_cdrom(self):
+        """Check if machine has a cdrom. Return the path to cdrom device."""
+        if os.path.exists("/dev/cdrom"):
+            return "/dev/cdrom"
+        elif os.path.exists("/dev/dvd"):
+            return "/dev/dvd"
+        else:
+            for i in range(0, 11):
+                if os.path.exists("/dev/sr%d" % i):
+                    return "/dev/sr%d" % i
+        return None
+
+    def get_pid(self):
+        """Set pif if pidfile is available"""
+        if os.path.isfile(self.kvm_pidfile):
+            with open(self.kvm_pidfile) as fd:
+                self.kvm_pid = int(fd.readline().strip())
+
+    def _get_vnc(self):
+        """Return vnc info."""
+        self.monitor_send("info vnc")
+        vnc = self.monitor_recieve()
+        vnc = "\n".join(vnc)
+        self.kvm_process_vnc = vnc
+
+    def _get_uuid(self):
+        """Return the guest uuid."""
+        self.monitor_send(self.qemu_monitor["uuid"])
+        uuid = self.monitor_recieve()[0]
+        self.kvm_process_uuid = uuid
+
+    def _get_status(self):
+        """Return the status from guest."""
+        self.monitor_send(self.qemu_monitor["status"])
+        status = self.monitor_recieve()[0]
+        self.kvm_process_status = status
+
+    def _get_process_info(self):
+        """Collect information from proc."""
+        with open(os.path.join("/proc", "%d/status" % self.kvm_pid)) as fd:
+            lines = [line.strip().split(':') for line in fd.readlines()]
+        for i in lines:
+            name = "kvm_process_" + i[0].strip().lower()
+            value = i[1].strip("\t").strip()
+            setattr(self, name, value)
+
+    def get_process_information(self):
+        """Collect process information from different sources."""
+        self._get_uuid()
+        self._get_status()
+        self._get_vnc()
+        self._get_process_info()
+
+    def is_running(self):
+        """Check if the process is running by a given pid."""
+        if self.kvm_pid:
+            try:
+                os.kill(self.kvm_pid, 0)
+                return True
+            except OSError:
+                if os.path.isfile(self.kvm_pidfile):
+                    os.remove(self.kvm_pidfile)
+                if os.path.exists(self.kvm_socketfile):
+                    os.remove(self.kvm_socketfile)
+                return False
+        else:
+            process1 = Popen(['ps', 'ax'], stdout=PIPE, stderr=PIPE)
+            search = "kvm_" + self.kvm_domain_name
+            process2 = Popen(['grep', search], stdin=process1.stdout, 
+                stdout=PIPE, stderr=PIPE)
+            process1.stdout.flush()
+            result = process2.communicate()
+            status = result[0].split("\n")
+            if len(status) > 2:
+                pid = int(status[0].lstrip().split(" ")[0].strip())
+                try:
+                    os.kill(pid, 0)
+                    self.kvm_pid = pid
+                    return True
+                except OSError:
+                    if os.path.isfile(self.kvm_pidfile):
+                        os.remove(self.kvm_pidfile)
+                    if os.path.exists(self.kvm_socketfile):
+                        os.remove(self.kvm_socketfile)
+                    return False
+            else:
+                if os.path.isfile(self.kvm_pidfile):
+                    os.remove(self.kvm_pidfile)
+                if os.path.exists(self.kvm_socketfile):
+                    os.remove(self.kvm_socketfile)
+                return False  
--- a/kvmtools/kvm_monitor.py	Thu Nov 17 00:47:16 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-#!/usr/bin/env python
-#
-# Module to handle the monitor stuff.
-#
-
-"""
-(c) 2009-2011 Jens Kasten <jens@kasten-edv.de>
-"""
-
-from os import path
-from sys import exit
-import socket
-import time
-
-
-class KvmMonitor(object):
-    """
-    Class for connect and disconnect to a qemu monitor socket.
-    Additional send data to and recieve data from monitor.
-    """
-
-    def __init__(self, monitor):
-        self._monitor = monitor
-        # flag if socket can acces
-        self.socket_status = False
-        # data for method socket_recieve
-        self.recieve_data = {
-            "data_offset_first_call": 2, 
-            "data_offset_second_call": 1,
-        } 
-        # predefined qemu monitor options
-        self.qemu_monitor = {
-            "shutdown": "system_powerdown",
-            "reboot": "sendkey ctrl-alt-delete 200",
-            "enter": "sendkey ret",
-            "status": "info status",
-            "uuid": "info uuid",
-            "network": "info network",
-        }
-        try:
-            self._monitor_open()
-        except:
-            pass
-
-    def __del__(self):
-        try:
-            self.monitor_close()
-        except:
-            pass
-
-    #########################################
-    # monitor via unix socket or tcp socket #
-    #########################################
-    def _monitor_open(self):        
-        """Open a socket to connect to the qemu-kvm monitor."""
-        if self._monitor['Type'] == 'unix': 
-            self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
-            try:
-                self.socket.connect(self.socketfile)
-                self.socket_status = True
-            except socket.error:
-                return False      
-        else:
-            self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-            try:
-                self.socket.connect((self._monitor['Host'], self._monitor['Port']))
-                self.socket_status = True
-            except socket.error:
-                return False
-
-    def _monitor_close(self):
-        """Close the opened socket connection."""    
-        self.socket.close()
-
-    def monitor_send(self, command, raw=True):
-        """Send data to socket."""
-        if raw:
-            command = '%s\n' % command
-        if self.socket_status:
-            try:
-                self.socket.send(command)
-                time.sleep(0.2)
-                return True
-            except socket.error, e:
-                from sys import exit
-                if e[0] == 32:
-                    print "Could not send data to socket."
-                print e[1]
-                return False
-        else:
-            return False
-
-    def monitor_recieve(self, buffer=4098):
-        """Recieve data from socket and return it as a list."""
-        result = []
-        no_result = ['No data available']
-        if self.socket_status:
-            data = self.socket.recv(buffer)
-            if len(data) == 0:
-                 return no_result
-            data = data.split("\r\n")
-            # have to do this check because second call does not send
-            # the qemu info string
-            if data[0].startswith("QEMU"):
-                counter = self.recieve_data['data_offset_first_call']
-                if len(data) > self.recieve_data['data_offset_first_call']:
-                    while counter < len(data) - 1:
-                        result.append(data[counter])
-                        counter += 1
-                    if len(result) == 0:
-                        result = ["Done"]
-                    return result
-            else:                    
-                counter = self.recieve_data['data_offset_second_call']
-                if len(data) > self.recieve_data['data_offset_second_call']:
-                    while counter < len(data)-1:
-                        result.append(data[counter])
-                        counter += 1
-                    return result
-        return no_result        
-            
-
-def main():
-    pass
-
-
-if __name__ == "__main__":
-    main()
-            
--- a/kvmtools/qemu_kvm_options.py	Thu Nov 17 00:47:16 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-#!/usr/bin/env python
-"""
-    Autogenerated dictionary. Don't edit this file!
-"""
-
-qemu_kvm_options = {
-	"M": "disabled",
-	"cpu": "disabled",
-	"smp": "disabled",
-	"numa": "disabled",
-	"fda": "disabled",
-	"fdb": "disabled",
-	"hda": "disabled",
-	"hdb": "disabled",
-	"hdc": "disabled",
-	"hdd": "disabled",
-	"cdrom": "disabled",
-	"drive": "disabled",
-	"set": "disabled",
-	"global": "disabled",
-	"mtdblock": "disabled",
-	"sd": "disabled",
-	"pflash": "disabled",
-	"boot": "disabled",
-	"snapshot": "disabled",
-	"m": "disabled",
-	"k": "disabled",
-	"audio-help": "disabled",
-	"soundhw": "disabled",
-	"usb": "disabled",
-	"usbdevice": "disabled",
-	"device": "disabled",
-	"name": "disabled",
-	"uuid": "disabled",
-	"nographic": "disabled",
-	"curses": "disabled",
-	"no-frame": "disabled",
-	"alt-grab": "disabled",
-	"ctrl-grab": "disabled",
-	"no-quit": "disabled",
-	"sdl": "disabled",
-	"portrait": "disabled",
-	"vga": "disabled",
-	"full-screen": "disabled",
-	"vnc": "disabled",
-	"win2k-hack": "disabled",
-	"no-fd-bootchk": "disabled",
-	"no-acpi": "disabled",
-	"no-hpet": "disabled",
-	"balloon": "disabled",
-	"acpitable": "disabled",
-	"smbios": "disabled",
-	"net": "disabled",
-	"netdev": "disabled",
-	"chardev": "disabled",
-	"bt": "disabled",
-	"kernel": "disabled",
-	"append": "disabled",
-	"initrd": "disabled",
-	"serial": "disabled",
-	"parallel": "disabled",
-	"monitor": "disabled",
-	"qmp": "disabled",
-	"mon": "disabled",
-	"pidfile": "disabled",
-	"singlestep": "disabled",
-	"S": "disabled",
-	"gdb": "disabled",
-	"s": "disabled",
-	"d": "disabled",
-	"hdachs": "disabled",
-	"L": "disabled",
-	"bios": "disabled",
-	"enable-kvm": "disabled",
-	"no-reboot": "disabled",
-	"no-shutdown": "disabled",
-	"loadvm": "disabled",
-	"daemonize": "disabled",
-	"option-rom": "disabled",
-	"clock": "disabled",
-	"rtc": "disabled",
-	"icount": "disabled",
-	"watchdog": "disabled",
-	"watchdog-action": "disabled",
-	"echr": "disabled",
-	"virtioconsole": "disabled",
-	"show-cursor": "disabled",
-	"tb-size": "disabled",
-	"incoming": "disabled",
-	"nodefaults": "disabled",
-	"chroot": "disabled",
-	"runas": "disabled",
-	"readconfig": "disabled",
-	"writeconfig": "disabled",
-	"no-kvm": "disabled",
-	"no-kvm-irqchip": "disabled",
-	"no-kvm-pit": "disabled",
-	"no-kvm-pit-reinjection": "disabled",
-	"pcidevice": "disabled",
-	"enable-nesting": "disabled",
-	"nvram": "disabled",
-	"tdf": "disabled",
-	"kvm-shadow-memory": "disabled",
-	"mem-path": "disabled",
-	"mem-prealloc": "disabled",
-}
--- a/scripts/kvm-ifdown	Thu Nov 17 00:47:16 2011 +0100
+++ b/scripts/kvm-ifdown	Wed Nov 23 04:33:55 2011 +0100
@@ -6,20 +6,15 @@
 
 def del_iface_from_bridge():
     iface = sys.argv[1]
-    bridge = os.environ["bridge_%s" % iface]
-    cmd = ["brctl", "delif", bridge, iface] 
-    call(cmd)
+    bridge = "kvm_bridge_%s" % iface
+    if bridge in os.environ:
+        bridge = os.environ[bridge]
+        cmd = ["brctl", "delif", bridge, iface] 
+        call(cmd)
     # bring down interface
     iface_down = ["ip", "link", "set", iface , "down"]
     call(iface_down)
     # remove tun-tap device
     del_iface_from_tun = ["tunctl", "-d", iface]
-    
-    socket = "/var/run/kvm/%s.socket" % iface
-    pid = "/var/run/kvm/%s.pid" % iface
-    if os.path.exists(socket):
-        os.remove(socket)
-    if os.path.isfile(pid):
-        os.remove(pid)
 
 del_iface_from_bridge()
--- a/scripts/kvm-ifup	Thu Nov 17 00:47:16 2011 +0100
+++ b/scripts/kvm-ifup	Wed Nov 23 04:33:55 2011 +0100
@@ -5,15 +5,13 @@
 from subprocess import call
 
 def add_iface_to_bridge():
-    try:
-        iface = sys.argv[1]
-        bridge = os.environ["bridge_%s" % iface]
+    iface = sys.argv[1]
+    bridge = "kvm_bridge_%s" % iface
+    if bridge in os.environ:
+        bridge = os.environ[bridge]
         cmd = ["brctl", "addif", bridge, iface]
         call(cmd)
-        iface_up = ["ip", "link", "set", iface, "up"]
-        call(iface_up)
-    except KeyError, e:
-        print str(e)
-
+    iface_up = ["ip", "link", "set", iface, "up"]
+    call(iface_up)
 
 add_iface_to_bridge()    
--- a/setup.py	Thu Nov 17 00:47:16 2011 +0100
+++ b/setup.py	Wed Nov 23 04:33:55 2011 +0100
@@ -1,56 +1,53 @@
 #!/usr/bin/env python
+#
+# Setup routine
+#
 
-import os
-import sys
-import time
-from distutils.errors import DistutilsFileError
+"""
+(c) 2011 Jens Kasten <jens@kasten-edv.de>
+"""
+
 from distutils.core import setup
-from distutils.file_util import copy_file
-from distutils.dir_util import copy_tree
-from distutils import log
+from os.path import join, isdir
+from os import listdir, mkdir
+from shutil import copytree, copy, rmtree
+
+from kvmtools.header import Header
+
+def copy_configs():
+    header = Header()
+    base_dir = header.kvm_base_config_dir
+    scripts = join(base_dir, header._kvm_script_dir)
+    configs = join(base_dir, header._kvm_conf_dir)
+    domains = join(base_dir, header._kvm_domain_dir)
+    example = join(domains, "example")
+    auto = join(base_dir, "auto")
+    if isdir(scripts):
+        rmtree(scripts)
+    copytree("scripts", scripts)
+    if isdir(configs):
+        rmtree(configs)
+    copytree("config", configs)
+    if not isdir(domains):
+        mkdir(domains)
+    copy("domains/example", example)
+    if not isdir(auto):
+        mkdir(auto)
 
 
-def copy_files():
-    kvm_config_path = "/etc/kvm"
-    scripts = "scripts"
-    config = "config"
-    bins = "bin"
-    kvm_auto = "auto"
-    domains = "domains"
-    example = "/".join([domains, "example"])
-    var_run_kvm = "/var/run/kvm"
-    kvm_user = "kvm"
-    try:
-        copy_tree(scripts, os.path.join(kvm_config_path, scripts))
-        copy_tree(config, os.path.join(kvm_config_path, config))
-        copy_tree(bins, os.path.join(sys.prefix, bins))
-        copy_tree(domains, os.path.join(kvm_config_path, domains))
-        copy_file(example, os.path.join(kvm_config_path, example))
-        copy_tree(kvm_auto, os.path.join(kvm_config_path, kvm_auto))
-        if not os.path.isdir(var_run_kvm):
-            os.makedirs(var_run_kvm)
-            os.chmod(var_run_kvm, 0750)
-            os.chown(var_run_kvm, kvm_user, kvm_user)
-    except DistutilsFileError, e:
-        print e
-        sys.exit()
-    except OSError, e:
-        print e[1]
-        sys.exit()
+files = [join("bin", i) for i in listdir("bin")]
+dirs = [join("kvmtools", i) for i in listdir("kvmtools") if isdir(join("kvmtools",i))]
+dirs.append("kvmtools")
 
 setup(
-    name = "kvm-tools",
-    version = "0.1.6",
+    name = "kvmtools",
+    version = "0.1.6.4",
+    keywords = ["kvm-admin", "kvmtools"],
     author = "Jens Kasten",
     author_email = "jens@kasten-edv.de",
-    description = ("Tool for managing kvm guests on commandline."),
-    packages = ["kvmtools", ],
-        
-    classifiers = [
-        "Development Status :: 3 - Beta",
-        "Topic :: Utilities",
-        "License :: GPL3",
-    ],
+    description = ("Tools to manage kvm guests on commandline."),
+    license = "GPL2",
+    packages = dirs,
+    scripts = files
 )    
-copy_files()
-
+copy_configs()