summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaximiliano Curia <maxy@debian.org>2012-01-04 00:00:53 +0100
committerMaximiliano Curia <maxy@debian.org>2012-01-04 00:00:53 +0100
commit825fd5668026f70071c7a5eef277b0bf5c8f02d2 (patch)
tree4d3a9112d9887ea16ab5dda07a7a791f15d3278f
Import oregano_0.70.orig.tar.gz
[dgit import orig oregano_0.70.orig.tar.gz]
-rw-r--r--AUTHORS4
-rw-r--r--COPYING340
-rw-r--r--ChangeLog890
-rw-r--r--INSTALL115
-rw-r--r--Makefile.am32
-rw-r--r--NEWS1
-rw-r--r--README19
-rw-r--r--TODO110
-rwxr-xr-xautogen.sh72
-rw-r--r--config.h.in83
-rw-r--r--configure.in93
-rw-r--r--data/Makefile.am15
-rw-r--r--data/examples/12ax7a.oregano694
-rw-r--r--data/examples/Full-wave-bridge-rectifier.oregano316
-rw-r--r--data/examples/Makefile.am17
-rw-r--r--data/examples/carga_capacitor.oregano2
-rw-r--r--data/examples/opamp.oregano2
-rw-r--r--data/examples/simple.oreganobin0 -> 855 bytes
-rw-r--r--data/examples/simple2.oregano2
-rw-r--r--data/glade/Makefile.am22
-rw-r--r--data/glade/clamp-properties-dialog.glade259
-rw-r--r--data/glade/export.glade656
-rw-r--r--data/glade/log-window.glade161
-rw-r--r--data/glade/part-browser.glade304
-rw-r--r--data/glade/part-properties-dialog.glade174
-rw-r--r--data/glade/plot-add-function.glade296
-rw-r--r--data/glade/plot-window.glade363
-rw-r--r--data/glade/print-options.glade405
-rw-r--r--data/glade/properties.glade290
-rw-r--r--data/glade/settings.glade480
-rw-r--r--data/glade/sim-settings.glade1726
-rw-r--r--data/glade/simulation.glade111
-rw-r--r--data/glade/splash.glade90
-rw-r--r--data/glade/splash.xpm7026
-rw-r--r--data/glade/textbox-properties-dialog.glade161
-rw-r--r--data/glade/view-netlist.glade173
-rw-r--r--data/libraries/Makefile.am17
-rw-r--r--data/libraries/cmos.oreglib21291
-rw-r--r--data/libraries/cpu.oreglib4676
-rw-r--r--data/libraries/default.oreglib8962
-rw-r--r--data/libraries/interface.oreglib357
-rw-r--r--data/libraries/linear.oreglib996
-rw-r--r--data/libraries/memory.oreglib6586
-rw-r--r--data/libraries/miscellaneous.oreglib1263
-rw-r--r--data/libraries/opamplib.oreglib2786
-rw-r--r--data/libraries/peripheral.oreglib3544
-rw-r--r--data/libraries/power.oreglib390
-rw-r--r--data/libraries/ttl.oreglib28693
-rw-r--r--data/mime/Makefile.am23
-rw-r--r--data/mime/Makefile.in450
-rw-r--r--data/mime/gnome-oregano.pngbin0 -> 2031 bytes
-rw-r--r--data/mime/gnome-oregano.svg176
-rw-r--r--data/mime/oregano.keys.in4
-rw-r--r--data/mime/oregano.xml.in11
-rw-r--r--data/models/12AX7A.model10
-rw-r--r--data/models/1N4148.model1
-rw-r--r--data/models/1N750.model3
-rw-r--r--data/models/DiodeBridge.model8
-rw-r--r--data/models/Makefile.am13
-rw-r--r--data/models/NPN.model1
-rw-r--r--data/models/PNP.model1
-rw-r--r--data/models/TLC555.model56
-rw-r--r--data/models/UA741.model52
-rw-r--r--data/netlist.lang72
-rw-r--r--data/oregano.desktop.in.in13
-rw-r--r--docs/Library-HOWTO.txt131
-rw-r--r--docs/Makefile.am3
-rw-r--r--docs/oregano-inheritance.diabin0 -> 3684 bytes
-rw-r--r--help/C/Makefile.am10
-rw-r--r--help/C/figures/oregano-main-window.pngbin0 -> 46841 bytes
-rw-r--r--help/C/legal.xml74
-rw-r--r--help/C/oregano-C.omf31
-rw-r--r--help/C/oregano.xml447
-rw-r--r--help/Makefile.am1
-rw-r--r--help/es/Makefile.am7
-rw-r--r--help/es/legal.xml74
-rw-r--r--help/es/oregano-es.omf31
-rw-r--r--help/es/oregano.xml96
-rw-r--r--help/fr/Makefile.am7
-rw-r--r--help/fr/legal.xml28
-rw-r--r--help/fr/oregano-fr.omf30
-rw-r--r--help/fr/oregano.xml137
-rw-r--r--idl/oregano.idl14
-rw-r--r--intl/ChangeLog1086
-rw-r--r--intl/VERSION1
-rw-r--r--intl/bindtextdom.c203
-rw-r--r--intl/cat-compat.c262
-rw-r--r--intl/dcgettext.c624
-rw-r--r--intl/dgettext.c59
-rw-r--r--intl/explodename.c188
-rw-r--r--intl/finddomain.c216
-rw-r--r--intl/gettext.c70
-rw-r--r--intl/gettext.h105
-rw-r--r--intl/gettextP.h89
-rw-r--r--intl/hash-string.h59
-rw-r--r--intl/intl-compat.c76
-rw-r--r--intl/l10nflist.c411
-rw-r--r--intl/libgettext.h182
-rw-r--r--intl/linux-msg.sed100
-rw-r--r--intl/loadinfo.h76
-rw-r--r--intl/loadmsgcat.c222
-rw-r--r--intl/localealias.c424
-rw-r--r--intl/po2tbl.sed.in102
-rw-r--r--intl/textdomain.c108
-rw-r--r--intl/xopen-msg.sed104
-rw-r--r--omf.make61
-rw-r--r--oregano.desktop21
-rw-r--r--oregano.keys.in4
-rw-r--r--oregano.mime2
-rw-r--r--oregano.spec.in58
-rw-r--r--oregano.xml.in13
-rw-r--r--po/ChangeLog33
-rw-r--r--po/Makefile.in.in217
-rw-r--r--po/POTFILES.in65
-rw-r--r--po/ca.po1320
-rw-r--r--po/de.po1307
-rw-r--r--po/es.po1621
-rw-r--r--po/fr.po1559
-rw-r--r--po/it.po1586
-rw-r--r--po/ja.po1596
-rw-r--r--po/pl.po1551
-rw-r--r--po/pt_BR.po1593
-rw-r--r--po/ro.po1596
-rw-r--r--po/ru.po1320
-rw-r--r--po/sv.po1480
-rw-r--r--src/Makefile.am102
-rw-r--r--src/clipboard.c130
-rw-r--r--src/clipboard.h45
-rw-r--r--src/create-wire.c690
-rw-r--r--src/create-wire.h57
-rw-r--r--src/cursors.c67
-rw-r--r--src/cursors.h51
-rw-r--r--src/dialogs.c183
-rw-r--r--src/dialogs.h43
-rw-r--r--src/engines/Makefile.am20
-rw-r--r--src/engines/engine.c178
-rw-r--r--src/engines/engine.h89
-rw-r--r--src/engines/gnucap.c767
-rw-r--r--src/engines/gnucap.h59
-rw-r--r--src/engines/netlist.c689
-rw-r--r--src/engines/netlist.h71
-rw-r--r--src/engines/ngspice.c633
-rw-r--r--src/engines/ngspice.h59
-rw-r--r--src/errors.c37
-rw-r--r--src/errors.h44
-rw-r--r--src/file-manager.c64
-rw-r--r--src/file-manager.h51
-rw-r--r--src/file.c415
-rw-r--r--src/file.h42
-rw-r--r--src/gplot/Makefile.am14
-rw-r--r--src/gplot/gplot.c839
-rw-r--r--src/gplot/gplot.h70
-rw-r--r--src/gplot/gplotfunction.c80
-rw-r--r--src/gplot/gplotfunction.h69
-rw-r--r--src/gplot/gplotlines.c294
-rw-r--r--src/gplot/gplotlines.h55
-rw-r--r--src/load-common.h75
-rw-r--r--src/load-library.c655
-rw-r--r--src/load-library.h78
-rw-r--r--src/load-schematic.c1024
-rw-r--r--src/load-schematic.h39
-rw-r--r--src/main.c252
-rw-r--r--src/main.h65
-rw-r--r--src/model/Makefile.am35
-rw-r--r--src/model/item-data.c541
-rw-r--r--src/model/item-data.h148
-rw-r--r--src/model/node-store.c1227
-rw-r--r--src/model/node-store.h99
-rw-r--r--src/model/node.c334
-rw-r--r--src/model/node.h92
-rw-r--r--src/model/part-label.h39
-rw-r--r--src/model/part-private.h48
-rw-r--r--src/model/part-property.c319
-rw-r--r--src/model/part-property.h42
-rw-r--r--src/model/part.c1099
-rw-r--r--src/model/part.h90
-rw-r--r--src/model/schematic-print-context.h45
-rw-r--r--src/model/schematic.c1114
-rw-r--r--src/model/schematic.h126
-rw-r--r--src/model/sheet-pos.h39
-rw-r--r--src/model/textbox.c468
-rw-r--r--src/model/textbox.h68
-rw-r--r--src/model/wire-private.h45
-rw-r--r--src/model/wire.c640
-rw-r--r--src/model/wire.h87
-rw-r--r--src/netlist-editor.c429
-rw-r--r--src/netlist-editor.h66
-rw-r--r--src/oregano-config.c173
-rw-r--r--src/oregano-config.h45
-rwxr-xr-xsrc/oregano-convert31
-rw-r--r--src/oregano-impl.c140
-rw-r--r--src/oregano-utils.c80
-rw-r--r--src/oregano-utils.h36
-rw-r--r--src/part-browser.c715
-rw-r--r--src/part-browser.h43
-rw-r--r--src/pixmaps/Makefile.am13
-rw-r--r--src/pixmaps/README2
-rw-r--r--src/pixmaps/log.xpm21
-rw-r--r--src/pixmaps/logo.pngbin0 -> 36100 bytes
-rw-r--r--src/pixmaps/logo.xpm2896
-rw-r--r--src/pixmaps/menu_zoom.xcfbin0 -> 1129 bytes
-rw-r--r--src/pixmaps/menu_zoom.xpm64
-rw-r--r--src/pixmaps/mini_icon.xpm31
-rw-r--r--src/pixmaps/mini_icon_plot.xcfbin0 -> 1472 bytes
-rw-r--r--src/pixmaps/mini_icon_plot.xpm33
-rw-r--r--src/pixmaps/plot.xpm72
-rw-r--r--src/pixmaps/tool_arrow.xpm26
-rw-r--r--src/pixmaps/tool_text.xpm27
-rw-r--r--src/pixmaps/tool_wire.xpm36
-rw-r--r--src/plot-add-function.c126
-rw-r--r--src/plot-add-function.h38
-rw-r--r--src/plot.c753
-rw-r--r--src/plot.h37
-rw-r--r--src/save-schematic.c561
-rw-r--r--src/save-schematic.h38
-rw-r--r--src/schematic-view-menu.h183
-rw-r--r--src/schematic-view.c2698
-rw-r--r--src/schematic-view.h127
-rw-r--r--src/settings.c274
-rw-r--r--src/settings.h42
-rw-r--r--src/sheet/Makefile.am28
-rw-r--r--src/sheet/grid.c394
-rw-r--r--src/sheet/grid.h61
-rw-r--r--src/sheet/node-item.c112
-rw-r--r--src/sheet/node-item.h64
-rw-r--r--src/sheet/part-item.c1632
-rw-r--r--src/sheet/part-item.h70
-rw-r--r--src/sheet/sheet-item-factory.c70
-rw-r--r--src/sheet/sheet-item-factory.h38
-rw-r--r--src/sheet/sheet-item.c1222
-rw-r--r--src/sheet/sheet-item.h129
-rw-r--r--src/sheet/sheet-private.h54
-rw-r--r--src/sheet/sheet.c469
-rw-r--r--src/sheet/sheet.h92
-rw-r--r--src/sheet/textbox-item.c699
-rw-r--r--src/sheet/textbox-item.h67
-rw-r--r--src/sheet/wire-item.c916
-rw-r--r--src/sheet/wire-item.h60
-rw-r--r--src/sim-settings.c1064
-rw-r--r--src/sim-settings.h169
-rw-r--r--src/simulation.c264
-rw-r--r--src/simulation.h136
-rw-r--r--src/smallicon.c66
-rw-r--r--src/smallicon.h33
-rw-r--r--src/spice2to3.awk294
-rw-r--r--src/splash.c118
-rw-r--r--src/splash.h46
-rw-r--r--src/stock.c92
-rw-r--r--src/stock.h53
-rw-r--r--src/stock/Makefile.am18
-rw-r--r--src/stock/arrow.xpm64
-rw-r--r--src/stock/clamp.xpm30
-rw-r--r--src/stock/grid.xcfbin0 -> 4022 bytes
-rw-r--r--src/stock/grid.xpm56
-rw-r--r--src/stock/part-browser.xcfbin0 -> 2857 bytes
-rw-r--r--src/stock/part-browser.xpm427
-rw-r--r--src/stock/plot.xcfbin0 -> 2704 bytes
-rw-r--r--src/stock/plot.xpm209
-rw-r--r--src/stock/plot2.xcfbin0 -> 2530 bytes
-rw-r--r--src/stock/rotate.xpm62
-rw-r--r--src/stock/sim-settings.xpm187
-rw-r--r--src/stock/text.xpm30
-rw-r--r--src/stock/vclamp.xpm88
-rw-r--r--src/stock/voltmeter.xpm30
-rw-r--r--src/stock/wire.xpm184
-rw-r--r--src/stock/zoom_in.xpm36
-rw-r--r--src/stock/zoom_out.xpm36
-rw-r--r--src/stock/zoom_pan.xpm270
-rw-r--r--src/stock/zoom_region.xpm229
-rw-r--r--src/xml-compat.h50
-rw-r--r--src/xml-helper.c254
-rw-r--r--src/xml-helper.h56
-rw-r--r--stamp.h.in0
-rwxr-xr-xtools/oregano-convert31
-rw-r--r--tools/spice2to3.awk295
-rw-r--r--xmldocs.make101
276 files changed, 154901 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..f15a839
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,4 @@
+Richard Hult <d4hult@dtek.chalmers.se>
+Ricardo Markiewicz <rmarkie@fi.uba.ar>
+Andrés de Barbará <adebarbara@fi.uba.ar>
+
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..eeb586b
--- /dev/null
+++ b/COPYING
@@ -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) 19yy <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) 19yy 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.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..5343701
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,890 @@
+Tue, 14 Apr 2009 Marc Lorber <Lorber.Marc@wanadoo.fr>
+ * TAG 0.70
+ * Installation of Makefile to allow full useability of anjuta:
+ -Creation of ./autogen.sh
+ -creation of ./Makefile.am
+ -creation of ./data/models/Makefile.am
+ -creation of ./data/mime/Makefile.am
+ -creation of ./data/examples/Makefile.am
+ -creation of ./data/glade/Makefile.am
+ -creation of ./data/Makefile.am
+ -creation of ./data/libraries/Makefile.am
+ -creation of ./src/engines/Makefile.am
+ -creation of ./src/Makefile.am
+ -creation of ./src/pixmaps/Makefile.am
+ -creation of ./src/model/Makefile.am
+ -creation of ./src/sheet/Makefile.am
+ -creation of ./src/stock/Makefile.am
+ -creation of ./src/gplot/Makefile.am
+ -creation of ./docs/Makefile.am
+ -creation of ./help/fr/Makefile.am
+ -creation of ./help/es/Makefile.am
+ -creation of ./help/Makefile.am
+ -creation of ./help/C/Makefile.am
+
+ * Glade file are moved from directory dialogs to glade
+ * Glade files have their extension chaged from glade2 to glade
+
+ * Various cleanup to answer makefile warnings:
+ -cleanup of gnucap.c
+ -cleanup of ngspice.c
+ -deletion of unused code in idem-data.c
+ -correction of bug regarding addition of a new part into an existing schema:
+ the part refdes restart at 1: modification of part.c
+ -cleanup of schematic.c
+ -cleanup of file.c
+ -cleanup of part-browser.c
+
+ * Addition of Contextual menu to avoid warning in execution!
+ -Modification of part-item.c
+ -Modification of sheet-item.c
+ -Modification of sheet-item.h
+ -Modification of textbox-item.c
+ -Modification of plot.c
+
+ * Addition of 2 new services in dialog.c and dialogs.h
+ to provide warning windows
+ * Removal of gnome_about_new in dialog.c
+
+ * Add a contextual dialog for the plot-add-function in
+ plot-add-function.c
+
+ * Improve localisation of menu by modification of schematic-view-menu.h
+
+ * Add contextual recent edited files in schematic-view.c
+
+ * Add a test of availability of splash.glade in splash.c
+
+
+Tue, 14 Aug 2007 03:05:24 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * TAG 0.69.0
+
+Tue, 14 Aug 2007 03:05:00 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * New development release
+
+Wed, 18 Jul 2007 03:57:14 timo.lindfors@iki.fi
+ * settings-set-default-engine
+ Always set default engine in settings dialog. This fix supresses the
+extra warning message
+
+Wed, 18 Jul 2007 03:51:21 timo.lindfors@iki.fi
+ * bugfix-942
+ Fix bug 942. If a user closes the settings dialog using "Window
+elements" act as if the user had pressed the "Close button" (this
+saves settings).
+
+Tue, 17 Jul 2007 17:31:44 timo.lindfors@iki.fi
+ * increase-plot-border
+ Increase the size of the border around the plot axis to fix bug #945.
+
+Fri, 13 Jul 2007 19:06:06 timo.lindfors@iki.fi
+ * install-1N4148
+ Make sure 1N4148.model really gets installed too.
+
+Fri, 13 Jul 2007 15:40:48 timo.lindfors@iki.fi
+ * add-1N4148
+ Add missing 1N4148.model that examples/simple2.oregano uses. This fix
+was suggested by marga on #lugfi. A bug report is also available at
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=432997
+
+Sun, 21 Jan 2007 21:42:44 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Remove verbosity.
+
+Fri, 19 Jan 2007 20:32:31 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Set labels color when printing and set proper default colors.
+
+Fri, 19 Jan 2007 20:15:11 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Missing parameter to g_print.
+
+Fri, 19 Jan 2007 20:14:51 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Use c as short argument for "convert".
+
+Mon, 25 Dec 2006 23:03:39 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Added command line option to convert schematics.
+ Now we can use Oregano to batch convert Schematics file into
+PDF, PS, SVG or PNG with the --convert command line option.
+Additionally we can set the width and height of the output using
+--width and --height.
+
+Mon, 25 Dec 2006 22:58:00 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Lower-case package name.
+
+Sun, 03 Dec 2006 18:33:02 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Let the user change print colors in the print dialog.
+ Now the user can change all the default colors when printing. The color are
+stored per session right now, so they will be reset to default colors the
+next time that oregano run.
+
+Sun, 03 Dec 2006 18:31:40 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix a bug in rotation code.
+
+Tue, 12 Sep 2006 17:13:47 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Modularize rotule printing.
+
+Tue, 12 Sep 2006 16:03:04 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Basic rotule.
+
+Tue, 12 Sep 2006 14:36:31 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Added Background options to export.
+
+Tue, 12 Sep 2006 14:14:45 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Draw dots when printing or exporting.
+
+Thu, 07 Sep 2006 20:46:41 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Change GtkFileChooserButton that can't be used as Save dialog.
+
+Wed, 06 Sep 2006 21:36:49 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Bump cairo version to 1.2.0.
+
+Wed, 06 Sep 2006 21:10:45 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix problems when exporting, caused by lack of includes.
+
+Wed, 06 Sep 2006 20:20:46 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Pass correct format to export's function.
+
+Wed, 06 Sep 2006 19:56:55 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Added Schematic export.
+ The export dialog let the user choose one export format based
+on the features supported by Cairo.
+
+Wed, 06 Sep 2006 16:41:47 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Split render and printing code.
+ With this now I add a new schematic_export function.
+
+Wed, 06 Sep 2006 16:41:27 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix return value.
+
+Wed, 06 Sep 2006 02:33:24 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Port printing code to GtkPrint.
+ Now the print engine is based on GtkPrint and Cairo.
+Gtk+ version bump to 2.10
+
+Thu, 19 Oct 2006 11:46:11 maxy@gnuservers.com.ar
+ * .desktop update, thanks to Jordi Mallach
+
+Thu, 19 Oct 2006 11:39:51 maxy@gnuservers.com.ar
+ * Change electrical to electronic
+
+Mon, 02 Oct 2006 15:52:52 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Install missing icon.
+ Also, use the SVG version of the icon.
+
+Fri, 08 Dec 2006 02:26:52 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Show the model definition in the part-properties window.
+ By now is read only. I'll add the ability to modify and save the custom model
+in the schematic.
+
+Fri, 08 Dec 2006 02:26:16 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Remove unused declarations.
+
+Sat, 30 Sep 2006 01:44:31 rmarkie@fi.uba.ar
+ * TAG 0.60.0
+
+
+Sat, 30 Sep 2006 01:43:59 rmarkie@fi.uba.ar
+ * Preparing for new release.
+
+
+Thu, 28 Sep 2006 17:00:17 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix the ngspice parser to proper parse multiple analysis.
+ This also add a lot of verbosity about what the parser is doing, to help
+find bugs and debug the parser.
+
+Wed, 27 Sep 2006 11:09:45 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Added NgSpice model support.
+
+
+Wed, 27 Sep 2006 11:02:18 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Change unit step to 3.
+
+
+Wed, 27 Sep 2006 00:47:08 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * NgSpice is working again.
+
+
+Tue, 26 Sep 2006 23:10:46 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Remove unnecesary goto.
+
+
+Tue, 26 Sep 2006 22:57:22 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Improve parsing non-binary data.
+ Still lack parsin binary data.
+
+Tue, 26 Sep 2006 22:17:44 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Initial NgSpice parser.
+ Is not fully functional!
+
+Tue, 26 Sep 2006 15:20:55 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Print label unit as text.
+
+
+Mon, 25 Sep 2006 17:08:32 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix wire union.
+ This close bug #319
+
+Mon, 25 Sep 2006 16:46:22 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Ask to save changes when File->Quit is requested.
+ This close bug# 514.
+
+Mon, 25 Sep 2006 15:35:28 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Tree cleanup.
+
+
+Fri, 22 Sep 2006 17:00:54 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Change Object properties sensitivity based on the selection.
+
+
+Fri, 22 Sep 2006 16:59:30 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * New method to check if an ItemData has properties.
+ This methos is useful to change the sensitivity of the menu and
+toolbars items.
+
+Fri, 22 Sep 2006 16:03:19 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix compilation warnings.
+
+
+Fri, 22 Sep 2006 15:54:42 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Release simulation data when engine is destroyed.
+
+
+Fri, 22 Sep 2006 15:53:55 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Port to GOptions.
+
+
+Thu, 14 Sep 2006 22:39:32 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Disable unused menus
+
+
+Thu, 14 Sep 2006 01:50:38 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Improve axis drawing in GPlot.
+
+
+Wed, 13 Sep 2006 16:44:17 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Enabling Plot Functions again.
+
+
+Wed, 13 Sep 2006 16:26:16 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Reset next_color on each plot.
+
+
+Wed, 13 Sep 2006 01:17:44 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Enabling plot colors again.
+
+
+Tue, 12 Sep 2006 23:59:26 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix memory leak and possible crash.
+
+
+Tue, 12 Sep 2006 01:01:53 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * New build Target : update-pot.
+
+
+Tue, 12 Sep 2006 01:01:11 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * New Build option Debug.
+ Set Debug=yes if you want compile with debug symbols.
+
+Tue, 12 Sep 2006 01:00:09 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * SUBCKT can't use 0 as pin ID.
+ Because 0 is the global ground.
+
+Tue, 12 Sep 2006 00:52:17 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Install examples.
+
+
+Tue, 12 Sep 2006 00:43:58 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Unregister ItemData before start moving.
+ This close bug #320
+
+Mon, 11 Sep 2006 21:15:39 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Added Flip option in component popup menu.
+ This close bug #323.
+
+Mon, 11 Sep 2006 21:14:23 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix potential crash while flipping components.
+
+
+Mon, 11 Sep 2006 03:11:18 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Added gettext template (.pot)
+
+
+Mon, 11 Sep 2006 02:47:50 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Update translations.
+
+
+Mon, 11 Sep 2006 02:47:30 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Added missing files for translations.
+
+
+Mon, 11 Sep 2006 01:50:45 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Merged Settings and Edit menu.
+
+
+Mon, 11 Sep 2006 01:10:03 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Improved Schematic's error log.
+ Now the Schematic use a GtkTextBuffer to save error reports, and
+use Tag to highlite critical errors.
+
+Sat, 09 Sep 2006 01:44:41 lucas.chiesa[_\c2_]@gmail.com
+ * Fix selected label colors.
+ Closes bug #322
+
+Sat, 09 Sep 2006 01:43:44 lucas.chiesa[_\c2_]@gmail.com
+ * Fix shortcuts in Edit menu
+
+
+Sat, 09 Sep 2006 01:08:14 lucas.chiesa[_\c2_]@gmail.com
+ * Moved Tools -> View Netlist to View -> Netlist
+
+
+Fri, 08 Sep 2006 17:31:39 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Added VAC symbol.
+ This close bug #24[1], thanks Diego Essaya.
+
+[1]: https://gforge.lug.fi.uba.ar/tracker/index.php?func=detail&aid=24&group_id=11&atid=132
+
+Thu, 07 Sep 2006 12:39:10 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix Translation.
+
+
+Thu, 07 Sep 2006 02:13:11 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Check for engine availability.
+ Also, improve settings dialog with a graphical alert if the
+engine is not fully available.
+
+Mon, 04 Sep 2006 19:44:26 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Added new example.
+ The Full-wave bridge rectifier example show the magic behind
+the new model usage.
+
+Mon, 04 Sep 2006 19:28:36 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Include models in the netlist.
+ The models are included using the .include command, referencing a .model
+file installed in PREFIX/share/oregano/models.
+
+Mon, 04 Sep 2006 19:26:11 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Modify library to use the new Diode Bridge model.
+
+
+Mon, 04 Sep 2006 19:25:49 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Added a new Model : Diode Bridge.
+
+
+Mon, 04 Sep 2006 19:24:46 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Install Spice/GnuCap models.
+
+
+Mon, 04 Sep 2006 01:56:20 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Hide unused button in the toolbar.
+
+
+Mon, 04 Sep 2006 01:39:35 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Removed old code that cause glib warnings.
+
+
+Mon, 04 Sep 2006 01:16:38 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Emit Aborted signal if there was no analysis.
+
+
+Tue, 29 Aug 2006 23:30:29 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Implement stop method in OreganoGnuCap.
+
+
+Tue, 29 Aug 2006 22:24:05 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Added aborted signal to OreganoEngine.
+
+
+Tue, 29 Aug 2006 11:01:22 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Let the UI responds better during the simulation.
+
+
+Tue, 29 Aug 2006 10:59:51 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Show current operation in the progress dialog.
+
+
+Tue, 29 Aug 2006 02:20:53 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Update settings dialog and config options.
+
+
+Tue, 29 Aug 2006 02:19:20 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Use EngineFactory.
+
+
+Tue, 29 Aug 2006 01:34:01 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Added Engine Factory.
+
+
+Tue, 29 Aug 2006 01:33:48 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Missing argument.
+
+
+Mon, 28 Aug 2006 10:53:17 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Oregano should compile again.
+ Fix compilation (many features are broken at this moment!).
+Also, fix many gcc warnings.
+
+Mon, 28 Aug 2006 01:05:05 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Plot window now functional again.
+
+
+Mon, 28 Aug 2006 01:04:24 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * schematic_log_append really append now.
+
+
+Mon, 28 Aug 2006 01:03:41 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Temporal place for helpers.
+
+
+Mon, 28 Aug 2006 01:02:25 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * GnuCap parser complete.
+
+
+Mon, 28 Aug 2006 01:01:32 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Added a method to retrievesimulation results to engines.
+
+
+Sun, 27 Aug 2006 21:51:27 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix callback name.
+
+
+Sun, 27 Aug 2006 21:44:11 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Make sure to read all output of backend.
+
+
+Sun, 27 Aug 2006 21:09:42 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * GnuCap I/O private refactoring.
+
+
+Sun, 27 Aug 2006 21:07:52 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix method parameters.
+
+
+Sun, 27 Aug 2006 14:38:15 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Add I/O watches to read GnuCap stdout.
+
+
+Sun, 27 Aug 2006 02:49:14 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Removed unneeded external parsing script.
+
+
+Sun, 27 Aug 2006 02:46:09 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix some includes problems.
+
+
+Sun, 27 Aug 2006 02:45:14 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Remove simulate.h.
+
+
+Sun, 27 Aug 2006 02:44:11 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix NetlistData initialization.
+
+
+Sun, 27 Aug 2006 02:19:08 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Added GnuCap engine and netlist generation.
+ This break source code compilation and there are many
+things to do before get Oregano working again.
+
+The netlist generation was split into Netlist Helper functions
+and Engine specific output formating.
+
+Sat, 26 Aug 2006 22:17:11 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Initial engine modularization.
+ We'll provide an unified interface to access multiple spice-like engines.
+This will cause that it's simpler to add other simulation engines.
+
+Sat, 26 Aug 2006 16:26:22 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Move dialogs dir to a better place.
+
+
+Sat, 26 Aug 2006 15:54:47 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * SConstruct cleanup.
+ * Install .desktop file in the correct place.
+ * Run update-mime-database only after installing.
+ * Coding style fixes.
+
+Thu, 24 Aug 2006 17:37:51 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix possible crash when editing part properties.
+
+
+Thu, 24 Aug 2006 01:04:05 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Instant-Apply properties dialogs.
+
+
+Thu, 24 Aug 2006 00:53:56 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Instant-Apply simulation settings dialog.
+
+
+Thu, 24 Aug 2006 00:44:22 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Instant-Apply settings dialog.
+
+
+Thu, 24 Aug 2006 00:43:25 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Missing Widget cast.
+
+
+Thu, 24 Aug 2006 00:30:54 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * New command-line options.
+ * RunUpdateMimeDatabase=[yes|no] to enable or disable running
+ update-mime-database
+ * Now -h show full help text
+
+Wed, 23 Aug 2006 23:30:15 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Replace the deprecated GnomeEntry with GtkFileChooserButton.
+
+
+Wed, 23 Aug 2006 22:49:09 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Add some #DEFINE and includes to enable Gtk+ gettext support.
+
+
+Tue, 25 Jul 2006 11:43:40 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * TAG 0.50.1
+
+
+Tue, 25 Jul 2006 11:43:05 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Final touches for the new release.
+
+
+Tue, 25 Jul 2006 10:21:40 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Strip / from begin of PREFIX path.
+
+
+Tue, 25 Jul 2006 10:12:37 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Merge SCons modifications.
+
+
+Tue, 25 Jul 2006 09:04:03 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * More [_\c3_]SCons fixes.
+
+
+Wed, 31 May 2006 21:29:23 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Some fix to build system.
+ The first fix set default SourceSignature to timestamp, to avoid scons
+create .sconssing files everywhere when using MD5 signatures.
+
+The second fix prevent scons to check DESTDIR in build time, and check for
+DESTDIR on install.
+
+Wed, 24 May 2006 00:09:33 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * TAG 0.50.0
+
+
+Wed, 24 May 2006 00:08:14 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Update copyright year.
+
+
+Tue, 23 May 2006 23:56:32 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Remove more unused close.
+
+
+Tue, 23 May 2006 23:44:42 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Adjust axis unit label.
+ We find the best divisor for the current window, and adjustthe labels text
+to show.
+
+For example new want show a mark with value "10" and an axis label "10e2 Hz",
+instead a mark of value "1000" with an axis label "Hz".
+
+Tue, 23 May 2006 22:58:35 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Remove unused code.
+
+
+Sun, 21 May 2006 16:39:53 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix problems with ngspice backend.
+ Patch sent by Marc Lorber (Lorber.Marc at wanadoo dot fr.
+
+Sun, 14 May 2006 19:21:15 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Some coding style fixes.
+
+
+Sun, 14 May 2006 19:19:32 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix clean function.
+
+
+Sun, 14 May 2006 19:11:18 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Correct display when width == 0 or heught == 0.
+
+
+Sun, 14 May 2006 19:10:09 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Update bbox first.
+
+
+Sun, 14 May 2006 19:08:56 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix list destruction.
+
+
+Sat, 06 May 2006 01:43:04 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Add unit's labels to the plot.
+
+
+Sat, 06 May 2006 01:10:03 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Finals touches in Scons scripts.
+
+
+Sat, 06 May 2006 01:07:08 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Update dependencies versions.
+ Please report if you find that Oregano compile with an older version of any
+dependency.
+
+Mon, 01 May 2006 23:04:36 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Install additional files.
+
+
+Wed, 26 Apr 2006 23:48:01 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Do not update .po files on build.
+
+
+Wed, 26 Apr 2006 23:19:03 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Add gettext support.
+
+
+Wed, 26 Apr 2006 22:20:17 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Drop autotools in favor of SCons.
+ SCons[1] is an Open Source software construction tool.
+
+[1] : http://www.scons.org/
+
+Sun, 23 Apr 2006 21:04:54 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Show cursor value in plot window.
+
+
+Sun, 23 Apr 2006 21:03:44 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix events propagation.
+
+
+Sun, 23 Apr 2006 21:03:07 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Mapping user and device coords.
+
+
+Sun, 23 Apr 2006 20:22:55 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Code clean up.
+
+
+Sun, 23 Apr 2006 20:17:12 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Added Stock icons for zoom toolbar in the plot window.
+
+
+Tue, 11 Apr 2006 21:25:48 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Update dependencies.
+
+
+Tue, 11 Apr 2006 21:14:48 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Prevent joining wires if a node exists.
+
+
+Tue, 11 Apr 2006 20:52:28 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Delete unused file.
+ The ChangeLog file will be generated using `darcs changes` in
+each release.
+
+Tue, 11 Apr 2006 20:00:41 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * TAG 0.40.9
+
+
+Tue, 11 Apr 2006 19:59:30 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Marking version as 0.50.0-beta!
+
+
+Tue, 11 Apr 2006 19:59:12 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Replaced GtkCairoPlot with GPlot.
+ This is the first fase of the port. Not all functionalities was done yet.
+
+Fri, 03 Mar 2006 01:10:43 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * label's anchor improvement.
+
+
+Sun, 11 Dec 2005 16:29:22 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * improvement of the plotting window.
+
+
+Mon, 05 Dec 2005 14:33:20 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Improved anchor adjustment when flipping.
+
+
+Sun, 04 Dec 2005 14:21:37 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Part Property dialog renewed.
+
+
+Sun, 04 Dec 2005 02:37:27 rmarkie@fi.uba.ar
+ * Fix Wire's resizers rotation.
+
+
+Sat, 03 Dec 2005 16:15:28 rmarkie@fi.uba.ar
+ * Fix flip code.
+ This patch fix the buggy flipping code. It's not perfect but works reasonably.
+
+Fri, 18 Nov 2005 02:00:20 rmarkie@fi.uba.ar
+ * Use the mouse wheel to change sheet's zoom.
+
+
+Tue, 08 Nov 2005 13:30:48 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Fix several compiler warnings.
+ This patch replace strcmp by xmlStrcmp in XML functions
+to ensure properly UTF-8 management.
+Also add BAD_CAST macro whenever is required to avoid
+that the compiler emit a warning.
+
+Mon, 07 Nov 2005 00:56:47 rmarkie@fi.uba.ar
+ * Checked if parser and engine exists before simulation is made.
+ This patch close the bug #50.
+
+Sun, 06 Nov 2005 19:24:04 rmarkie@fi.uba.ar
+ * Fix Makefile's
+
+
+Sun, 30 Oct 2005 13:56:46 rmarkie@fi.uba.ar
+ * Update schematic title after saving circuit.
+ This close the bug #53.
+
+Sat, 22 Oct 2005 21:50:36 rmarkie@fi.uba.ar
+ * Updated sv.po
+
+
+Thu, 20 Oct 2005 22:04:30 rmarkie@fi.uba.ar
+ * HIG violation fix.
+ This patch close the bug #48 that fix a HIG problem in the Save file dialog.
+Thanks to Gregory Leblanc <headmaster.albus.dumbledore@gmail.com> for
+this patch.
+
+Wed, 19 Oct 2005 16:11:03 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Placing more than 1 component on the schematic.
+ This close the bug #52.
+To add more than one component you should hold control down and
+then place.
+
+I don't implement as Seth Nickell and Gregory Leblanc suggests, because there
+is no way to know if you click in a non-blank area (Not without looking for in
+all the list of components).
+
+Wed, 19 Oct 2005 14:51:50 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Typing in a component name and pressing 'enter' allow to add the first match in schematic.
+ This patch fix the bug #51 [1]
+
+Tue, 18 Oct 2005 14:51:56 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Missing Makefile.am
+
+
+Tue, 18 Oct 2005 14:37:13 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Translations Update.
+
+
+Mon, 17 Oct 2005 14:06:51 oregano@marga.com.ar
+ * Fixing typos and warning messages
+
+
+Sat, 03 Sep 2005 13:19:52 oregano@marga.com.ar
+ * Added a couple of comments.
+
+
+Mon, 17 Oct 2005 13:31:33 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Reorganize source Tree.
+
+
+Sun, 11 Sep 2005 22:06:00 rmarkie@fi.uba.ar
+ * Added the possibility of changing the wire's size.
+ This add the ability to change wire's size. To do this we
+add a small rectangle on the corners when it is selected,
+and you can drag from there.
+
+Thu, 08 Sep 2005 13:06:07 oregano@marga.com.ar
+ * Re-updated ru.po with complete translation
+
+
+Tue, 06 Sep 2005 23:31:52 oregano@marga.com.ar
+ * Updated and completed ru.po
+
+
+Sat, 03 Sep 2005 14:14:02 oregano@marga.com.ar
+ * Fixed the text of the temporary file warning.
+
+
+Sat, 03 Sep 2005 14:01:48 oregano@marga.com.ar
+ * Updated sv.po
+
+
+Sat, 03 Sep 2005 14:00:41 oregano@marga.com.ar
+ * Updated ru.po
+
+
+Sat, 03 Sep 2005 14:00:10 oregano@marga.com.ar
+ * Updated ro.po
+
+
+Sat, 03 Sep 2005 13:58:33 oregano@marga.com.ar
+ * Updated pt_BR.po
+
+
+Sat, 03 Sep 2005 13:56:49 oregano@marga.com.ar
+ * Updated ja.po
+
+
+Sat, 03 Sep 2005 13:56:10 oregano@marga.com.ar
+ * Updated it.po
+
+
+Sat, 03 Sep 2005 13:55:19 oregano@marga.com.ar
+ * Updated fr.po
+
+
+Sat, 03 Sep 2005 13:53:07 oregano@marga.com.ar
+ * Updated de.po
+
+
+Sat, 03 Sep 2005 13:49:53 oregano@marga.com.ar
+ * Updated and fixed es.po
+
+
+Sat, 03 Sep 2005 13:48:29 oregano@marga.com.ar
+ * Updated ca.po
+
+
+Sat, 03 Sep 2005 13:22:41 oregano@marga.com.ar
+ * Added simulate.c to the POTFILES
+
+
+Sat, 03 Sep 2005 16:02:26 rmarkie@fi.uba.ar
+ * Fix return value
+
+
+Sat, 03 Sep 2005 13:31:08 rmarkie@fi.uba.ar
+ * Update de.po
+
+
+Sat, 03 Sep 2005 13:29:10 rmarkie@fi.uba.ar
+ * Update ca.po
+
+
+Sat, 27 Aug 2005 15:17:12 oregano@marga.com.ar
+ * Allow for gettext to work on the user preferences dialog.
+
+
+Sat, 27 Aug 2005 14:52:42 oregano@marga.com.ar
+ * Updated sv.po
+
+
+Sat, 27 Aug 2005 14:52:26 oregano@marga.com.ar
+ * Updated ru.po
+
+
+Sat, 27 Aug 2005 14:52:05 oregano@marga.com.ar
+ * Updated ro.po
+
+
+Sat, 27 Aug 2005 14:51:03 oregano@marga.com.ar
+ * Updated pt_BR.po
+
+
+Sat, 27 Aug 2005 14:49:45 oregano@marga.com.ar
+ * Updated ja.po
+
+
+Sat, 27 Aug 2005 14:49:22 oregano@marga.com.ar
+ * Updated it.po
+
+
+Sat, 27 Aug 2005 14:48:06 oregano@marga.com.ar
+ * Updated fr.po
+
+
+Sat, 27 Aug 2005 14:46:41 oregano@marga.com.ar
+ * Updated de.po
+
+
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..2b8a11c
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,115 @@
+Installation Instructions
+*************************
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved. This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+Briefly, the shell commands `./autogen.sh && ./configure && make &&
+make install' should configure, build, and install this package.
+The following more-detailed instructions are generic; see the `README'
+file for instructions specific to this package. Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below.
+
+The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+The file `configure.in' is used to create `configure' by a program called
+`autoconf'. You need `configure.in' if you want to change it or regenerate
+`configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./autogen.sh && ./configure' to configure the package for your system.
+
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Type `make install' to install the programs and any data files and
+ documentation. When installing into a prefix owned by root, it is
+ recommended that the package be configured and built as a regular
+ user, and only the `make install' phase executed with root
+ privileges.
+
+ 4. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+ 5. Often, you can also type `make uninstall' to remove the installed
+ files again. In practice, not all packages have tested that
+ uninstallation works correctly, even though it is required by the
+ GNU Coding Standards.
+
+ 6. Some packages, particularly those that use Automake, provide `make
+ distcheck', which can by used by developers to test that all other
+ targets like `make install' and `make uninstall' work correctly.
+ This target is generally not run by end users.
+
+Installation Names
+==================
+
+By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+The first method involves providing an override variable for each
+affected directory. For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'. Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated. The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+The second method involves providing the `DESTDIR' variable. For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names. The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters. On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..ab9a5a8
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,32 @@
+## Process this file with automake to produce Makefile.in
+
+SUBDIRS = po src data help
+
+oreganodocdir = $(datadir)/doc/oregano
+oreganodoc_DATA = \
+ README\
+ COPYING\
+ AUTHORS\
+ INSTALL\
+ NEWS\
+ TODO
+
+oregano_datadir = $(datadir)/oregano
+
+
+EXTRA_DIST = \
+ autogen.sh \
+ setup-gettext \
+ intltool-extract.in\
+ intltool-merge.in\
+ intltool-update.in
+
+nomerelease:
+ scp *.tar.bz2 master.gnome.org:
+
+DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
+
+DISTCLEANFILES = \
+ intltool-extract \
+ intltool-merge \
+ intltool-update
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..f0fc2b5
--- /dev/null
+++ b/NEWS
@@ -0,0 +1 @@
+Not used, see the web site https:github.com/marc-lorber/oregano
diff --git a/README b/README
new file mode 100644
index 0000000..2405bbf
--- /dev/null
+++ b/README
@@ -0,0 +1,19 @@
+
+ oregano - An electrical engineering tool for GNOME
+
+oregano is an application for schematic capture and simulation of
+electronic circuits. The actual simulation is performed by Berkeley
+Spice, or GNUcap or the new generation ngspice.
+
+oregano is licensed under the terms of the GNU GPL included in the
+file COPYING.
+
+You need libgnome2, libglade2, libgnomeui2, libgtksourceview2.0
+and libxml2 to run oregano.
+They can be found at ftp.gnome.org or mirrors.
+To have an executable running you may do 'sh autogen.sh && ./configure && make && make install'
+
+oregano still lacks many features. If you want to help out, please
+send an email to the project.
+
+WWW : https://github.com/marc-lorber/oregano
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..713b3f0
--- /dev/null
+++ b/TODO
@@ -0,0 +1,110 @@
+TODO list for Oregano.
+---------------------
+* Documentation : User manual, quick reference, doc for developers ,etc
+
+* Add a BUGs file that describe bugs by #.
+
+> If in the simulation I set a start time quite greater than 0, and use
+> some pulse and/or sine generator to simulate the input to the circuit,
+> then I got no output (because of no input is present). It looks like
+> the imput is present only for a duration of tstop - tsart, and always
+> starting at time=0
+
+* Use library_name::symbol_name as key to hash the symbols.
+
+* Methods to save/load ItemData's (save first).
+
+* Context menus: make it possible to have entries that only show up when
+ there are x selected items (e.g. 1 or 1+).
+ Example: edit properties should only work with 1 selected part.
+
+* Undo/redo
+
+* Find and plug memory leaks
+
+* Voltage/current meters at nodes
+
+* New Sheet widget (resizable). (Gazer: Maybe fixed page model like Orcad)
+
+* Tooltips for sheet-items?
+ new member: note = text for tooltip.
+ autoshow/keybinding.
+ item-data holds the text and sheet-item checks for leave/enter notify.
+ show properties...?
+
+* Hierarchic schematics (use a schematic as a part).
+
+
++-------------------------+
+| IDEAS |
++-------------------------+
+CRITICAL:
+
+ netlists
+
+ nodes at wire endpoints.
+
+TODO:
+
+ split node->count into wires and parts (to get connection dots...)
+
+
+Structures
+----------
+
+Pins
+ Pins are stored in a hash table, using the coordinate (x,y) as key.
+
+Wires
+ All Wires are stored in a list.
+
+SheetNodes
+ For every position on the sheet that is populated with at least
+ one pin, there is a SheetNode. This SheetNode contains a list of
+ pins that are connected to it, as well as a list of wires. (The
+ SheetNode might also contain a pointer to the NetNode that this
+ node is part of?)
+
+NetNodes
+ NetNodes are the nodes that correspond to the spice netlist nodes.
+ A NetNode holds a list of SheetNodes.
+
+
+Algorithms
+----------
+
+Lookup
+ Pins are easy to retrieve at a certain coordinate; just perform a
+ hash table lookup at (x, y).
+
+ When we need to see if there is a wire at a certain position,
+ we can use the gnome_canvas_get_item_at () function. This doesn't
+ work reliably though, since it depends on the wire being on top and
+ also uses the close_enough variable, which makes it non-exact.
+
+ Another method would be to search through all the wires contained
+ within the sheet to see if any of them matches the given coordinate.
+ This could be slow and inefficient, but maybe not, given that there
+ will not be thousands of wires in a normal circuit, but rather
+ hundreds. However, this is still not the best way to do it.
+ Scalability is a goal, so this must be taken in consideration.
+
+ To see if a wire crosses a pin, we would have to search through
+ all the pins and check for matches.
+
+Moving/Removing/Adding
+ Parts
+ Wires
+ Groups of parts/wires
+
+REMEMBER
+--------
+
+ We must be able to do a "reconnect all nodes"-thing. A function that
+ goes through all the parts/wires and makes sure that things that are
+ on the same node are connected and so on. This means we cannot depend
+ on any canvas helper stuff, like signals from items etc.
+
+ When loading schematic files from disk, we need to read the node
+ structure and not build it on the fly. Unless it will be efficient
+ enough...
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 0000000..9a55b32
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,72 @@
+#!/bin/sh
+#
+# autogen.sh glue for hplip
+#
+# HPLIP used to have five or so different autotools trees. Upstream
+# has reduced it to two. Still, this script is capable of cleaning
+# just about any possible mess of autoconf files.
+#
+# BE CAREFUL with trees that are not completely automake-generated,
+# this script deletes all Makefile.in files it can find.
+#
+# Requires: automake 1.9, autoconf 2.57+
+# Conflicts: autoconf 2.13
+set -e
+
+# Refresh GNU autotools toolchain.
+echo Cleaning autotools files...
+find -type d -name autom4te.cache -print0 | xargs -0 rm -rf \;
+find -type f \( -name missing -o -name install-sh -o -name mkinstalldirs \
+ -o -name depcomp -o -name ltmain.sh -o -name configure \
+ -o -name config.sub -o -name config.guess \
+ -o -name Makefile.in \) -print0 | xargs -0 rm -f
+
+echo Running autoreconf...
+autoreconf --force --install
+
+echo "Running intltoolize"
+intltoolize --copy --force --automake
+
+# For the Debian package build
+test -d debian && {
+ # link these in Debian builds
+ rm -f config.sub config.guess
+ ln -s /usr/share/misc/config.sub .
+ ln -s /usr/share/misc/config.guess .
+
+ # refresh list of executable scripts, to avoid possible breakage if
+ # upstream tarball does not include the file or if it is mispackaged
+ # for whatever reason.
+ [ "$1" == "updateexec" ] && {
+ echo Generating list of executable files...
+ rm -f debian/executable.files
+ find -type f -perm +111 ! -name '.*' -fprint debian/executable.files
+ }
+
+ # Remove any files in upstream tarball that we don't have in the Debian
+ # package (because diff cannot remove files)
+ version=`dpkg-parsechangelog | awk '/Version:/ { print $2 }' | sed -e 's/-[^-]\+$//'`
+ source=`dpkg-parsechangelog | awk '/Source:/ { print $2 }' | tr -d ' '`
+ if test -r ../${source}_${version}.orig.tar.gz ; then
+ echo Generating list of files that should be removed...
+ rm -f debian/deletable.files
+ touch debian/deletable.files
+ [ -e debian/tmp ] && rm -rf debian/tmp
+ mkdir debian/tmp
+ ( cd debian/tmp ; tar -zxf ../../../${source}_${version}.orig.tar.gz )
+ find debian/tmp/ -type f ! -name '.*' -print0 | xargs -0 -ri echo '{}' | \
+ while read -r i ; do
+ if test -e "${i}" ; then
+ filename=$(echo "${i}" | sed -e 's#.*debian/tmp/[^/]\+/##')
+ test -e "${filename}" || echo "${filename}" >>debian/deletable.files
+ fi
+ done
+ rm -fr debian/tmp
+ else
+ echo Emptying list of files that should be deleted...
+ rm -f debian/deletable.files
+ touch debian/deletable.files
+ fi
+}
+
+exit 0
diff --git a/config.h.in b/config.h.in
new file mode 100644
index 0000000..fc3e196
--- /dev/null
+++ b/config.h.in
@@ -0,0 +1,83 @@
+/* config.h.in. Generated from configure.in by autoheader. */
+
+/* always defined to indicate that i18n is enabled */
+#undef ENABLE_NLS
+
+/* GetText version number */
+#undef GETTEXT_PACKAGE
+
+/* Define to 1 if you have the `bind_textdomain_codeset' function. */
+#undef HAVE_BIND_TEXTDOMAIN_CODESET
+
+/* Define to 1 if you have the `dcgettext' function. */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#undef HAVE_LC_MESSAGES
+
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#undef LT_OBJDIR
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
diff --git a/configure.in b/configure.in
new file mode 100644
index 0000000..c18a7a9
--- /dev/null
+++ b/configure.in
@@ -0,0 +1,93 @@
+AC_INIT(AUTHORS)
+AM_INIT_AUTOMAKE(oregano, 0.70)
+
+AM_CONFIG_HEADER(config.h)
+AM_MAINTAINER_MODE
+
+GETTEXT_PACKAGE=oregano
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",
+ [GetText version number])
+
+AC_ISC_POSIX
+AC_PROG_CC
+AC_HEADER_STDC
+
+dnl AC_PROG_INTLTOOL([0.35.0])
+AC_PROG_INTLTOOL([0.35.0], [no-xml])
+
+AM_PROG_LIBTOOL
+
+# Just run true if these don't exist
+AC_PATH_PROG(UPDATE_MIME_DATABASE, update-mime-database, true)
+AC_PATH_PROG(UPDATE_DESKTOP_DATABASE, update-desktop-database, true)
+
+AC_ARG_ENABLE(update-mimedb,
+ AC_HELP_STRING([--disable-update-mimedb],
+ [disable the update-mime-database after install [default=no]]),,
+ enable_update_mimedb=yes)
+AM_CONDITIONAL(ENABLE_UPDATE_MIMEDB, test x$enable_update_mimedb = xyes)
+
+ALL_LINGUAS="ca de es fr it ja pt_BR ro ru sv"
+AM_GLIB_GNU_GETTEXT
+
+dnl ###########################################################################
+dnl Check for documentation requirements
+dnl ###########################################################################
+AC_SUBST(SCROLLKEEPER_REQUIRED)
+AC_PATH_PROG(SCROLLKEEPER_CONFIG, scrollkeeper-config,no)
+if test x$SCROLLKEEPER_CONFIG = xno; then
+ AC_MSG_ERROR(Couldn't find scrollkeeper-config, please install the scrollkeeper package)
+fi
+
+
+# Change to support gnomeprint2.0 and 2.2
+PKG_CHECK_MODULES(OREGANO,
+ gtk+-2.0 >= 2.10.0 \
+ libglade-2.0 >= 2.5.0 \
+ libgnomeui-2.0 >= 2.12.0 \
+ libxml-2.0 >= 2.6.0 \
+ libgnomecanvas-2.0 >= 2.12.0 \
+ gtksourceview-2.0 >= 2.0 \
+ cairo >= 1.2.0)
+
+AC_SUBST(CFLAGS)
+AC_SUBST(CPPFLAGS)
+AC_SUBST(LDFLAGS)
+AC_SUBST(OREGANO_LIBS)
+AC_SUBST(OREGANO_CFLAGS)
+
+AC_OUTPUT([
+Makefile
+data/oregano.desktop.in
+src/Makefile
+src/gplot/Makefile
+src/sheet/Makefile
+src/model/Makefile
+src/engines/Makefile
+src/stock/Makefile
+src/pixmaps/Makefile
+po/Makefile.in
+help/Makefile
+help/C/Makefile
+help/es/Makefile
+help/fr/Makefile
+data/Makefile
+data/glade/Makefile
+data/models/Makefile
+data/libraries/Makefile
+data/examples/Makefile
+data/mime/Makefile
+docs/Makefile
+stamp.h
+])
+
+echo "
+
+Configuration:
+ Source code location: ${srcdir}
+ Compiler: ${CC}
+
+ Install location: ${prefix}
+
+Type make to build Oregano."
diff --git a/data/Makefile.am b/data/Makefile.am
new file mode 100644
index 0000000..4393f44
--- /dev/null
+++ b/data/Makefile.am
@@ -0,0 +1,15 @@
+SUBDIRS = libraries models glade mime
+
+desktopdir = $(datadir)/applications
+desktop_in_files = oregano.desktop.in
+desktop_DATA = oregano.desktop
+@INTLTOOL_DESKTOP_RULE@
+
+EXTRA_DIST = \
+ $(desktop_in_files)
+
+CLEANFILES = \
+ $(desktop_DATA)
+
+DISTCLEANFILES = \
+ $(desktop_DATA)
diff --git a/data/examples/12ax7a.oregano b/data/examples/12ax7a.oregano
new file mode 100644
index 0000000..a35f762
--- /dev/null
+++ b/data/examples/12ax7a.oregano
@@ -0,0 +1,694 @@
+<?xml version="1.0"?>
+<ogo:schematic xmlns:ogo="http://www.dtek.chalmers.se/~d4hult/oregano/v1">
+ <ogo:author></ogo:author>
+ <ogo:title>12ax7a.oregano</ogo:title>
+ <ogo:comments></ogo:comments>
+ <ogo:grid>
+ <ogo:visible>true</ogo:visible>
+ <ogo:snap>true</ogo:snap>
+ </ogo:grid>
+ <ogo:simulation-settings>
+ <ogo:transient>
+ <ogo:enabled>true</ogo:enabled>
+ <ogo:start>0</ogo:start>
+ <ogo:stop>0.005</ogo:stop>
+ <ogo:step>1e-05</ogo:step>
+ <ogo:step-enabled>true</ogo:step-enabled>
+ <ogo:init-conditions>false</ogo:init-conditions>
+ </ogo:transient>
+ <ogo:ac>
+ <ogo:enabled>false</ogo:enabled>
+ <ogo:npoints>50</ogo:npoints>
+ <ogo:start>1</ogo:start>
+ <ogo:stop>1e+06</ogo:stop>
+ </ogo:ac>
+ <ogo:dc-sweep>
+ <ogo:enabled>false</ogo:enabled>
+ <ogo:vsrc1></ogo:vsrc1>
+ <ogo:start1>0</ogo:start1>
+ <ogo:stop1>0</ogo:stop1>
+ <ogo:step1>0</ogo:step1>
+ </ogo:dc-sweep>
+ <ogo:fourier>
+ <ogo:enabled>false</ogo:enabled>
+ <ogo:freq>0</ogo:freq>
+ <ogo:vout>0</ogo:vout>
+ </ogo:fourier>
+ <ogo:options>
+ <ogo:option>
+ <ogo:name>TEMP</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>GMIN</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>ABSTOL</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>CHGTOL</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>RELTOL</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>VNTOL</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>ITL1</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>ITL2</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>ITL4</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>PIVREL</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>PIVTOL</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>TNOM</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>TRTOL</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>DEFAD</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>DEFAS</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>DEFL</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>DEFW</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ </ogo:options>
+ </ogo:simulation-settings>
+ <ogo:parts>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>Test Clamp</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>Point</ogo:symbol>
+ <ogo:position>(680 200)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>point</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>type</ogo:name>
+ <ogo:value>v</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>ac_type</ogo:name>
+ <ogo:value>m</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>ac_db</ogo:name>
+ <ogo:value>false</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels/>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>Gnd</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>Ground</ogo:symbol>
+ <ogo:position>(530 400)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>ground</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels/>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>Gnd</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>Ground</ogo:symbol>
+ <ogo:position>(330 340)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>ground</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels/>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>Gnd</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>Ground</ogo:symbol>
+ <ogo:position>(680 330)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>ground</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels/>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>90</ogo:rotation>
+ <ogo:name>Resistor</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>resistor</ogo:symbol>
+ <ogo:position>(510 320)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>R6</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Res</ogo:name>
+ <ogo:value>1.5k</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Resistance</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>90</ogo:rotation>
+ <ogo:name>Capacitor</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>capacitor</ogo:symbol>
+ <ogo:position>(570 320)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>C2</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Cap</ogo:name>
+ <ogo:value>47n</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>C_@refdes %1 %2 @cap</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Capacitance</ogo:name>
+ <ogo:text>@cap</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>Gnd</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>Ground</ogo:symbol>
+ <ogo:position>(190 340)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>ground</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels/>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>VSIN</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>VSIN</ogo:symbol>
+ <ogo:position>(180 280)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>Vin1</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Offset</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Amplitude</ogo:name>
+ <ogo:value>2</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Frequency</ogo:name>
+ <ogo:value>400</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>V_@refdes %+ %- dc 0 sin(@Offset @Amplitude @Frequency 0 0)</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>90</ogo:rotation>
+ <ogo:name>Resistor</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>resistor</ogo:symbol>
+ <ogo:position>(340 270)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>R5</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Res</ogo:name>
+ <ogo:value>1Meg</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Resistance</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>270</ogo:rotation>
+ <ogo:name>Resistor</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>resistor</ogo:symbol>
+ <ogo:position>(670 290)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>R4</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Res</ogo:name>
+ <ogo:value>10k</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Resistance</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>Resistor</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>resistor</ogo:symbol>
+ <ogo:position>(230 230)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>R3</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Res</ogo:name>
+ <ogo:value>1k</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Resistance</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>Test Clamp</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>Point</ogo:symbol>
+ <ogo:position>(400 240)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>point</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>type</ogo:name>
+ <ogo:value>v</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>ac_type</ogo:name>
+ <ogo:value>m</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>ac_db</ogo:name>
+ <ogo:value>false</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels/>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>Resistor</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>resistor</ogo:symbol>
+ <ogo:position>(620 190)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>R2</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Res</ogo:name>
+ <ogo:value>100k</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Resistance</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>12AX7 (b)</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>Triode2</ogo:symbol>
+ <ogo:position>(470 240)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>V1</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>12AX7A</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %c %g %p @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 -30)</ogo:position>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>Capacitor</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>capacitor</ogo:symbol>
+ <ogo:position>(560 190)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>C1</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Cap</ogo:name>
+ <ogo:value>1u</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>C_@refdes %1 %2 @cap</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Capacitance</ogo:name>
+ <ogo:text>@cap</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>Test Clamp</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>Point</ogo:symbol>
+ <ogo:position>(530 200)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>point</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>type</ogo:name>
+ <ogo:value>v</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>ac_type</ogo:name>
+ <ogo:value>m</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>ac_db</ogo:name>
+ <ogo:value>false</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels/>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>Gnd</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>Ground</ogo:symbol>
+ <ogo:position>(700 100)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>ground</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels/>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>Resistor</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>resistor</ogo:symbol>
+ <ogo:position>(550 70)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>R1</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Res</ogo:name>
+ <ogo:value>220k</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Resistance</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>270</ogo:rotation>
+ <ogo:name>VDC</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>VDC</ogo:symbol>
+ <ogo:position>(620 90)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>Va1</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>DC</ogo:name>
+ <ogo:value>200</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>V_@refdes %+ %- dc @DC</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 10)</ogo:position>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+ </ogo:parts>
+ <ogo:wires>
+ <ogo:wire>
+ <ogo:points>(500 370)(560 370)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(530 370)(530 400)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(500 360)(500 370)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(560 350)(560 370)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(500 310)(560 310)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(500 310)(500 320)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(190 320)(190 340)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(330 310)(330 340)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(560 310)(560 320)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(680 290)(680 330)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(530 280)(530 310)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(330 240)(330 270)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(270 240)(470 240)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(190 240)(230 240)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(190 240)(190 280)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(510 200)(560 200)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(590 200)(620 200)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(680 200)(680 250)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(660 200)(680 200)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(510 80)(510 200)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(510 80)(550 80)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(590 80)(620 80)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(700 80)(700 100)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(660 80)(700 80)</ogo:points>
+ </ogo:wire>
+ </ogo:wires>
+ <ogo:textboxes>
+ <ogo:textbox>
+ <ogo:position>(186 488)</ogo:position>
+ <ogo:text></ogo:text>
+ </ogo:textbox>
+ </ogo:textboxes>
+</ogo:schematic>
diff --git a/data/examples/Full-wave-bridge-rectifier.oregano b/data/examples/Full-wave-bridge-rectifier.oregano
new file mode 100644
index 0000000..5175580
--- /dev/null
+++ b/data/examples/Full-wave-bridge-rectifier.oregano
@@ -0,0 +1,316 @@
+<?xml version="1.0"?>
+<ogo:schematic xmlns:ogo="http://www.dtek.chalmers.se/~d4hult/oregano/v1">
+ <ogo:author></ogo:author>
+ <ogo:title>Full-wave bridge rectifier.oregano</ogo:title>
+ <ogo:comments></ogo:comments>
+ <ogo:grid>
+ <ogo:visible>true</ogo:visible>
+ <ogo:snap>true</ogo:snap>
+ </ogo:grid>
+ <ogo:simulation-settings>
+ <ogo:transient>
+ <ogo:enabled>true</ogo:enabled>
+ <ogo:start>0.0005</ogo:start>
+ <ogo:stop>0.025</ogo:stop>
+ <ogo:step>0.0001</ogo:step>
+ <ogo:step-enabled>false</ogo:step-enabled>
+ <ogo:init-conditions>false</ogo:init-conditions>
+ </ogo:transient>
+ <ogo:ac>
+ <ogo:enabled>false</ogo:enabled>
+ <ogo:npoints>50</ogo:npoints>
+ <ogo:start>1</ogo:start>
+ <ogo:stop>1e+06</ogo:stop>
+ </ogo:ac>
+ <ogo:dc-sweep>
+ <ogo:enabled>false</ogo:enabled>
+ <ogo:vsrc1/>
+ <ogo:start1>0</ogo:start1>
+ <ogo:stop1>0</ogo:stop1>
+ <ogo:step1>0</ogo:step1>
+ <ogo:vsrc2/>
+ <ogo:start2>0</ogo:start2>
+ <ogo:stop2>0</ogo:stop2>
+ <ogo:step2>0</ogo:step2>
+ </ogo:dc-sweep>
+ <ogo:options>
+ <ogo:option>
+ <ogo:name>TEMP</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>GMIN</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>ABSTOL</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>CHGTOL</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>RELTOL</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>VNTOL</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>ITL1</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>ITL2</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>ITL4</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>PIVREL</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>PIVTOL</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>TNOM</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>TRTOL</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>DEFAD</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>DEFAS</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>DEFL</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ <ogo:option>
+ <ogo:name>DEFW</ogo:name>
+ <ogo:value></ogo:value>
+ </ogo:option>
+ </ogo:options>
+ </ogo:simulation-settings>
+ <ogo:parts>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>Test Clamp</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>Point</ogo:symbol>
+ <ogo:position>(410 250)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>point</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>type</ogo:name>
+ <ogo:value>v</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>ac_type</ogo:name>
+ <ogo:value>m</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>ac_db</ogo:name>
+ <ogo:value>false</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels/>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>Diode Bridge</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>bridge-d</ogo:symbol>
+ <ogo:position>(330 250)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>D1</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 @model</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>DiodeBridge</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 -15)</ogo:position>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>VSIN</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>VSIN</ogo:symbol>
+ <ogo:position>(140 280)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>V1</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Offset</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Amplitude</ogo:name>
+ <ogo:value>15</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Frequency</ogo:name>
+ <ogo:value>60</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>DC</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>AC</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>V_@refdes %+ %- dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0)</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>Gnd</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>Ground</ogo:symbol>
+ <ogo:position>(170 370)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>ground</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels/>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>90</ogo:rotation>
+ <ogo:name>Resistor</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>resistor</ogo:symbol>
+ <ogo:position>(460 260)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>R3</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Res</ogo:name>
+ <ogo:value>10k</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Resistance</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(0 30)</ogo:position>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+ <ogo:part>
+ <ogo:rotation>0</ogo:rotation>
+ <ogo:name>Test Clamp</ogo:name>
+ <ogo:library>Default</ogo:library>
+ <ogo:symbol>Point</ogo:symbol>
+ <ogo:position>(150 250)</ogo:position>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>point</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>type</ogo:name>
+ <ogo:value>v</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>ac_type</ogo:name>
+ <ogo:value>m</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>ac_db</ogo:name>
+ <ogo:value>false</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels/>
+ </ogo:part>
+ </ogo:parts>
+ <ogo:wires>
+ <ogo:wire>
+ <ogo:points>(150 320)(150 370)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(150 190)(150 280)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(150 190)(350 190)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(350 190)(350 220)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(150 370)(350 370)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(350 280)(350 370)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(320 250)(320 320)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(320 320)(450 320)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(450 300)(450 320)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(450 250)(450 260)</ogo:points>
+ </ogo:wire>
+ <ogo:wire>
+ <ogo:points>(380 250)(450 250)</ogo:points>
+ </ogo:wire>
+ </ogo:wires>
+ <ogo:textboxes/>
+</ogo:schematic>
diff --git a/data/examples/Makefile.am b/data/examples/Makefile.am
new file mode 100644
index 0000000..b46d792
--- /dev/null
+++ b/data/examples/Makefile.am
@@ -0,0 +1,17 @@
+samplesdir = $(datadir)/oregano/samples
+
+samples_DATA = \
+ 12ax7a.oregano \
+ 741.oregano \
+ opamp.oregano \
+ zener.oregano \
+ OP177B.oregano \
+ capacitor.oregano \
+ opamp_ideal.oregano \
+ opamp.oregano \
+ high_pass.oregano \
+ simple2.oregano \
+ simple.oregano \
+ transistors.oregano
+
+EXTRA_DIST = $(samples_DATA)12ax7a.oregano
diff --git a/data/examples/carga_capacitor.oregano b/data/examples/carga_capacitor.oregano
new file mode 100644
index 0000000..a4a42c5
--- /dev/null
+++ b/data/examples/carga_capacitor.oregano
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<ogo:schematic xmlns:ogo="http://www.dtek.chalmers.se/~d4hult/oregano/v1"><ogo:author>Gazer</ogo:author><ogo:title>Circuito RLC</ogo:title><ogo:comments>algo loco</ogo:comments><ogo:grid><ogo:visible>true</ogo:visible><ogo:snap>true</ogo:snap></ogo:grid><ogo:simulation-settings><ogo:transient><ogo:enabled>true</ogo:enabled><ogo:start>0</ogo:start><ogo:stop>0.01</ogo:stop><ogo:step>0.0001</ogo:step><ogo:step-enabled>false</ogo:step-enabled><ogo:init-conditions>true</ogo:init-conditions></ogo:transient><ogo:ac><ogo:enabled>false</ogo:enabled><ogo:npoints>50</ogo:npoints><ogo:start>1</ogo:start><ogo:stop>1e+06</ogo:stop></ogo:ac><ogo:dc-sweep><ogo:enabled>false</ogo:enabled><ogo:vsrc1/><ogo:start1>0</ogo:start1><ogo:stop1>0</ogo:stop1><ogo:step1>0</ogo:step1><ogo:vsrc2/><ogo:start2>0</ogo:start2><ogo:stop2>0</ogo:stop2><ogo:step2>0</ogo:step2></ogo:dc-sweep><ogo:options><ogo:option><ogo:name>TEMP</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>GMIN</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>ABSTOL</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>CHGTOL</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>RELTOL</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>VNTOL</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>ITL1</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>ITL2</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>ITL4</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>PIVREL</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>PIVTOL</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>TNOM</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>TRTOL</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>DEFAD</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>DEFAS</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>DEFL</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>DEFW</ogo:name><ogo:value></ogo:value></ogo:option></ogo:options></ogo:simulation-settings><ogo:parts><ogo:part><ogo:rotation>90</ogo:rotation><ogo:name>Capacitor</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>capacitor</ogo:symbol><ogo:position>(370 230)</ogo:position><ogo:properties><ogo:property><ogo:name>Refdes</ogo:name><ogo:value>C1</ogo:value></ogo:property><ogo:property><ogo:name>Cap</ogo:name><ogo:value>1u</ogo:value></ogo:property><ogo:property><ogo:name>IC</ogo:name><ogo:value>0</ogo:value></ogo:property><ogo:property><ogo:name>Template</ogo:name><ogo:value>C_@refdes %1 %2 @cap IC=@IC</ogo:value></ogo:property></ogo:properties><ogo:labels><ogo:label><ogo:name>Reference designator</ogo:name><ogo:text>@refdes</ogo:text><ogo:position>(15 -10)</ogo:position></ogo:label><ogo:label><ogo:name>Capacitance</ogo:name><ogo:text>@cap</ogo:text><ogo:position>(15 40)</ogo:position></ogo:label></ogo:labels></ogo:part><ogo:part><ogo:rotation>0</ogo:rotation><ogo:name>Resistor</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>resistor</ogo:symbol><ogo:position>(240 160)</ogo:position><ogo:properties><ogo:property><ogo:name>Refdes</ogo:name><ogo:value>R1</ogo:value></ogo:property><ogo:property><ogo:name>Res</ogo:name><ogo:value>1k</ogo:value></ogo:property><ogo:property><ogo:name>Template</ogo:name><ogo:value>R_@refdes %1 %2 @res</ogo:value></ogo:property></ogo:properties><ogo:labels><ogo:label><ogo:name>Reference designator</ogo:name><ogo:text>@refdes</ogo:text><ogo:position>(15 0)</ogo:position></ogo:label><ogo:label><ogo:name>Resistance</ogo:name><ogo:text>@res</ogo:text><ogo:position>(0 30)</ogo:position></ogo:label></ogo:labels></ogo:part><ogo:part><ogo:rotation>0</ogo:rotation><ogo:name>VDC</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>VDC</ogo:symbol><ogo:position>(120 220)</ogo:position><ogo:properties><ogo:property><ogo:name>Refdes</ogo:name><ogo:value>V1</ogo:value></ogo:property><ogo:property><ogo:name>DC</ogo:name><ogo:value>1.0</ogo:value></ogo:property><ogo:property><ogo:name>Template</ogo:name><ogo:value>V_@refdes %+ %- dc @DC</ogo:value></ogo:property></ogo:properties><ogo:labels><ogo:label><ogo:name>Reference designator</ogo:name><ogo:text>@refdes</ogo:text><ogo:position>(25 10)</ogo:position></ogo:label></ogo:labels></ogo:part><ogo:part><ogo:rotation>0</ogo:rotation><ogo:name>Gnd</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>Ground</ogo:symbol><ogo:position>(240 320)</ogo:position><ogo:properties><ogo:property><ogo:name>internal</ogo:name><ogo:value>ground</ogo:value></ogo:property></ogo:properties><ogo:labels/></ogo:part></ogo:parts><ogo:wires><ogo:wire><ogo:points>(130 170)(240 170)</ogo:points></ogo:wire><ogo:wire><ogo:points>(130 170)(130 220)</ogo:points></ogo:wire><ogo:wire><ogo:points>(360 170)(360 230)</ogo:points></ogo:wire><ogo:wire><ogo:points>(280 170)(360 170)</ogo:points></ogo:wire><ogo:wire><ogo:points>(130 260)(130 300)</ogo:points></ogo:wire><ogo:wire><ogo:points>(360 260)(360 300)</ogo:points></ogo:wire><ogo:wire><ogo:points>(130 300)(360 300)</ogo:points></ogo:wire><ogo:wire><ogo:points>(240 300)(240 320)</ogo:points></ogo:wire></ogo:wires><ogo:textboxes/></ogo:schematic>
diff --git a/data/examples/opamp.oregano b/data/examples/opamp.oregano
new file mode 100644
index 0000000..cfad393
--- /dev/null
+++ b/data/examples/opamp.oregano
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<ogo:schematic xmlns:ogo="http://www.dtek.chalmers.se/~d4hult/oregano/v1"><ogo:author>Gazer</ogo:author><ogo:title>OPAMP Example</ogo:title><ogo:grid><ogo:visible>true</ogo:visible><ogo:snap>true</ogo:snap></ogo:grid><ogo:simulation-settings><ogo:transient><ogo:enabled>true</ogo:enabled><ogo:start>0</ogo:start><ogo:stop>0.005</ogo:stop><ogo:step>0.0001</ogo:step><ogo:step-enabled>false</ogo:step-enabled><ogo:init-conditions>false</ogo:init-conditions></ogo:transient><ogo:ac><ogo:enabled>false</ogo:enabled><ogo:npoints>50</ogo:npoints><ogo:start>1</ogo:start><ogo:stop>1e+06</ogo:stop></ogo:ac><ogo:dc-sweep><ogo:enabled>false</ogo:enabled><ogo:vsrc1/><ogo:start1>0</ogo:start1><ogo:stop1>0</ogo:stop1><ogo:step1>0</ogo:step1><ogo:vsrc2/><ogo:start2>0</ogo:start2><ogo:stop2>0</ogo:stop2><ogo:step2>0</ogo:step2></ogo:dc-sweep></ogo:simulation-settings><ogo:parts><ogo:part><ogo:rotation>270</ogo:rotation><ogo:name>Marker</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>Marker</ogo:symbol><ogo:position>(160 260)</ogo:position><ogo:properties><ogo:property><ogo:name>internal</ogo:name><ogo:value>marker</ogo:value></ogo:property><ogo:property><ogo:name>Name</ogo:name><ogo:value>2</ogo:value></ogo:property></ogo:properties><ogo:labels><ogo:label><ogo:name>Node name</ogo:name><ogo:text>@Name</ogo:text><ogo:position>(0 -1)</ogo:position></ogo:label></ogo:labels></ogo:part><ogo:part><ogo:rotation>90</ogo:rotation><ogo:name>Marker</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>Marker</ogo:symbol><ogo:position>(470 270)</ogo:position><ogo:properties><ogo:property><ogo:name>internal</ogo:name><ogo:value>marker</ogo:value></ogo:property><ogo:property><ogo:name>Name</ogo:name><ogo:value>1</ogo:value></ogo:property></ogo:properties><ogo:labels><ogo:label><ogo:name>Node name</ogo:name><ogo:text>@Name</ogo:text><ogo:position>(0 -1)</ogo:position></ogo:label></ogo:labels></ogo:part><ogo:part><ogo:rotation>0</ogo:rotation><ogo:name>Diode</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>diode</ogo:symbol><ogo:position>(310 140)</ogo:position><ogo:properties><ogo:property><ogo:name>Refdes</ogo:name><ogo:value>D1</ogo:value></ogo:property><ogo:property><ogo:name>Model</ogo:name><ogo:value>1N4148</ogo:value></ogo:property><ogo:property><ogo:name>Template</ogo:name><ogo:value>D_@refdes %1 %2 M_@refdes \n.model M_@refdes d(IS=0.1PA, RS=16 CJO=2PF TT=12N BV=100 IBV=0.1PA)</ogo:value></ogo:property></ogo:properties><ogo:labels><ogo:label><ogo:name>Reference designator</ogo:name><ogo:text>@refdes</ogo:text><ogo:position>(0 35)</ogo:position></ogo:label><ogo:label><ogo:name>Model</ogo:name><ogo:text>@model</ogo:text><ogo:position>(-5 -5)</ogo:position></ogo:label></ogo:labels></ogo:part><ogo:part><ogo:rotation>0</ogo:rotation><ogo:name>Diode</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>diode</ogo:symbol><ogo:position>(310 120)</ogo:position><ogo:properties><ogo:property><ogo:name>Refdes</ogo:name><ogo:value>D2</ogo:value></ogo:property><ogo:property><ogo:name>Model</ogo:name><ogo:value>1N4148</ogo:value></ogo:property><ogo:property><ogo:name>Template</ogo:name><ogo:value>D_@refdes %1 %2 M_@refdes \n.model M_@refdes d(IS=0.1PA, RS=16 CJO=2PF TT=12N BV=100 IBV=0.1PA)</ogo:value></ogo:property></ogo:properties><ogo:labels><ogo:label><ogo:name>Reference designator</ogo:name><ogo:text>@refdes</ogo:text><ogo:position>(0 35)</ogo:position></ogo:label><ogo:label><ogo:name>Model</ogo:name><ogo:text>@model</ogo:text><ogo:position>(-5 -5)</ogo:position></ogo:label></ogo:labels></ogo:part><ogo:part><ogo:rotation>0</ogo:rotation><ogo:name>Ideal OP</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>OPAMP</ogo:symbol><ogo:position>(310 250)</ogo:position><ogo:properties><ogo:property><ogo:name>Refdes</ogo:name><ogo:value>U1</ogo:value></ogo:property><ogo:property><ogo:name>Mhos</ogo:name><ogo:value>100</ogo:value></ogo:property><ogo:property><ogo:name>Template</ogo:name><ogo:value>G_@refdes %out 0 %in- %in+ @mhos</ogo:value></ogo:property></ogo:properties><ogo:labels><ogo:label><ogo:name>Reference designator</ogo:name><ogo:text>@refdes</ogo:text><ogo:position>(20 0)</ogo:position></ogo:label></ogo:labels></ogo:part><ogo:part><ogo:rotation>90</ogo:rotation><ogo:name>Resistor</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>resistor</ogo:symbol><ogo:position>(460 290)</ogo:position><ogo:properties><ogo:property><ogo:name>Refdes</ogo:name><ogo:value>R3</ogo:value></ogo:property><ogo:property><ogo:name>Res</ogo:name><ogo:value>100k</ogo:value></ogo:property><ogo:property><ogo:name>Template</ogo:name><ogo:value>R_@refdes %1 %2 @res</ogo:value></ogo:property></ogo:properties><ogo:labels><ogo:label><ogo:name>Reference designator</ogo:name><ogo:text>@refdes</ogo:text><ogo:position>(15 0)</ogo:position></ogo:label><ogo:label><ogo:name>Resistance</ogo:name><ogo:text>@res</ogo:text><ogo:position>(15 30)</ogo:position></ogo:label></ogo:labels></ogo:part><ogo:part><ogo:rotation>0</ogo:rotation><ogo:name>Resistor</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>resistor</ogo:symbol><ogo:position>(300 200)</ogo:position><ogo:properties><ogo:property><ogo:name>Refdes</ogo:name><ogo:value>R2</ogo:value></ogo:property><ogo:property><ogo:name>Res</ogo:name><ogo:value>1Meg</ogo:value></ogo:property><ogo:property><ogo:name>Template</ogo:name><ogo:value>R_@refdes %1 %2 @res</ogo:value></ogo:property></ogo:properties><ogo:labels><ogo:label><ogo:name>Reference designator</ogo:name><ogo:text>@refdes</ogo:text><ogo:position>(15 0)</ogo:position></ogo:label><ogo:label><ogo:name>Resistance</ogo:name><ogo:text>@res</ogo:text><ogo:position>(15 30)</ogo:position></ogo:label></ogo:labels></ogo:part><ogo:part><ogo:rotation>0</ogo:rotation><ogo:name>Resistor</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>resistor</ogo:symbol><ogo:position>(210 250)</ogo:position><ogo:properties><ogo:property><ogo:name>Refdes</ogo:name><ogo:value>R1</ogo:value></ogo:property><ogo:property><ogo:name>Res</ogo:name><ogo:value>10k</ogo:value></ogo:property><ogo:property><ogo:name>Template</ogo:name><ogo:value>R_@refdes %1 %2 @res</ogo:value></ogo:property></ogo:properties><ogo:labels><ogo:label><ogo:name>Reference designator</ogo:name><ogo:text>@refdes</ogo:text><ogo:position>(15 0)</ogo:position></ogo:label><ogo:label><ogo:name>Resistance</ogo:name><ogo:text>@res</ogo:text><ogo:position>(15 30)</ogo:position></ogo:label></ogo:labels></ogo:part><ogo:part><ogo:rotation>0</ogo:rotation><ogo:name>VSIN</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>VSIN</ogo:symbol><ogo:position>(170 290)</ogo:position><ogo:properties><ogo:property><ogo:name>Refdes</ogo:name><ogo:value>V1</ogo:value></ogo:property><ogo:property><ogo:name>Template</ogo:name><ogo:value>V_@refdes %+ %- dc 0 sin(@Offset @Amplitude @Frequency 0 0)</ogo:value></ogo:property><ogo:property><ogo:name>Offset</ogo:name><ogo:value>0.0</ogo:value></ogo:property><ogo:property><ogo:name>Amplitude</ogo:name><ogo:value>1.5</ogo:value></ogo:property><ogo:property><ogo:name>Frequency</ogo:name><ogo:value>400</ogo:value></ogo:property></ogo:properties><ogo:labels><ogo:label><ogo:name>Reference designator</ogo:name><ogo:text>@refdes</ogo:text><ogo:position>(15 10)</ogo:position></ogo:label></ogo:labels></ogo:part><ogo:part><ogo:rotation>0</ogo:rotation><ogo:name>Gnd</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>Ground</ogo:symbol><ogo:position>(450 350)</ogo:position><ogo:properties><ogo:property><ogo:name>internal</ogo:name><ogo:value>ground</ogo:value></ogo:property></ogo:properties><ogo:labels/></ogo:part><ogo:part><ogo:rotation>0</ogo:rotation><ogo:name>Gnd</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>Ground</ogo:symbol><ogo:position>(290 300)</ogo:position><ogo:properties><ogo:property><ogo:name>internal</ogo:name><ogo:value>ground</ogo:value></ogo:property></ogo:properties><ogo:labels/></ogo:part><ogo:part><ogo:rotation>0</ogo:rotation><ogo:name>Gnd</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>Ground</ogo:symbol><ogo:position>(180 330)</ogo:position><ogo:properties><ogo:property><ogo:name>internal</ogo:name><ogo:value>ground</ogo:value></ogo:property></ogo:properties><ogo:labels/></ogo:part></ogo:parts><ogo:wires><ogo:wire><ogo:points>(350 270)(450 270)</ogo:points></ogo:wire><ogo:wire><ogo:points>(370 140)(370 270)</ogo:points></ogo:wire><ogo:wire><ogo:points>(290 280)(300 280)</ogo:points></ogo:wire><ogo:wire><ogo:points>(290 280)(290 300)</ogo:points></ogo:wire><ogo:wire><ogo:points>(180 260)(210 260)</ogo:points></ogo:wire><ogo:wire><ogo:points>(180 260)(180 290)</ogo:points></ogo:wire><ogo:wire><ogo:points>(280 140)(280 260)</ogo:points></ogo:wire><ogo:wire><ogo:points>(250 260)(300 260)</ogo:points></ogo:wire><ogo:wire><ogo:points>(450 330)(450 350)</ogo:points></ogo:wire><ogo:wire><ogo:points>(450 270)(450 290)</ogo:points></ogo:wire><ogo:wire><ogo:points>(340 130)(340 150)</ogo:points></ogo:wire><ogo:wire><ogo:points>(310 130)(310 150)</ogo:points></ogo:wire><ogo:wire><ogo:points>(280 140)(310 140)</ogo:points></ogo:wire><ogo:wire><ogo:points>(340 140)(370 140)</ogo:points></ogo:wire><ogo:wire><ogo:points>(280 210)(300 210)</ogo:points></ogo:wire><ogo:wire><ogo:points>(340 210)(370 210)</ogo:points></ogo:wire></ogo:wires><ogo:textboxes/></ogo:schematic>
diff --git a/data/examples/simple.oregano b/data/examples/simple.oregano
new file mode 100644
index 0000000..d9e74e2
--- /dev/null
+++ b/data/examples/simple.oregano
Binary files differ
diff --git a/data/examples/simple2.oregano b/data/examples/simple2.oregano
new file mode 100644
index 0000000..5d008ce
--- /dev/null
+++ b/data/examples/simple2.oregano
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<ogo:schematic xmlns:ogo="http://www.dtek.chalmers.se/~d4hult/oregano/v1"><ogo:grid><ogo:visible>true</ogo:visible><ogo:snap>true</ogo:snap></ogo:grid><ogo:simulation-settings><ogo:transient><ogo:enabled>true</ogo:enabled><ogo:start>0</ogo:start><ogo:stop>0.1</ogo:stop><ogo:step>0.0001</ogo:step><ogo:step-enabled>true</ogo:step-enabled><ogo:init-conditions>false</ogo:init-conditions></ogo:transient><ogo:ac><ogo:enabled>false</ogo:enabled><ogo:npoints>50</ogo:npoints><ogo:start>1</ogo:start><ogo:stop>1e+06</ogo:stop></ogo:ac><ogo:dc-sweep><ogo:enabled>true</ogo:enabled><ogo:vsrc1>V_V1</ogo:vsrc1><ogo:start1>-10</ogo:start1><ogo:stop1>10</ogo:stop1><ogo:step1>0.1</ogo:step1><ogo:vsrc2/><ogo:start2>0</ogo:start2><ogo:stop2>0</ogo:stop2><ogo:step2>0</ogo:step2></ogo:dc-sweep><ogo:options><ogo:option><ogo:name>TEMP</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>GMIN</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>ABSTOL</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>CHGTOL</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>RELTOL</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>VNTOL</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>ITL1</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>ITL2</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>ITL4</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>PIVREL</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>PIVTOL</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>TNOM</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>TRTOL</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>DEFAD</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>DEFAS</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>DEFL</ogo:name><ogo:value></ogo:value></ogo:option><ogo:option><ogo:name>DEFW</ogo:name><ogo:value></ogo:value></ogo:option></ogo:options></ogo:simulation-settings><ogo:parts><ogo:part><ogo:rotation>0</ogo:rotation><ogo:name>VSIN</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>VSIN</ogo:symbol><ogo:position>(120 280)</ogo:position><ogo:properties><ogo:property><ogo:name>Refdes</ogo:name><ogo:value>V1</ogo:value></ogo:property><ogo:property><ogo:name>Offset</ogo:name><ogo:value>0.0</ogo:value></ogo:property><ogo:property><ogo:name>Amplitude</ogo:name><ogo:value>220</ogo:value></ogo:property><ogo:property><ogo:name>Frequency</ogo:name><ogo:value>60</ogo:value></ogo:property><ogo:property><ogo:name>DC</ogo:name><ogo:value>0.0</ogo:value></ogo:property><ogo:property><ogo:name>AC</ogo:name><ogo:value>0.0</ogo:value></ogo:property><ogo:property><ogo:name>Template</ogo:name><ogo:value>V_@refdes %+ %- dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0)</ogo:value></ogo:property></ogo:properties><ogo:labels><ogo:label><ogo:name>Reference designator</ogo:name><ogo:text>@refdes</ogo:text><ogo:position>(15 10)</ogo:position></ogo:label></ogo:labels></ogo:part><ogo:part><ogo:rotation>0</ogo:rotation><ogo:name>Resistor</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>resistor</ogo:symbol><ogo:position>(400 190)</ogo:position><ogo:properties><ogo:property><ogo:name>Refdes</ogo:name><ogo:value>R1</ogo:value></ogo:property><ogo:property><ogo:name>Res</ogo:name><ogo:value>1k</ogo:value></ogo:property><ogo:property><ogo:name>Template</ogo:name><ogo:value>R_@refdes %1 %2 @res</ogo:value></ogo:property></ogo:properties><ogo:labels><ogo:label><ogo:name>Reference designator</ogo:name><ogo:text>@refdes</ogo:text><ogo:position>(15 0)</ogo:position></ogo:label><ogo:label><ogo:name>Resistance</ogo:name><ogo:text>@res</ogo:text><ogo:position>(15 30)</ogo:position></ogo:label></ogo:labels></ogo:part><ogo:part><ogo:rotation>0</ogo:rotation><ogo:name>Diode</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>diode</ogo:symbol><ogo:position>(250 190)</ogo:position><ogo:properties><ogo:property><ogo:name>Refdes</ogo:name><ogo:value>D1</ogo:value></ogo:property><ogo:property><ogo:name>Model</ogo:name><ogo:value>1N4148</ogo:value></ogo:property><ogo:property><ogo:name>Template</ogo:name><ogo:value>D_@refdes %1 %2 M_@refdes \n.model M_@refdes d(IS=0.1PA, RS=16 CJO=2PF TT=12N BV=100 IBV=0.1PA)</ogo:value></ogo:property></ogo:properties><ogo:labels><ogo:label><ogo:name>Reference designator</ogo:name><ogo:text>@refdes</ogo:text><ogo:position>(0 35)</ogo:position></ogo:label><ogo:label><ogo:name>Model</ogo:name><ogo:text>@model</ogo:text><ogo:position>(-5 -5)</ogo:position></ogo:label></ogo:labels></ogo:part><ogo:part><ogo:rotation>0</ogo:rotation><ogo:name>Gnd</ogo:name><ogo:library>Default</ogo:library><ogo:symbol>Ground</ogo:symbol><ogo:position>(310 390)</ogo:position><ogo:properties><ogo:property><ogo:name>internal</ogo:name><ogo:value>ground</ogo:value></ogo:property></ogo:properties><ogo:labels/></ogo:part></ogo:parts><ogo:wires><ogo:wire><ogo:points>(310 370)(310 390)</ogo:points></ogo:wire><ogo:wire><ogo:points>(130 370)(490 370)</ogo:points></ogo:wire><ogo:wire><ogo:points>(130 320)(130 370)</ogo:points></ogo:wire><ogo:wire><ogo:points>(490 200)(490 370)</ogo:points></ogo:wire><ogo:wire><ogo:points>(440 200)(490 200)</ogo:points></ogo:wire><ogo:wire><ogo:points>(280 200)(400 200)</ogo:points></ogo:wire><ogo:wire><ogo:points>(130 200)(130 280)</ogo:points></ogo:wire><ogo:wire><ogo:points>(130 200)(250 200)</ogo:points></ogo:wire></ogo:wires><ogo:textboxes/></ogo:schematic>
diff --git a/data/glade/Makefile.am b/data/glade/Makefile.am
new file mode 100644
index 0000000..a561deb
--- /dev/null
+++ b/data/glade/Makefile.am
@@ -0,0 +1,22 @@
+gladedir = $(datadir)/oregano/glade
+
+glade_DATA = \
+ clamp-properties-dialog.glade \
+ export.glade \
+ log-window.glade \
+ part-browser.glade \
+ part-properties-dialog.glade \
+ plot-add-function.glade \
+ plot-window.glade \
+ print-options.glade \
+ properties.glade \
+ settings.glade \
+ sim-settings.glade \
+ simulation.glade \
+ splash.glade \
+ splash.xpm \
+ textbox-properties-dialog.glade \
+ view-netlist.glade
+
+EXTRA_DIST = $(glade_DATA)
+
diff --git a/data/glade/clamp-properties-dialog.glade b/data/glade/clamp-properties-dialog.glade
new file mode 100644
index 0000000..ae77501
--- /dev/null
+++ b/data/glade/clamp-properties-dialog.glade
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--*- mode: xml -*-->
+<glade-interface>
+ <widget class="GtkDialog" id="clamp-properties-dialog">
+ <property name="height_request">300</property>
+ <property name="title" translatable="yes">Edit Clamp properties</property>
+ <property name="resizable">False</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="skip_taskbar_hint">True</property>
+ <property name="skip_pager_hint">True</property>
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="spacing">8</property>
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <child>
+ <widget class="GtkLabel" id="label17">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">&lt;b&gt;Type&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label21">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label"> </property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox2">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkRadioButton" id="radio_v">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Voltage</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkRadioButton" id="radio_c">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Current</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radio_v</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label18">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">&lt;b&gt;AC Analysis Options&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label20">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label"> </property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox3">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkRadioButton" id="radio_r">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Real part</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkRadioButton" id="radio_m">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Magnitude</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radio_r</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkRadioButton" id="radio_i">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Imaginary part</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radio_r</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkRadioButton" id="radio_p">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Phase</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">radio_r</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="check_db">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Use decibel scale</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">&lt;b&gt;Clamp Reference&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkEntry" id="entry1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ </widget>
+ <packing>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <child>
+ <widget class="GtkButton" id="button3">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="label">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">-7</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</glade-interface>
diff --git a/data/glade/export.glade b/data/glade/export.glade
new file mode 100644
index 0000000..41e0afc
--- /dev/null
+++ b/data/glade/export.glade
@@ -0,0 +1,656 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkDialog" id="export">
+ <property name="border_width">12</property>
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Export ...</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">True</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="cancelbutton1">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="okbutton1">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-ok</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-5</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="border_width">4</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"> </property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkTable" id="table1">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">0</property>
+ <property name="column_spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Width : </property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Height : </property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkSpinButton" id="export_width">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">0</property>
+ <property name="numeric">True</property>
+ <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+ <property name="snap_to_ticks">False</property>
+ <property name="wrap">False</property>
+ <property name="adjustment">300 0 1024 1 10 10</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkSpinButton" id="export_height">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">0</property>
+ <property name="numeric">True</property>
+ <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+ <property name="snap_to_ticks">False</property>
+ <property name="wrap">False</property>
+ <property name="adjustment">300 0 768 1 10 10</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Size&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFrame" id="frame2">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"> </property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkComboBox" id="format">
+ <property name="visible">True</property>
+ <property name="items" translatable="yes">...</property>
+ <property name="add_tearoffs">False</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Format&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFrame" id="frame4">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkRadioButton" id="bgwhite">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">White</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkRadioButton" id="bgblack">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Black</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">bgwhite</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkRadioButton" id="bgtransparent">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Transparent</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">bgwhite</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Background&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFrame" id="frame3">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkTable" id="table2">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">True</property>
+ <property name="row_spacing">0</property>
+ <property name="column_spacing">0</property>
+
+ <child>
+ <widget class="GtkRadioButton" id="color">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Color</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkRadioButton" id="radiobutton2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Black and White</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ <property name="group">color</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkEntry" id="file">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">â—</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="find">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+
+ <child>
+ <widget class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="stock">gtk-find</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Output&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/data/glade/log-window.glade b/data/glade/log-window.glade
new file mode 100644
index 0000000..8fd96fe
--- /dev/null
+++ b/data/glade/log-window.glade
@@ -0,0 +1,161 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkWindow" id="log-window">
+ <property name="title" translatable="yes">Oregano Log Window</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="border_width">6</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow2">
+ <property name="visible">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTextView" id="log-text">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">False</property>
+ <property name="overwrite">False</property>
+ <property name="accepts_tab">True</property>
+ <property name="justification">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap_mode">GTK_WRAP_NONE</property>
+ <property name="cursor_visible">True</property>
+ <property name="pixels_above_lines">0</property>
+ <property name="pixels_below_lines">0</property>
+ <property name="pixels_inside_wrap">0</property>
+ <property name="left_margin">0</property>
+ <property name="right_margin">0</property>
+ <property name="indent">0</property>
+ <property name="text" translatable="yes"></property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHButtonBox" id="hbuttonbox1">
+ <property name="border_width">6</property>
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkButton" id="clear-button">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">0</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child>
+ <widget class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="stock">gtk-clear</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Clear</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="close-button">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/data/glade/part-browser.glade b/data/glade/part-browser.glade
new file mode 100644
index 0000000..7b995f2
--- /dev/null
+++ b/data/glade/part-browser.glade
@@ -0,0 +1,304 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+<requires lib="canvas"/>
+
+<widget class="GtkWindow" id="part_browser">
+ <property name="title" translatable="yes">Parts</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_TOOLBAR</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+
+ <child>
+ <widget class="GtkVBox" id="part_browser_vbox">
+ <property name="border_width">6</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkTable" id="table1">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">6</property>
+
+ <child>
+ <widget class="GtkLabel" id="label112">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Library:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkOptionMenu" id="library_optionmenu">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Select which library to use</property>
+ <property name="history">-1</property>
+
+ <child internal-child="menu">
+ <widget class="GtkMenu" id="menu1">
+ <property name="visible">True</property>
+
+ <child>
+ <widget class="GtkMenuItem" id="menuitem1">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="part_search">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label113">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Search:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow3">
+ <property name="visible">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="parts_list">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFrame" id="frame13">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkViewport" id="viewport1">
+ <property name="visible">True</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+
+ <child>
+ <widget class="GnomeCanvas" id="preview_canvas">
+ <property name="visible">True</property>
+ <property name="anti_aliased">True</property>
+ <property name="scroll_x1">0</property>
+ <property name="scroll_y1">0</property>
+ <property name="scroll_x2">200</property>
+ <property name="scroll_y2">240</property>
+ <property name="pixels_per_unit">1</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label114">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Preview&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHButtonBox" id="hbuttonbox1">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
+ <property name="spacing">30</property>
+
+ <child>
+ <widget class="GtkButton" id="place_button">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Press this button to place the selected part</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">0</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child>
+ <widget class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="stock">gtk-jump-to</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label115">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Place</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/data/glade/part-properties-dialog.glade b/data/glade/part-properties-dialog.glade
new file mode 100644
index 0000000..80789f3
--- /dev/null
+++ b/data/glade/part-properties-dialog.glade
@@ -0,0 +1,174 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkDialog" id="part-properties-dialog">
+ <property name="width_request">300</property>
+ <property name="title" translatable="yes">Part Properties</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">True</property>
+ <property name="skip_pager_hint">True</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">True</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">8</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="button3">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-7</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkNotebook" id="notebook">
+ <property name="border_width">6</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="show_tabs">True</property>
+ <property name="show_border">True</property>
+ <property name="tab_pos">GTK_POS_TOP</property>
+ <property name="scrollable">False</property>
+ <property name="enable_popup">False</property>
+
+ <child>
+ <widget class="GtkTable" id="prop_table">
+ <property name="visible">True</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">0</property>
+ <property name="column_spacing">0</property>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">General</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="border_width">4</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTextView" id="txtmodel">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">False</property>
+ <property name="overwrite">False</property>
+ <property name="accepts_tab">True</property>
+ <property name="justification">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap_mode">GTK_WRAP_NONE</property>
+ <property name="cursor_visible">True</property>
+ <property name="pixels_above_lines">0</property>
+ <property name="pixels_below_lines">0</property>
+ <property name="pixels_inside_wrap">0</property>
+ <property name="left_margin">0</property>
+ <property name="right_margin">0</property>
+ <property name="indent">0</property>
+ <property name="text" translatable="yes"></property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Model</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/data/glade/plot-add-function.glade b/data/glade/plot-add-function.glade
new file mode 100644
index 0000000..b7504f7
--- /dev/null
+++ b/data/glade/plot-add-function.glade
@@ -0,0 +1,296 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkDialog" id="toplevel">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Add Function</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="has_separator">True</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="button1">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button2">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-add</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-5</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox24">
+ <property name="border_width">8</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkFrame" id="frame5">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment1">
+ <property name="border_width">8</property>
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkComboBox" id="functiontype">
+ <property name="visible">True</property>
+ <property name="items" translatable="yes">Subtraction
+Division</property>
+ <property name="add_tearoffs">False</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label58">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Function Type&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFrame" id="frame6">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkTable" id="table1">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">True</property>
+ <property name="row_spacing">8</property>
+ <property name="column_spacing">8</property>
+
+ <child>
+ <widget class="GtkLabel" id="label61">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Second Operand</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_CENTER</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label60">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">First Operand</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_CENTER</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkComboBox" id="op2">
+ <property name="visible">True</property>
+ <property name="items" translatable="yes">
+</property>
+ <property name="add_tearoffs">False</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkComboBox" id="op1">
+ <property name="visible">True</property>
+ <property name="items" translatable="yes">
+</property>
+ <property name="add_tearoffs">False</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label59">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Values&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/data/glade/plot-window.glade b/data/glade/plot-window.glade
new file mode 100644
index 0000000..9dced76
--- /dev/null
+++ b/data/glade/plot-window.glade
@@ -0,0 +1,363 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkWindow" id="main_window">
+ <property name="title" translatable="yes">Plot</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+
+ <child>
+ <widget class="GtkTable" id="plot_table">
+ <property name="visible">True</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">0</property>
+ <property name="column_spacing">0</property>
+
+ <child>
+ <widget class="GtkFrame" id="frame3">
+ <property name="border_width">4</property>
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="plot_scrolled">
+ <property name="border_width">4</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Plot&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFrame" id="frame2">
+ <property name="border_width">4</property>
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox4">
+ <property name="border_width">4</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child>
+ <widget class="GtkCombo" id="analysis_combo">
+ <property name="visible">True</property>
+ <property name="value_in_list">False</property>
+ <property name="allow_empty">True</property>
+ <property name="case_sensitive">False</property>
+ <property name="enable_arrow_keys">True</property>
+ <property name="enable_arrows_always">False</property>
+
+ <child internal-child="entry">
+ <widget class="GtkEntry" id="combo-entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ </child>
+
+ <child internal-child="list">
+ <widget class="GtkList" id="combo-list1">
+ <property name="visible">True</property>
+ <property name="selection_mode">GTK_SELECTION_BROWSE</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow7">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="variable_list">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">True</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">True</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Variables&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="border_width">4</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkEntry" id="pos_label">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="editable">False</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text">(0, 0)</property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ <property name="width_chars">14</property>
+ </widget>
+ <packing>
+ <property name="padding">4</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHButtonBox" id="hbuttonbox2">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkButton" id="close_button">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options">shrink|fill</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolbar" id="toolbar1">
+ <property name="visible">True</property>
+ <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
+ <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
+ <property name="tooltips">True</property>
+ <property name="show_arrow">True</property>
+
+ <child>
+ <widget class="GtkToolButton" id="zoom_normal">
+ <property name="visible">True</property>
+ <property name="stock_id">gtk-zoom-100</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkRadioToolButton" id="zoom_panning">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Shift</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">OREGANO_stock_zoom_pan</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ <property name="active">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkRadioToolButton" id="zoom_region">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Region</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">OREGANO_stock_zoom_region</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ <property name="active">True</property>
+ <property name="group">zoom_panning</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/data/glade/print-options.glade b/data/glade/print-options.glade
new file mode 100644
index 0000000..6d7fac3
--- /dev/null
+++ b/data/glade/print-options.glade
@@ -0,0 +1,405 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="main">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">window1</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+
+ <child>
+ <widget class="GtkHBox" id="widget">
+ <property name="border_width">8</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <property name="spacing">8</property>
+
+ <child>
+ <widget class="GtkFrame" id="frame3">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="checkbutton1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Use colors</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">True</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <placeholder/>
+ </child>
+
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;General&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFrame" id="frame4">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">12</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkTable" id="table2">
+ <property name="border_width">6</property>
+ <property name="visible">True</property>
+ <property name="n_rows">5</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">8</property>
+ <property name="column_spacing">8</property>
+
+ <child>
+ <widget class="GtkColorButton" id="color_components">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="use_alpha">False</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Components</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label12">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Labels</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label13">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Wires</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label14">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Text</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkColorButton" id="color_labels">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="use_alpha">False</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkColorButton" id="color_wires">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="use_alpha">False</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkColorButton" id="color_text">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="use_alpha">False</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label15">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Background</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkColorButton" id="color_background">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="use_alpha">True</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Colors&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/data/glade/properties.glade b/data/glade/properties.glade
new file mode 100644
index 0000000..baab262
--- /dev/null
+++ b/data/glade/properties.glade
@@ -0,0 +1,290 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkDialog" id="properties">
+ <property name="width_request">400</property>
+ <property name="height_request">400</property>
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Properties</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_CENTER</property>
+ <property name="modal">False</property>
+ <property name="resizable">False</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="has_separator">False</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox2">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area2">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="cancelbutton2">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="okbutton2">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-ok</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-5</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox10">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkTable" id="table1">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">6</property>
+
+ <child>
+ <widget class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Title:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Author:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="title">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char" translatable="no">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="author">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char" translatable="no">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox5">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"> </property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTextView" id="comments">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="overwrite">False</property>
+ <property name="accepts_tab">True</property>
+ <property name="justification">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap_mode">GTK_WRAP_NONE</property>
+ <property name="cursor_visible">True</property>
+ <property name="pixels_above_lines">0</property>
+ <property name="pixels_below_lines">0</property>
+ <property name="pixels_inside_wrap">0</property>
+ <property name="left_margin">0</property>
+ <property name="right_margin">0</property>
+ <property name="indent">0</property>
+ <property name="text" translatable="yes"></property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Comments&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/data/glade/settings.glade b/data/glade/settings.glade
new file mode 100644
index 0000000..9b6242e
--- /dev/null
+++ b/data/glade/settings.glade
@@ -0,0 +1,480 @@
+<?xml version="1.0"?>
+<glade-interface>
+ <requires-version lib="gtk+" version="2.12"/>
+ <widget class="GtkWindow" id="toplevel">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Preferences</property>
+ <property name="window_position">GTK_WIN_POS_CENTER</property>
+ <child>
+ <widget class="GtkVBox" id="vbox">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <child>
+ <widget class="GtkNotebook" id="notebook">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="border_width">2</property>
+ <child>
+ <widget class="GtkVBox" id="vbox8">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <child>
+ <widget class="GtkVBox" id="vbox14">
+ <property name="visible">True</property>
+ <property name="spacing">18</property>
+ <child>
+ <widget class="GtkFrame" id="frame3">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkVBox" id="vbox19">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkHBox" id="hbox18">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label53">
+ <property name="visible">True</property>
+ <property name="xpad">10</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox20">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkCheckButton" id="splash-enable">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Show the splash screen at application startup</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="realtime-enable">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Realtime update of selection (slow)</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="log-enable">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Automatically show log windows after simulation</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox10">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label34">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Grid size[px] </property>
+ <property name="justify">GTK_JUSTIFY_CENTER</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSpinButton" id="grid-size">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">10 0 100 10 10 10</property>
+ <property name="climb_rate">1</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label48">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;User Interface&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame2">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkVBox" id="vbox16">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkHBox" id="hbox16">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label51">
+ <property name="visible">True</property>
+ <property name="xpad">10</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="compress-enable">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Compress saved files</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label49">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;File Format&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkVBox" id="vbox17">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkHBox" id="hbox17">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label52">
+ <property name="visible">True</property>
+ <property name="xpad">10</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkTable" id="engine_table">
+ <property name="visible">True</property>
+ <property name="border_width">6</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">8</property>
+ <property name="row_spacing">8</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label50">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Engine&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label35">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">User Interface</property>
+ <property name="justify">GTK_JUSTIFY_CENTER</property>
+ </widget>
+ <packing>
+ <property name="tab_fill">False</property>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox9">
+ <property name="visible">True</property>
+ <property name="border_width">12</property>
+ <child>
+ <widget class="GtkVBox" id="vbox21">
+ <property name="visible">True</property>
+ <property name="spacing">18</property>
+ <child>
+ <widget class="GtkFrame" id="frame4">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkVBox" id="vbox22">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkFileChooserButton" id="engine-path">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Select A File</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label54">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Executable Path&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFrame" id="frame5">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <child>
+ <widget class="GtkVBox" id="vbox23">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkHBox" id="hbox21">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label57">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">
+</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox24">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkHBox" id="hbox24">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label59">
+ <property name="width_request">90</property>
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="xpad">10</property>
+ <property name="label" translatable="yes">Model</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFileChooserButton" id="model-path-entry">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Select A Directory</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox23">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkLabel" id="label58">
+ <property name="width_request">90</property>
+ <property name="visible">True</property>
+ <property name="xpad">10</property>
+ <property name="label" translatable="yes">Library</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkFileChooserButton" id="library-path-entry">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Select A File</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="pack_type">GTK_PACK_END</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label55">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Data Paths&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label41">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Paths</property>
+ <property name="justify">GTK_JUSTIFY_CENTER</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHButtonBox" id="hbuttonbox">
+ <property name="visible">True</property>
+ <property name="border_width">2</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <child>
+ <widget class="GtkButton" id="close_bt">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="label">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</glade-interface>
diff --git a/data/glade/sim-settings.glade b/data/glade/sim-settings.glade
new file mode 100644
index 0000000..9c7762c
--- /dev/null
+++ b/data/glade/sim-settings.glade
@@ -0,0 +1,1726 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkDialog" id="toplevel">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Simulation Settings</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">True</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="action_area">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="close_bt">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-7</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkNotebook" id="notebook">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="show_tabs">True</property>
+ <property name="show_border">True</property>
+ <property name="tab_pos">GTK_POS_TOP</property>
+ <property name="scrollable">False</property>
+ <property name="enable_popup">False</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox2">
+ <property name="border_width">8</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">3</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="trans_enable">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">False</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label72">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Transient&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="trans_frame">
+ <property name="border_width">3</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="label71">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">10</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox3">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox9">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="trans_init_cond">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Use Initial Conditions</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkTable" id="table11">
+ <property name="visible">True</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">5</property>
+ <property name="column_spacing">10</property>
+
+ <child>
+ <widget class="GtkLabel" id="label76">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Start</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label77">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Stop</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="trans_start">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="trans_stop">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="trans_step">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCheckButton" id="trans_step_enable">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Step</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="fourier_enable">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">False</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label73">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Fourier&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="fourier_frame">
+ <property name="border_width">3</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="label70">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">10</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkTable" id="table12">
+ <property name="visible">True</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">5</property>
+ <property name="column_spacing">10</property>
+
+ <child>
+ <widget class="GtkLabel" id="label37">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Frequency</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label38">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">List of outputs</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="fourier_add">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">0</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox12">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child>
+ <widget class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="stock">gtk-add</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label78">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Add to list</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="fourier_freq">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="fourier_vout">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCombo" id="fourier_select_out">
+ <property name="visible">True</property>
+ <property name="value_in_list">False</property>
+ <property name="allow_empty">True</property>
+ <property name="case_sensitive">False</property>
+ <property name="enable_arrow_keys">True</property>
+ <property name="enable_arrows_always">False</property>
+
+ <child internal-child="entry">
+ <widget class="GtkEntry" id="combo-entry5">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ </child>
+
+ <child internal-child="list">
+ <widget class="GtkList" id="combo-list1">
+ <property name="visible">True</property>
+ <property name="selection_mode">GTK_SELECTION_BROWSE</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox5">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="dc_enable">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">False</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label74">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;DC Sweep&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="dcsweep_frame">
+ <property name="border_width">3</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="label69">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">10</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkTable" id="table13">
+ <property name="visible">True</property>
+ <property name="n_rows">4</property>
+ <property name="n_columns">3</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">5</property>
+ <property name="column_spacing">10</property>
+
+ <child>
+ <widget class="GtkLabel" id="label39">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Source</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label40">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Start</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label41">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Stop</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCombo" id="dc_vin1">
+ <property name="visible">True</property>
+ <property name="value_in_list">False</property>
+ <property name="allow_empty">True</property>
+ <property name="case_sensitive">False</property>
+ <property name="enable_arrow_keys">True</property>
+ <property name="enable_arrows_always">False</property>
+
+ <child internal-child="entry">
+ <widget class="GtkEntry" id="combo-entry6">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ </child>
+
+ <child internal-child="list">
+ <widget class="GtkList" id="combo-list2">
+ <property name="visible">True</property>
+ <property name="selection_mode">GTK_SELECTION_BROWSE</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCombo" id="dc_vin2">
+ <property name="visible">True</property>
+ <property name="value_in_list">False</property>
+ <property name="allow_empty">True</property>
+ <property name="case_sensitive">False</property>
+ <property name="enable_arrow_keys">True</property>
+ <property name="enable_arrows_always">False</property>
+
+ <child internal-child="entry">
+ <widget class="GtkEntry" id="combo-entry7">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ </child>
+
+ <child internal-child="list">
+ <widget class="GtkList" id="combo-list3">
+ <property name="visible">True</property>
+ <property name="selection_mode">GTK_SELECTION_BROWSE</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="dc_start1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">12</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="dc_start2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">12</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="dc_stop1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="dc_stop2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label42">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Step</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="dc_step1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="dc_step2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox7">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="ac_enable">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">False</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label75">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;AC&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="ac_frame">
+ <property name="border_width">3</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="label68">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">10</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkTable" id="table14">
+ <property name="visible">True</property>
+ <property name="n_rows">4</property>
+ <property name="n_columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row_spacing">5</property>
+ <property name="column_spacing">10</property>
+
+ <child>
+ <widget class="GtkLabel" id="label44">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Type</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label45">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Points</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label46">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Start</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label47">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Stop</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCombo" id="ac_type">
+ <property name="visible">True</property>
+ <property name="value_in_list">False</property>
+ <property name="allow_empty">True</property>
+ <property name="case_sensitive">False</property>
+ <property name="enable_arrow_keys">True</property>
+ <property name="enable_arrows_always">False</property>
+
+ <child internal-child="entry">
+ <widget class="GtkEntry" id="combo-entry8">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ </child>
+
+ <child internal-child="list">
+ <widget class="GtkList" id="combo-list4">
+ <property name="visible">True</property>
+ <property name="selection_mode">GTK_SELECTION_BROWSE</property>
+
+ <child>
+ <widget class="GtkListItem" id="listitem15">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">DEC</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkListItem" id="listitem16">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">OCT</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkListItem" id="listitem17">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">LIN</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">1</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="ac_npoints">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="ac_start">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="ac_stop">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label52">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Analysis Parameters</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox4">
+ <property name="border_width">8</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">8</property>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow5">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="option_list">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">True</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">True</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox13">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">8</property>
+
+ <child>
+ <widget class="GtkEntry" id="opt_value">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="opt_remove">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-delete</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="opt_accept">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-ok</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="add_option">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">0</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox14">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child>
+ <widget class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="stock">gtk-add</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="labelbtn">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Add new options</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label55">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Analysis Options</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/data/glade/simulation.glade b/data/glade/simulation.glade
new file mode 100644
index 0000000..4e9df9c
--- /dev/null
+++ b/data/glade/simulation.glade
@@ -0,0 +1,111 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkDialog" id="toplevel">
+ <property name="title" translatable="yes">Simulation</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">True</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">8</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
+
+ <child>
+ <widget class="GtkButton" id="button3">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="border_width">6</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">4</property>
+
+ <child>
+ <widget class="GtkLabel" id="progress_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Progress: None</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_CENTER</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkProgressBar" id="progressbar">
+ <property name="visible">True</property>
+ <property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property>
+ <property name="fraction">0</property>
+ <property name="pulse_step">0.10000000149</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/data/glade/splash.glade b/data/glade/splash.glade
new file mode 100644
index 0000000..fec0aed
--- /dev/null
+++ b/data/glade/splash.glade
@@ -0,0 +1,90 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkWindow" id="splash">
+ <property name="visible">True</property>
+ <property name="title" translatable="no">Oregano</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_SPLASHSCREEN</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkEventBox" id="event">
+ <property name="visible">True</property>
+ <property name="visible_window">False</property>
+ <property name="above_child">False</property>
+
+ <child>
+ <widget class="GtkImage" id="image">
+ <property name="visible">True</property>
+ <property name="pixbuf">splash.xpm</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">label1</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkProgressBar" id="pbar">
+ <property name="visible">True</property>
+ <property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property>
+ <property name="fraction">0.46</property>
+ <property name="pulse_step">0.17</property>
+ <property name="text" translatable="yes"></property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/data/glade/splash.xpm b/data/glade/splash.xpm
new file mode 100644
index 0000000..17f04b5
--- /dev/null
+++ b/data/glade/splash.xpm
@@ -0,0 +1,7026 @@
+/* XPM */
+static char * splash_xpm[] = {
+"217 316 6707 2",
+" c None",
+". c #231F20",
+"+ c #272425",
+"@ c #2C292A",
+"# c #292627",
+"$ c #2D2B2C",
+"% c #2B2829",
+"& c #282526",
+"* c #2E2C2D",
+"= c #323031",
+"- c #242122",
+"; c #3A393A",
+"> c #6E7072",
+", c #505153",
+"' c #434345",
+") c #6D6F71",
+"! c #57585A",
+"~ c #48484A",
+"{ c #6C6D70",
+"] c #5A5B5D",
+"^ c #49494B",
+"/ c #666769",
+"( c #555557",
+"_ c #4E4F51",
+": c #6D6E70",
+"< c #67686B",
+"[ c #535355",
+"} c #646567",
+"| c #606163",
+"1 c #5E5F61",
+"2 c #4B4B4D",
+"3 c #656668",
+"4 c #545456",
+"5 c #626366",
+"6 c #5C5C5F",
+"7 c #4F5052",
+"8 c #595A5C",
+"9 c #414142",
+"0 c #4D4E50",
+"a c #525255",
+"b c #636467",
+"c c #515254",
+"d c #66686A",
+"e c #5F6062",
+"f c #6A6B6D",
+"g c #565759",
+"h c #4D4D4F",
+"i c #474749",
+"j c #68696C",
+"k c #5D5E60",
+"l c #616365",
+"m c #5C5D60",
+"n c #696A6C",
+"o c #6B6C6F",
+"p c #3D3C3E",
+"q c #464648",
+"r c #555658",
+"s c #58595B",
+"t c #4A4A4C",
+"u c #6A6C6E",
+"v c #3E3E3F",
+"w c #616264",
+"x c #5B5C5E",
+"y c #737477",
+"z c #9D9FA2",
+"A c #333133",
+"B c #363435",
+"C c #373537",
+"D c #302D2F",
+"E c #383638",
+"F c #424244",
+"G c #454547",
+"H c #3C3B3D",
+"I c #3F3F40",
+"J c #3B3A3C",
+"K c #393839",
+"L c #4C4C4E",
+"M c #343334",
+"N c #404041",
+"O c #312F30",
+"P c #444446",
+"Q c #9B9DA0",
+"R c #262223",
+"S c #7A7C7F",
+"T c #747578",
+"U c #BCBEC0",
+"V c #8E9092",
+"W c #8C8E91",
+"X c #96989B",
+"Y c #E7E8E9",
+"Z c #D3D4D6",
+"` c #D4D5D7",
+" . c #8A8C8E",
+".. c #DFE0E2",
+"+. c #DDDEDF",
+"@. c #9EA1A3",
+"#. c #A8AAAD",
+"$. c #8E9093",
+"%. c #ABADB0",
+"&. c #808184",
+"*. c #D6D7D9",
+"=. c #DADCDD",
+"-. c #AAACAF",
+";. c #CFD0D2",
+">. c #898B8E",
+",. c #909295",
+"'. c #6F7073",
+"). c #EAEBEC",
+"!. c #ECEDED",
+"~. c #707174",
+"{. c #A3A5A8",
+"]. c #8B8D8F",
+"^. c #A0A2A5",
+"/. c #CBCCCE",
+"(. c #D9DBDC",
+"_. c #949698",
+":. c #77797C",
+"<. c #8F9194",
+"[. c #9A9C9E",
+"}. c #B7B9BB",
+"|. c #727476",
+"1. c #C5C7C9",
+"2. c #CBCDCF",
+"3. c #BCBDC0",
+"4. c #B2B4B6",
+"5. c #C5C6C8",
+"6. c #B7B9BC",
+"7. c #C2C4C6",
+"8. c #A2A4A7",
+"9. c #A5A7A9",
+"0. c #CACBCD",
+"a. c #A1A3A5",
+"b. c #A4A6A9",
+"c. c #888A8D",
+"d. c #AEB0B2",
+"e. c #939598",
+"f. c #787A7C",
+"g. c #B1B3B5",
+"h. c #87898B",
+"i. c #DCDDDE",
+"j. c #95979A",
+"k. c #CCCED0",
+"l. c #8D8F92",
+"m. c #F3F3F3",
+"n. c #888A8C",
+"o. c #EDEDEE",
+"p. c #D7D8DA",
+"q. c #919395",
+"r. c #C7C9CB",
+"s. c #7C7E80",
+"t. c #F1F1F2",
+"u. c #D5D6D7",
+"v. c #C4C6C8",
+"w. c #9EA0A2",
+"x. c #D0D2D3",
+"y. c #838588",
+"z. c #8B8D90",
+"A. c #DEE0E1",
+"B. c #7D7F82",
+"C. c #D9DADB",
+"D. c #9C9EA1",
+"E. c #E1E2E3",
+"F. c #B2B4B7",
+"G. c #AFB1B4",
+"H. c #C0C2C4",
+"I. c #747678",
+"J. c #CDCFD0",
+"K. c #CECFD1",
+"L. c #C9CBCC",
+"M. c #717375",
+"N. c #DBDCDE",
+"O. c #D2D3D5",
+"P. c #A9ACAE",
+"Q. c #A6A8AB",
+"R. c #C1C2C4",
+"S. c #989A9D",
+"T. c #D8D9DB",
+"U. c #A2A4A6",
+"V. c #979A9C",
+"W. c #B6B8BA",
+"X. c #7B7D7F",
+"Y. c #E3E4E5",
+"Z. c #77787B",
+"`. c #E9EAEB",
+" + c #D1D3D4",
+".+ c #C3C5C7",
+"++ c #ADAFB1",
+"@+ c #BFC1C3",
+"#+ c #76777A",
+"$+ c #999B9E",
+"%+ c #B8BABC",
+"&+ c #EEEFF0",
+"*+ c #B5B7B9",
+"=+ c #B4B6B8",
+"-+ c #919396",
+";+ c #9B9D9F",
+">+ c #C8CACC",
+",+ c #E5E6E7",
+"'+ c #97999B",
+")+ c #E2E3E4",
+"!+ c #EBECED",
+"~+ c #A9ABAD",
+"{+ c #D5D7D8",
+"]+ c #7A7B7E",
+"^+ c #808285",
+"/+ c #F6F6F7",
+"(+ c #B3B5B8",
+"_+ c #BBBDBF",
+":+ c #BABCBE",
+"<+ c #FFFFFF",
+"[+ c #858789",
+"}+ c #F4F5F5",
+"|+ c #848688",
+"1+ c #ACAEB1",
+"2+ c #AEB0B3",
+"3+ c #929497",
+"4+ c #A7A9AC",
+"5+ c #B0B2B4",
+"6+ c #231E20",
+"7+ c #413F45",
+"8+ c #65636C",
+"9+ c #7E7C86",
+"0+ c #706D77",
+"a+ c #716F78",
+"b+ c #7A7982",
+"c+ c #73717A",
+"d+ c #76737D",
+"e+ c #7C7A83",
+"f+ c #727079",
+"g+ c #797780",
+"h+ c #706E78",
+"i+ c #77757F",
+"j+ c #716F79",
+"k+ c #73717B",
+"l+ c #6F6D76",
+"m+ c #7D7B85",
+"n+ c #74727B",
+"o+ c #696770",
+"p+ c #7F7D87",
+"q+ c #6C6A73",
+"r+ c #78757F",
+"s+ c #76747E",
+"t+ c #7B7983",
+"u+ c #6E6B75",
+"v+ c #787680",
+"w+ c #7A7881",
+"x+ c #75737C",
+"y+ c #76747D",
+"z+ c #7C7B84",
+"A+ c #7E7C85",
+"B+ c #706E77",
+"C+ c #6B6A73",
+"D+ c #83818B",
+"E+ c #75737D",
+"F+ c #7B7982",
+"G+ c #76757E",
+"H+ c #78767F",
+"I+ c #85838D",
+"J+ c #6E6C76",
+"K+ c #726F79",
+"L+ c #797781",
+"M+ c #82818A",
+"N+ c #6E6C75",
+"O+ c #787780",
+"P+ c #74717B",
+"Q+ c #7B7A83",
+"R+ c #7C7A84",
+"S+ c #807F88",
+"T+ c #797881",
+"U+ c #6D6B74",
+"V+ c #77757E",
+"W+ c #72707A",
+"X+ c #84828C",
+"Y+ c #74727C",
+"Z+ c #74737C",
+"`+ c #6B6972",
+" @ c #84838C",
+".@ c #ACABB2",
+"+@ c #363536",
+"@@ c #221D1F",
+"#@ c #5C5765",
+"$@ c #9891A6",
+"%@ c #BAB0C8",
+"&@ c #B3AAC2",
+"*@ c #AAA2B9",
+"=@ c #B8AFC6",
+"-@ c #AFA6BE",
+";@ c #ACA3BA",
+">@ c #BAB2C9",
+",@ c #B5ACC4",
+"'@ c #B2A9C1",
+")@ c #B1A8C0",
+"!@ c #B6ADC5",
+"~@ c #B0A7BF",
+"{@ c #A9A1B8",
+"]@ c #B9B0C7",
+"^@ c #B4ABC3",
+"/@ c #A8A0B7",
+"(@ c #B4AAC1",
+"_@ c #ADA4BC",
+":@ c #B5ACC3",
+"<@ c #B3AAC1",
+"[@ c #B6ADC4",
+"}@ c #B4AAC2",
+"|@ c #B8AEC6",
+"1@ c #AEA5BD",
+"2@ c #AEA6BD",
+"3@ c #ACA3BB",
+"4@ c #B0A8BF",
+"5@ c #B3A9C1",
+"6@ c #B2A8C0",
+"7@ c #B6AEC5",
+"8@ c #B1A9C0",
+"9@ c #B7AEC6",
+"0@ c #ADA4BB",
+"a@ c #B9B0C8",
+"b@ c #B8AFC7",
+"c@ c #ABA3BA",
+"d@ c #B7AEC5",
+"e@ c #B4AAC3",
+"f@ c #B5ABC3",
+"g@ c #ABA2B9",
+"h@ c #B4ABC2",
+"i@ c #B8B0C7",
+"j@ c #B1A7BF",
+"k@ c #B4ACC3",
+"l@ c #AAA1B9",
+"m@ c #BAB1C8",
+"n@ c #AEA4BC",
+"o@ c #B7ADC5",
+"p@ c #AFA6BD",
+"q@ c #B1A8C1",
+"r@ c #A9A0B7",
+"s@ c #B7AFC6",
+"t@ c #B0A7BE",
+"u@ c #B1A7C0",
+"v@ c #B2A9C0",
+"w@ c #ACA4BB",
+"x@ c #BBB3CA",
+"y@ c #A89FB6",
+"z@ c #AFA7BF",
+"A@ c #B1A8BF",
+"B@ c #ABA2BA",
+"C@ c #A9A0B8",
+"D@ c #B2A8C1",
+"E@ c #BEB5CC",
+"F@ c #CFCAD8",
+"G@ c #3B393B",
+"H@ c #231F21",
+"I@ c #544F5D",
+"J@ c #8F889C",
+"K@ c #B7AFC5",
+"L@ c #B7AFC4",
+"M@ c #A8A0B6",
+"N@ c #B3ABC1",
+"O@ c #A59DB3",
+"P@ c #AAA3B9",
+"Q@ c #A9A1B7",
+"R@ c #A39BB1",
+"S@ c #B6AEC4",
+"T@ c #A69FB5",
+"U@ c #A79FB5",
+"V@ c #B5AFC4",
+"W@ c #AEA7BD",
+"X@ c #A098AE",
+"Y@ c #B0A7BD",
+"Z@ c #B0A8BE",
+"`@ c #A59CB3",
+" # c #ADA5BB",
+".# c #B4ABC1",
+"+# c #B0A9BE",
+"@# c #ACA4BA",
+"## c #A7A0B5",
+"$# c #B3ABC0",
+"%# c #A49CB2",
+"&# c #A9A2B7",
+"*# c #B4ADC2",
+"=# c #A69DB3",
+"-# c #AAA2B8",
+";# c #B8B1C6",
+"># c #A29AAF",
+",# c #B4ACC2",
+"'# c #A69EB4",
+")# c #B5ADC3",
+"!# c #AAA1B8",
+"~# c #AFA7BD",
+"{# c #A79EB5",
+"]# c #B2AAC0",
+"^# c #B5ADC2",
+"/# c #B0A8BD",
+"(# c #ADA4BA",
+"_# c #B1A8BE",
+":# c #A199AF",
+"<# c #A49CB3",
+"[# c #A69EB3",
+"}# c #B6AFC4",
+"|# c #B3AAC0",
+"1# c #B1AABF",
+"2# c #B3ACC1",
+"3# c #ACA4B9",
+"4# c #B2AAC1",
+"5# c #AEA6BB",
+"6# c #AEA5BC",
+"7# c #B4ACC1",
+"8# c #B7B0C5",
+"9# c #B8B0C5",
+"0# c #A099AE",
+"a# c #B1A9BF",
+"b# c #ABA3B9",
+"c# c #A29BB1",
+"d# c #A89FB5",
+"e# c #A39BB0",
+"f# c #AEA6BC",
+"g# c #AFA7BE",
+"h# c #AFA7BC",
+"i# c #ACA5BB",
+"j# c #B1A9BE",
+"k# c #A29AB0",
+"l# c #A8A0B5",
+"m# c #BAB2C7",
+"n# c #CCC7D5",
+"o# c #242022",
+"p# c #4F4A57",
+"q# c #8B8598",
+"r# c #B8B0C6",
+"s# c #A49DB3",
+"t# c #ADA5BC",
+"u# c #9B93A8",
+"v# c #B6ADC3",
+"w# c #9F97AC",
+"x# c #A49BB1",
+"y# c #9D96AB",
+"z# c #9E97AC",
+"A# c #B8AFC5",
+"B# c #9D95AA",
+"C# c #9F97AD",
+"D# c #B2A9BF",
+"E# c #AFA8BD",
+"F# c #A199AE",
+"G# c #AEA7BC",
+"H# c #A49CB1",
+"I# c #A29BB0",
+"J# c #B9B1C7",
+"K# c #9C94A9",
+"L# c #ADA6BB",
+"M# c #ABA3B8",
+"N# c #9B94A9",
+"O# c #ABA4B9",
+"P# c #9E96AB",
+"Q# c #B7AEC4",
+"R# c #9F98AD",
+"S# c #BAB1C7",
+"T# c #B2AABF",
+"U# c #9E96AC",
+"V# c #B9B2C7",
+"W# c #8E889B",
+"X# c #9890A5",
+"Y# c #B5AEC3",
+"Z# c #9A93A8",
+"`# c #AAA1B7",
+" $ c #A8A1B7",
+".$ c #B2ABC1",
+"+$ c #9991A6",
+"@$ c #AAA2B7",
+"#$ c #9891A5",
+"$$ c #CDC9D6",
+"%$ c #524D5A",
+"&$ c #908A9D",
+"*$ c #B9B1C6",
+"=$ c #B6AEC3",
+"-$ c #BAB3C8",
+";$ c #AAA3B8",
+">$ c #A299AF",
+",$ c #BBB3C8",
+"'$ c #9D95AB",
+")$ c #9F98AE",
+"!$ c #B2ABC0",
+"~$ c #ACA5BA",
+"{$ c #A39CB1",
+"]$ c #B0A9BF",
+"^$ c #4D4855",
+"/$ c #ADA5BA",
+"($ c #A69EB5",
+"_$ c #A69FB4",
+":$ c #9B93A9",
+"<$ c #AFA8BE",
+"[$ c #B8AFC4",
+"}$ c #B5ACC2",
+"|$ c #CDC8D6",
+"1$ c #4E4956",
+"2$ c #BBB2C8",
+"3$ c #A79FB6",
+"4$ c #CAC6D4",
+"5$ c #534F5C",
+"6$ c #A79FB4",
+"7$ c #A59EB3",
+"8$ c #A8A1B6",
+"9$ c #56515F",
+"0$ c #938CA0",
+"a$ c #B3ACC2",
+"b$ c #B7B0C6",
+"c$ c #928B9F",
+"d$ c #9E97AB",
+"e$ c #B8B1C5",
+"f$ c #9C95AA",
+"g$ c #A198AF",
+"h$ c #B9B1C5",
+"i$ c #A69DB4",
+"j$ c #CBC7D5",
+"k$ c #A19AAF",
+"l$ c #A9A0B6",
+"m$ c #B9B1C3",
+"n$ c #D8D1DD",
+"o$ c #CCC5D2",
+"p$ c #C0BAC6",
+"q$ c #CAC5CC",
+"r$ c #C9C3CE",
+"s$ c #C8C1D0",
+"t$ c #D5CFDB",
+"u$ c #B7B0C3",
+"v$ c #55515E",
+"w$ c #918B9F",
+"x$ c #A39BB2",
+"y$ c #BAB3C5",
+"z$ c #D7D1DC",
+"A$ c #BBB8C6",
+"B$ c #C4C8C5",
+"C$ c #CFD9C8",
+"D$ c #A8B89F",
+"E$ c #9EB185",
+"F$ c #A9B986",
+"G$ c #A9BA8B",
+"H$ c #C1CDA5",
+"I$ c #E0E5CF",
+"J$ c #E1DEE5",
+"K$ c #B5AEC0",
+"L$ c #AFA6BC",
+"M$ c #575260",
+"N$ c #9790A4",
+"O$ c #9992A7",
+"P$ c #9D96AC",
+"Q$ c #BCB5C8",
+"R$ c #BDB5C6",
+"S$ c #D8D8DC",
+"T$ c #D0DAC2",
+"U$ c #AABC96",
+"V$ c #94AC7D",
+"W$ c #8AA571",
+"X$ c #618956",
+"Y$ c #57854F",
+"Z$ c #739758",
+"`$ c #769A56",
+" % c #7F9F5F",
+".% c #9EB278",
+"+% c #C4CBA2",
+"@% c #E6E8DB",
+"#% c #F1EDF2",
+"$% c #BEB8C9",
+"%% c #958DA3",
+"&% c #968FA3",
+"*% c #B2A8BF",
+"=% c #BCB5C7",
+"-% c #E1DDE4",
+";% c #EBECF2",
+">% c #DCE0C8",
+",% c #BCC690",
+"'% c #94AB69",
+")% c #83A158",
+"!% c #85A25C",
+"~% c #8EA762",
+"{% c #83A165",
+"]% c #5E8A6B",
+"^% c #59876D",
+"/% c #749A72",
+"(% c #81A273",
+"_% c #7E9E64",
+":% c #809E59",
+"<% c #91A874",
+"[% c #BFCAB1",
+"}% c #E0E0E6",
+"|% c #CDC8D4",
+"1% c #C8C2D3",
+"2% c #BFB6C9",
+"3% c #C7BFCE",
+"4% c #CBC5D4",
+"5% c #A49DB2",
+"6% c #534E5B",
+"7% c #AFA6BA",
+"8% c #BFB8CA",
+"9% c #C5BECF",
+"0% c #D3D3C9",
+"a% c #DFE1BA",
+"b% c #B2BE94",
+"c% c #7D9B6D",
+"d% c #7F9C5A",
+"e% c #9CB069",
+"f% c #ADBD7D",
+"g% c #9DB174",
+"h% c #98AD70",
+"i% c #92AC6D",
+"j% c #769965",
+"k% c #4E7C64",
+"l% c #548365",
+"m% c #82A36F",
+"n% c #84A67A",
+"o% c #799F71",
+"p% c #71975A",
+"q% c #77995F",
+"r% c #A7B997",
+"s% c #EDF3E7",
+"t% c #EBE6EC",
+"u% c #A098AF",
+"v% c #C2BACC",
+"w% c #D3CDDB",
+"x% c #E3E1E5",
+"y% c #DCDFCB",
+"z% c #C5CFB7",
+"A% c #D8DCD9",
+"B% c #BDB5C9",
+"C% c #BCB4C9",
+"D% c #C9C5D3",
+"E% c #BAB3C6",
+"F% c #E2DDE6",
+"G% c #E7E5EE",
+"H% c #D8D8C9",
+"I% c #CED2AC",
+"J% c #C0C9A1",
+"K% c #B5C087",
+"L% c #ADB86B",
+"M% c #91A657",
+"N% c #6D9263",
+"O% c #57846D",
+"P% c #698F6A",
+"Q% c #9EB377",
+"R% c #A1B378",
+"S% c #8DA66E",
+"T% c #8AA770",
+"U% c #97B075",
+"V% c #71916A",
+"W% c #4C7B62",
+"X% c #6A9368",
+"Y% c #83A473",
+"Z% c #799D72",
+"`% c #6D9674",
+" & c #7A9D6B",
+".& c #779A5A",
+"+& c #A0B387",
+"@& c #E6E9DA",
+"#& c #E2DEE7",
+"$& c #B9B1C2",
+"%& c #DEDBE6",
+"&& c #DDE0CC",
+"*& c #D4D9AC",
+"=& c #D4D7A8",
+"-& c #9DAD75",
+";& c #71935D",
+">& c #BBC8B2",
+",& c #BEB6CB",
+"'& c #8D879A",
+")& c #E8EAD0",
+"!& c #BFC99F",
+"~& c #A9B574",
+"{& c #8FA659",
+"]& c #7C9D60",
+"^& c #91A864",
+"/& c #ADBA73",
+"(& c #A8B874",
+"_& c #9AAE71",
+":& c #688C70",
+"<& c #3F7667",
+"[& c #70936C",
+"}& c #9DB478",
+"|& c #8AAA7B",
+"1& c #85A474",
+"2& c #9AB27C",
+"3& c #8DA876",
+"4& c #537F65",
+"5& c #487A64",
+"6& c #75986E",
+"7& c #86A471",
+"8& c #568368",
+"9& c #648D73",
+"0& c #84A56A",
+"a& c #648B48",
+"b& c #90A670",
+"c& c #F1F3E1",
+"d& c #C5BECE",
+"e& c #B2ABBE",
+"f& c #CDC7D5",
+"g& c #EBE8EF",
+"h& c #E2E7D6",
+"i& c #B8C8A5",
+"j& c #A0B173",
+"k& c #ADB95C",
+"l& c #98A95D",
+"m& c #678A56",
+"n& c #6E9554",
+"o& c #A1B58D",
+"p& c #D4D7DD",
+"q& c #B1A8BC",
+"r& c #BCB5CA",
+"s& c #BAB2C8",
+"t& c #A89FB7",
+"u& c #BCB4C6",
+"v& c #DCDCE0",
+"w& c #B4C2A4",
+"x& c #93A65D",
+"y& c #92A750",
+"z& c #9AAF6A",
+"A& c #8EAB78",
+"B& c #6D9773",
+"C& c #729773",
+"D& c #93AD79",
+"E& c #A1B571",
+"F& c #A7B76B",
+"G& c #9AB174",
+"H& c #6C9476",
+"I& c #588570",
+"J& c #71966A",
+"K& c #88A778",
+"L& c #98B077",
+"M& c #95A961",
+"N& c #8CA867",
+"O& c #58856A",
+"P& c #497865",
+"Q& c #749772",
+"R& c #9FB67D",
+"S& c #71926B",
+"T& c #407662",
+"U& c #69906C",
+"V& c #759961",
+"W& c #698F44",
+"X& c #B9C48F",
+"Y& c #EAE4EB",
+"Z& c #D9D5E2",
+"`& c #EAE6EC",
+" * c #F5F4F7",
+".* c #E4E8D4",
+"+* c #BDC8A0",
+"@* c #8DA879",
+"#* c #779C61",
+"$* c #9CB06E",
+"%* c #A8B779",
+"&* c #598265",
+"** c #52806D",
+"=* c #97B276",
+"-* c #8AA66E",
+";* c #B0C0B0",
+">* c #C2BCCE",
+",* c #9D96AA",
+"'* c #9A93A7",
+")* c #CBC7D4",
+"!* c #3C3A3C",
+"~* c #BBB3C9",
+"{* c #C3BCCE",
+"]* c #EBECE9",
+"^* c #9BAC98",
+"/* c #306044",
+"(* c #537A45",
+"_* c #99AC59",
+":* c #AAB97B",
+"<* c #A7BB7F",
+"[* c #78986D",
+"}* c #517F68",
+"|* c #618D72",
+"1* c #84A26F",
+"2* c #AAB76A",
+"3* c #B3BF77",
+"4* c #94AD78",
+"5* c #618C70",
+"6* c #4C7D69",
+"7* c #6A9270",
+"8* c #97B074",
+"9* c #A0AF5D",
+"0* c #8CA45D",
+"a* c #58876D",
+"b* c #447866",
+"c* c #608C6A",
+"d* c #92AD77",
+"e* c #83A16C",
+"f* c #447A65",
+"g* c #4E7E69",
+"h* c #86A674",
+"i* c #779754",
+"j* c #8FA25D",
+"k* c #F0EED7",
+"l* c #ECF0E9",
+"m* c #CCD3AE",
+"n* c #A5B57C",
+"o* c #73975E",
+"p* c #749967",
+"q* c #89A87A",
+"r* c #A4BA82",
+"s* c #6B8862",
+"t* c #30675A",
+"u* c #6B9378",
+"v* c #A1B77C",
+"w* c #9FB168",
+"x* c #9EB486",
+"y* c #C0C7CB",
+"z* c #B5ACC0",
+"A* c #BCB5C9",
+"B* c #A7A0B4",
+"C* c #B9B2C6",
+"D* c #A29BAF",
+"E* c #B1AABE",
+"F* c #A69FB3",
+"G* c #B8B0C4",
+"H* c #BAB2C6",
+"I* c #A39CB0",
+"J* c #B7B0C4",
+"K* c #504B58",
+"L* c #8C8598",
+"M* c #CAC5D5",
+"N* c #9CAA9C",
+"O* c #235138",
+"P* c #003225",
+"Q* c #22553E",
+"R* c #839C5C",
+"S* c #A7B674",
+"T* c #A3B67A",
+"U* c #A2B37A",
+"V* c #6D906B",
+"W* c #417967",
+"X* c #53816A",
+"Y* c #809E73",
+"Z* c #ABB87A",
+"`* c #C0C575",
+" = c #9EAE6E",
+".= c #557D65",
+"+= c #3E7566",
+"@= c #66916F",
+"#= c #8BA46D",
+"$= c #88A367",
+"%= c #4D806C",
+"&= c #3C7264",
+"*= c #4D7D60",
+"== c #719565",
+"-= c #809D65",
+";= c #598667",
+">= c #4F8069",
+",= c #779C72",
+"'= c #819F6B",
+")= c #839C4E",
+"!= c #A7B57C",
+"~= c #BAC6B1",
+"{= c #A1B793",
+"]= c #90A866",
+"^= c #779761",
+"/= c #64906F",
+"(= c #81A57D",
+"_= c #93B082",
+":= c #799A71",
+"<= c #336459",
+"[= c #487162",
+"}= c #91AF77",
+"|= c #8EAB72",
+"1= c #9AB071",
+"2= c #8BA86E",
+"3= c #B5C6B2",
+"4= c #C7BFD0",
+"5= c #9E96AD",
+"6= c #A8A1B5",
+"7= c #A9A1B6",
+"8= c #BBB4C9",
+"9= c #BBB4C8",
+"0= c #B5AEC2",
+"a= c #AEA7BB",
+"b= c #ADA6BA",
+"c= c #BDB6CA",
+"d= c #A6A0B4",
+"e= c #BBB3C7",
+"f= c #B4ADC1",
+"g= c #ADA5B9",
+"h= c #CCC8D5",
+"i= c #55505D",
+"j= c #CDD3CF",
+"k= c #325F46",
+"l= c #004B31",
+"m= c #43695C",
+"n= c #476F56",
+"o= c #7E9B71",
+"p= c #9BB37A",
+"q= c #82A478",
+"r= c #B4C285",
+"s= c #B0BC77",
+"t= c #699065",
+"u= c #407765",
+"v= c #3D7567",
+"w= c #709166",
+"x= c #A7B772",
+"y= c #C1CA7C",
+"z= c #91A45F",
+"A= c #5F8664",
+"B= c #4C8070",
+"C= c #5D8B6C",
+"D= c #6B9469",
+"E= c #4F7F66",
+"F= c #4C7D65",
+"G= c #618964",
+"H= c #729365",
+"I= c #85A165",
+"J= c #668D66",
+"K= c #4A7E63",
+"L= c #638E60",
+"M= c #82A062",
+"N= c #85A15E",
+"O= c #709560",
+"P= c #7B9C64",
+"Q= c #81A26C",
+"R= c #729675",
+"S= c #5D8669",
+"T= c #628C69",
+"U= c #81A47B",
+"V= c #8DAC75",
+"W= c #45735D",
+"X= c #2E6762",
+"Y= c #7F9F73",
+"Z= c #9DB475",
+"`= c #799E76",
+" - c #739972",
+".- c #87A770",
+"+- c #B6C5A2",
+"@- c #D0D0D7",
+"#- c #9992A8",
+"$- c #A69EB2",
+"%- c #B5ADBF",
+"&- c #CBC3D3",
+"*- c #C2B9C8",
+"=- c #C3BACA",
+"-- c #C7BECF",
+";- c #ADA4B9",
+">- c #9C95A9",
+",- c #B0A9BD",
+"'- c #ACA5B9",
+")- c #BEB7CA",
+"!- c #A59EB2",
+"~- c #BEB7CB",
+"{- c #AFA8BC",
+"]- c #ABA4B8",
+"^- c #B9B3C6",
+"/- c #B3ACC0",
+"(- c #BFB7CB",
+"_- c #A8A2B6",
+":- c #ADA7BA",
+"<- c #B2ABBF",
+"[- c #BBB5C8",
+"}- c #BAB3C7",
+"|- c #AAA3B7",
+"1- c #B8B2C6",
+"2- c #A59FB2",
+"3- c #CECAD7",
+"4- c #3E3D3F",
+"5- c #8F899D",
+"6- c #D2CFD7",
+"7- c #617C6C",
+"8- c #2A5D40",
+"9- c #7E9C86",
+"0- c #BECDCB",
+"a- c #B5C9C6",
+"b- c #95AD81",
+"c- c #A6B66A",
+"d- c #81A277",
+"e- c #87A372",
+"f- c #B5C178",
+"g- c #A7B76E",
+"h- c #759369",
+"i- c #417460",
+"j- c #437964",
+"k- c #5B8969",
+"l- c #82A067",
+"m- c #A2B55B",
+"n- c #8BA45D",
+"o- c #487967",
+"p- c #447965",
+"q- c #69946B",
+"r- c #5C8768",
+"s- c #588358",
+"t- c #77995C",
+"u- c #7E9C67",
+"v- c #7D9F62",
+"w- c #638D69",
+"x- c #518066",
+"y- c #69915E",
+"z- c #729456",
+"A- c #869F61",
+"B- c #8AA876",
+"C- c #99B379",
+"D- c #82A276",
+"E- c #528167",
+"F- c #507E5E",
+"G- c #5D8864",
+"H- c #88A570",
+"I- c #7A9A68",
+"J- c #28675E",
+"K- c #517F6D",
+"L- c #93AF75",
+"M- c #92AE79",
+"N- c #669177",
+"O- c #608D73",
+"P- c #89A874",
+"Q- c #97B085",
+"R- c #C1CEC2",
+"S- c #BFB7CA",
+"T- c #DBD9E5",
+"U- c #CDD0C0",
+"V- c #BEC7A4",
+"W- c #ABBBA9",
+"X- c #B3C2B5",
+"Y- c #BDCAB2",
+"Z- c #BEC8AE",
+"`- c #CFD1C1",
+" ; c #D8D4D7",
+".; c #CDC5D3",
+"+; c #ABA2B7",
+"@; c #9E98AC",
+"#; c #B6AFC3",
+"$; c #B3ABBF",
+"%; c #B2ACC0",
+"&; c #BFB8CC",
+"*; c #C1BBCE",
+"=; c #C0B9CC",
+"-; c #C1BACD",
+";; c #B4ADC0",
+">; c #C3BDCF",
+",; c #BFB8CB",
+"'; c #C0BACC",
+"); c #A7A1B4",
+"!; c #B6AFC2",
+"~; c #B5AEC1",
+"{; c #C0BACD",
+"]; c #C4BED0",
+"^; c #B1ABBE",
+"/; c #BDB6C9",
+"(; c #AFA9BC",
+"_; c #A6A0B3",
+":; c #BCB6C9",
+"<; c #ABA5B8",
+"[; c #B7AFC3",
+"}; c #B6AEC2",
+"|; c #403F41",
+"1; c #8D8699",
+"2; c #B1AAC0",
+"3; c #B2A8BD",
+"4; c #A8B1B8",
+"5; c #688775",
+"6; c #A8B1A4",
+"7; c #EEEAEE",
+"8; c #ADBC9B",
+"9; c #94A852",
+"0; c #95AA6F",
+"a; c #669164",
+"b; c #73986F",
+"c; c #A0B37A",
+"d; c #BBC47B",
+"e; c #94A875",
+"f; c #61886D",
+"g; c #457765",
+"h; c #427762",
+"i; c #598864",
+"j; c #7A9A5F",
+"k; c #507A62",
+"l; c #3C7368",
+"m; c #759D71",
+"n; c #5D896A",
+"o; c #517F5A",
+"p; c #779A61",
+"q; c #7B9E68",
+"r; c #648E62",
+"s; c #4C7D67",
+"t; c #628866",
+"u; c #648659",
+"v; c #567B5A",
+"w; c #A2B275",
+"x; c #9DB37C",
+"y; c #95B17B",
+"z; c #799B74",
+"A; c #50805F",
+"B; c #4F7D5D",
+"C; c #648B65",
+"D; c #81A060",
+"E; c #467861",
+"F; c #397069",
+"G; c #87A778",
+"H; c #8DAD7B",
+"I; c #6E9772",
+"J; c #5D886E",
+"K; c #729777",
+"L; c #8BAA79",
+"M; c #7DA377",
+"N; c #B1C5AE",
+"O; c #E9E5EC",
+"P; c #ECE9EF",
+"Q; c #E1E6D7",
+"R; c #ACBD94",
+"S; c #97AD6B",
+"T; c #78975A",
+"U; c #4C8065",
+"V; c #6A946B",
+"W; c #7CA064",
+"X; c #84A164",
+"Y; c #A8B979",
+"Z; c #B0C099",
+"`; c #B4C4B9",
+" > c #C7BFCF",
+".> c #9F99AD",
+"+> c #A29AAE",
+"@> c #B8B2C5",
+"#> c #B5AFC2",
+"$> c #C0B9CD",
+"%> c #AEA8BB",
+"&> c #C4BDD0",
+"*> c #AFA9BB",
+"=> c #BEB8CB",
+"-> c #BBB4C7",
+";> c #B4AEC1",
+">> c #B0AABD",
+",> c #B3ADC0",
+"'> c #BFB9CB",
+")> c #BCB6C8",
+"!> c #ADA6B9",
+"~> c #B9B2C5",
+"{> c #C3BCCF",
+"]> c #B0A9BC",
+"^> c #B7B1C3",
+"/> c #C2BBCE",
+"(> c #B4AEC0",
+"_> c #C1BACC",
+":> c #ABA5B7",
+"<> c #BDB7C9",
+"[> c #B8B1C4",
+"}> c #BCB4C8",
+"|> c #958EA2",
+"1> c #B3ABC2",
+"2> c #B0A7BC",
+"3> c #A9A9B5",
+"4> c #B2B4BF",
+"5> c #CEC6D4",
+"6> c #D2CBD8",
+"7> c #AABB97",
+"8> c #809942",
+"9> c #BBC479",
+"0> c #93AF7C",
+"a> c #648E6B",
+"b> c #638E6F",
+"c> c #99B081",
+"d> c #C7CD85",
+"e> c #B3BC7B",
+"f> c #899F73",
+"g> c #62886C",
+"h> c #588669",
+"i> c #5C8A6B",
+"j> c #4E7C67",
+"k> c #3D7060",
+"l> c #658C6A",
+"m> c #5D8A69",
+"n> c #4C7F66",
+"o> c #6D956B",
+"p> c #759B65",
+"q> c #578464",
+"r> c #497B67",
+"s> c #5F875D",
+"t> c #51775A",
+"u> c #6D8B6E",
+"v> c #9AB586",
+"w> c #83A47D",
+"x> c #A1B679",
+"y> c #708F6A",
+"z> c #46795D",
+"A> c #5B895D",
+"B> c #7C9C68",
+"C> c #688C65",
+"D> c #396F61",
+"E> c #6A8F73",
+"F> c #95B279",
+"G> c #71966D",
+"H> c #487A62",
+"I> c #6F9473",
+"J> c #95AF7E",
+"K> c #88A775",
+"L> c #759D74",
+"M> c #B4C6B1",
+"N> c #FAFBFB",
+"O> c #BDC8AF",
+"P> c #88A26B",
+"Q> c #7D9D54",
+"R> c #7F9E61",
+"S> c #60886C",
+"T> c #658E76",
+"U> c #8CAB7A",
+"V> c #8AAA79",
+"W> c #A8B97C",
+"X> c #A2B36D",
+"Y> c #5F8963",
+"Z> c #5A886F",
+"`> c #97B18B",
+" , c #BBC8AE",
+"., c #DBDCDA",
+"+, c #C8C0D0",
+"@, c #A9A2B6",
+"#, c #B4ACC0",
+"$, c #C7C1D2",
+"%, c #BCB4C7",
+"&, c #C6BFD1",
+"*, c #BAB4C6",
+"=, c #C4BDCF",
+"-, c #BEB8CA",
+";, c #B3AEBF",
+">, c #C5BFD1",
+",, c #B7B2C4",
+"', c #C1BBCD",
+"), c #B9B3C5",
+"!, c #BAB5C7",
+"~, c #BAB4C7",
+"{, c #C3BDCE",
+"], c #BDB7CA",
+"^, c #C2BCCD",
+"/, c #BFB9CA",
+"(, c #C8C1D3",
+"_, c #B8B2C4",
+":, c #BBB5C7",
+"<, c #C5BFD0",
+"[, c #B7B2C3",
+"}, c #C6C0D2",
+"|, c #B9B4C6",
+"1, c #C6C1D2",
+"2, c #C4BECF",
+"3, c #C1BBCC",
+"4, c #BEB7C9",
+"5, c #B2ACBF",
+"6, c #BBB6C8",
+"7, c #424143",
+"8, c #514C59",
+"9, c #A59BB2",
+"0, c #A299B0",
+"a, c #CFC6D3",
+"b, c #B7C4A9",
+"c, c #7E984B",
+"d, c #B3BD71",
+"e, c #BAC787",
+"f, c #8BA56F",
+"g, c #538263",
+"h, c #5F8A6D",
+"i, c #85A174",
+"j, c #A2B37B",
+"k, c #ACBB7A",
+"l, c #A6B76A",
+"m, c #A1B163",
+"n, c #789567",
+"o, c #497B68",
+"p, c #2C665B",
+"q, c #4A7661",
+"r, c #638968",
+"s, c #568365",
+"t, c #689167",
+"u, c #6D935E",
+"v, c #5A8667",
+"w, c #4C7D6A",
+"x, c #4D7B5E",
+"y, c #78946E",
+"z, c #9EB27A",
+"A, c #709975",
+"B, c #769E81",
+"C, c #A4B97A",
+"D, c #708C61",
+"E, c #45745A",
+"F, c #628D5E",
+"G, c #6D9261",
+"H, c #4D7B66",
+"I, c #568271",
+"J, c #7FA278",
+"K, c #628B65",
+"L, c #46745B",
+"M, c #568167",
+"N, c #86A980",
+"O, c #92B07D",
+"P, c #7DA170",
+"Q, c #7CA179",
+"R, c #B2C4B3",
+"S, c #B6C3B1",
+"T, c #709359",
+"U, c #729552",
+"V, c #85A471",
+"W, c #628C6B",
+"X, c #568469",
+"Y, c #7D9F79",
+"Z, c #80A378",
+"`, c #B0BE79",
+" ' c #7D956A",
+".' c #407165",
+"+' c #618C71",
+"@' c #7A9F6C",
+"#' c #7B9D67",
+"$' c #AABE98",
+"%' c #E8EEEB",
+"&' c #EEE9EE",
+"*' c #CCC6D5",
+"=' c #AFA8BB",
+"-' c #ACA6B9",
+";' c #B7B1C4",
+">' c #C3BED0",
+",' c #C9C3D4",
+"'' c #CBC5D6",
+")' c #BDB8C9",
+"!' c #B8B3C4",
+"~' c #C8C3D3",
+"{' c #C8C1D2",
+"]' c #BDB7C8",
+"^' c #CAC4D4",
+"/' c #C7C2D3",
+"(' c #C4BFD0",
+"_' c #C0BBCC",
+":' c #BFBACB",
+"<' c #C0BACA",
+"[' c #CAC4D5",
+"}' c #C0BACB",
+"|' c #BAB4C5",
+"1' c #C1BCCD",
+"2' c #CAC3D4",
+"3' c #434244",
+"4' c #8C8699",
+"5' c #E0E4E3",
+"6' c #93A876",
+"7' c #7E9D4C",
+"8' c #A0B474",
+"9' c #B1BF7E",
+"0' c #809E6D",
+"a' c #53805D",
+"b' c #3B7261",
+"c' c #447865",
+"d' c #6F956E",
+"e' c #93AC75",
+"f' c #AFB868",
+"g' c #B0B960",
+"h' c #819E6B",
+"i' c #61886E",
+"j' c #4F7B64",
+"k' c #5C8365",
+"l' c #628B6A",
+"m' c #5E8961",
+"n' c #67905E",
+"o' c #588568",
+"p' c #396E5F",
+"q' c #5C7F63",
+"r' c #B5C183",
+"s' c #91A772",
+"t' c #5A8868",
+"u' c #6C987F",
+"v' c #90AB76",
+"w' c #8B9E5F",
+"x' c #4E7961",
+"y' c #548264",
+"z' c #4A795D",
+"A' c #447663",
+"B' c #699473",
+"C' c #608C66",
+"D' c #43765D",
+"E' c #5B8268",
+"F' c #8DA776",
+"G' c #90AF7E",
+"H' c #759D7A",
+"I' c #749A74",
+"J' c #9AB287",
+"K' c #8CA596",
+"L' c #5E8666",
+"M' c #699254",
+"N' c #84A472",
+"O' c #7E9D6C",
+"P' c #5C8765",
+"Q' c #5E8A69",
+"R' c #73986B",
+"S' c #6E9669",
+"T' c #88A56B",
+"U' c #A0B46B",
+"V' c #4C7865",
+"W' c #21625D",
+"X' c #658F68",
+"Y' c #779C73",
+"Z' c #689067",
+"`' c #659061",
+" ) c #92AC89",
+".) c #CAD3BA",
+"+) c #E6EAE4",
+"@) c #E6E4EC",
+"#) c #CFC8D5",
+"$) c #C2BBCD",
+"%) c #B3ACBF",
+"&) c #C0B9CB",
+"*) c #B5AFC1",
+"=) c #C7C1D3",
+"-) c #C8C2D4",
+";) c #CBC4D5",
+">) c #CBC5D5",
+",) c #C0BBCB",
+"') c #CCC7D7",
+")) c #BEBACA",
+"!) c #CBC6D6",
+"~) c #C8C3D4",
+"{) c #BDB8C8",
+"]) c #C9C4D4",
+"^) c #BDB9C9",
+"/) c #CBC6D5",
+"() c #BFBACA",
+"_) c #C6C1D1",
+":) c #BEB9C9",
+"<) c #C8C2D2",
+"[) c #C1BCCC",
+"}) c #C5C0D0",
+"|) c #CCC6D6",
+"1) c #C3BDCD",
+"2) c #CEC9D8",
+"3) c #CDC8D7",
+"4) c #CFCAD9",
+"5) c #C4BFCF",
+"6) c #CEC8D8",
+"7) c #C5C0D1",
+"8) c #C7C2D2",
+"9) c #C5BED1",
+"0) c #CDC9D7",
+"a) c #9F97AE",
+"b) c #E5DEE7",
+"c) c #BFCCAC",
+"d) c #7E9B4B",
+"e) c #81A05B",
+"f) c #8DAA77",
+"g) c #A8B774",
+"h) c #96A86C",
+"i) c #58816C",
+"j) c #286761",
+"k) c #3E7364",
+"l) c #68926E",
+"m) c #709469",
+"n) c #79986C",
+"o) c #91A86C",
+"p) c #A9BA6E",
+"q) c #7B986A",
+"r) c #517D64",
+"s) c #628D6B",
+"t) c #5D8861",
+"u) c #5C8861",
+"v) c #32675E",
+"w) c #859D73",
+"x) c #ACBF7F",
+"y) c #658F6D",
+"z) c #4D7F6A",
+"A) c #65937B",
+"B) c #86A472",
+"C) c #94A862",
+"D) c #507C69",
+"E) c #417666",
+"F) c #507C62",
+"G) c #517D60",
+"H) c #4F8160",
+"I) c #4F7F64",
+"J) c #749975",
+"K) c #94B081",
+"L) c #96B180",
+"M) c #7DA072",
+"N) c #5F8C6C",
+"O) c #77986F",
+"P) c #A7B889",
+"Q) c #678B7B",
+"R) c #4E7D5D",
+"S) c #779C65",
+"T) c #7FA071",
+"U) c #7E9D6B",
+"V) c #608A66",
+"W) c #578463",
+"X) c #5C8860",
+"Y) c #6F9668",
+"Z) c #91AB6D",
+"`) c #91AA68",
+" ! c #4A7864",
+".! c #2A655C",
+"+! c #497B5E",
+"@! c #598764",
+"#! c #618D6D",
+"$! c #729972",
+"%! c #749A64",
+"&! c #7E9F66",
+"*! c #9FB487",
+"=! c #BBC8A3",
+"-! c #D4DCC0",
+";! c #F2F1EB",
+">! c #C5C1D0",
+",! c #C6C0D1",
+"'! c #BAB5C6",
+")! c #C5BFCF",
+"!! c #CEC9D9",
+"~! c #C3BFCE",
+"{! c #CDC7D7",
+"]! c #C4BECE",
+"^! c #C3BECE",
+"/! c #C7C2D1",
+"(! c #C4BFCE",
+"_! c #CFCBDA",
+":! c #CAC5D4",
+"<! c #C6C1D0",
+"[! c #C4C0CF",
+"}! c #D1CCDB",
+"|! c #CCC7D6",
+"1! c #CFC9D8",
+"2! c #C6C0D0",
+"3! c #D0CBDA",
+"4! c #C8C4D3",
+"5! c #C9C4D3",
+"6! c #C8C3D2",
+"7! c #D0CCDA",
+"8! c #C6C2D1",
+"9! c #D2CDDB",
+"0! c #C5C0CF",
+"a! c #918A9E",
+"b! c #D5CFDC",
+"c! c #C5BECD",
+"d! c #BAB2C3",
+"e! c #C5BDCE",
+"f! c #BAB2C5",
+"g! c #B0A7BB",
+"h! c #B9B0C4",
+"i! c #AEA5BB",
+"j! c #A59CB2",
+"k! c #B3A9BE",
+"l! c #CECFD2",
+"m! c #ADBA79",
+"n! c #839C46",
+"o! c #6F9766",
+"p! c #83A071",
+"q! c #AAB778",
+"r! c #A7B777",
+"s! c #688A70",
+"t! c #407366",
+"u! c #417863",
+"v! c #497B63",
+"w! c #538369",
+"x! c #608B6B",
+"y! c #799666",
+"z! c #7D9967",
+"A! c #4C775F",
+"B! c #5A8360",
+"C! c #6F9562",
+"D! c #588462",
+"E! c #2E685F",
+"F! c #4B7567",
+"G! c #A1B57A",
+"H! c #8AA76F",
+"I! c #568668",
+"J! c #477C68",
+"K! c #5C8B6F",
+"L! c #7C9E72",
+"M! c #99AC62",
+"N! c #578067",
+"O! c #326E68",
+"P! c #567E5D",
+"Q! c #557E60",
+"R! c #6F9374",
+"S! c #97B484",
+"T! c #95B17D",
+"U! c #82A474",
+"V! c #5E8C6A",
+"W! c #558364",
+"X! c #9AAF88",
+"Y! c #628878",
+"Z! c #5A8862",
+"`! c #749A6D",
+" ~ c #7DA06E",
+".~ c #548368",
+"+~ c #507E62",
+"@~ c #54825F",
+"#~ c #68926A",
+"$~ c #82A16A",
+"%~ c #7C9F6B",
+"&~ c #4B7B64",
+"*~ c #27635C",
+"=~ c #2C695F",
+"-~ c #769C69",
+";~ c #81A575",
+">~ c #86A877",
+",~ c #789D68",
+"'~ c #6F9660",
+")~ c #769B64",
+"!~ c #87A571",
+"~~ c #B9C5A2",
+"{~ c #F0F4EA",
+"]~ c #DFDAE2",
+"^~ c #BCB6C7",
+"/~ c #C0BCCC",
+"(~ c #CCC8D7",
+"_~ c #D2CEDC",
+":~ c #D3CFDD",
+"<~ c #D3CEDC",
+"[~ c #D4D0DD",
+"}~ c #CFCBD9",
+"|~ c #C8C4D2",
+"1~ c #D5D1DE",
+"2~ c #CAC5D3",
+"3~ c #D6D2DE",
+"4~ c #D0CBD9",
+"5~ c #D1CDDA",
+"6~ c #CEC9D7",
+"7~ c #D6D2DF",
+"8~ c #CECAD8",
+"9~ c #C2BDCE",
+"0~ c #D0CCD9",
+"a~ c #5A5663",
+"b~ c #9790A5",
+"c~ c #C1BFCC",
+"d~ c #D8E1CF",
+"e~ c #C6D1BA",
+"f~ c #D4DBC0",
+"g~ c #E2E3C0",
+"h~ c #D4D6BA",
+"i~ c #CFD2B6",
+"j~ c #D9D9C9",
+"k~ c #D8D7CF",
+"l~ c #D3D1CA",
+"m~ c #D1CFCF",
+"n~ c #C6C3C7",
+"o~ c #DBD7D2",
+"p~ c #BAC798",
+"q~ c #82A052",
+"r~ c #7B9D5F",
+"s~ c #648F65",
+"t~ c #648D67",
+"u~ c #8DA46F",
+"v~ c #AFBB71",
+"w~ c #93A769",
+"x~ c #597F65",
+"y~ c #437566",
+"z~ c #447B6A",
+"A~ c #487C67",
+"B~ c #407561",
+"C~ c #417662",
+"D~ c #44735B",
+"E~ c #608961",
+"F~ c #558363",
+"G~ c #467561",
+"H~ c #719170",
+"I~ c #9CB57F",
+"J~ c #7BA074",
+"K~ c #578369",
+"L~ c #41745F",
+"M~ c #57865E",
+"N~ c #70966A",
+"O~ c #A5B663",
+"P~ c #5E8062",
+"Q~ c #105A5D",
+"R~ c #417162",
+"S~ c #6F916D",
+"T~ c #8CA572",
+"U~ c #93AC76",
+"V~ c #9BB382",
+"W~ c #8FAA72",
+"X~ c #5F8C63",
+"Y~ c #628A67",
+"Z~ c #9BB57F",
+"`~ c #7C9D84",
+" { c #52816F",
+".{ c #568464",
+"+{ c #608C69",
+"@{ c #759A72",
+"#{ c #8AA96E",
+"${ c #507D67",
+"%{ c #407564",
+"&{ c #6A9360",
+"*{ c #5B875E",
+"={ c #4C7B5D",
+"-{ c #4A7A62",
+";{ c #52836F",
+">{ c #5F8972",
+",{ c #567E64",
+"'{ c #4E7B5C",
+"){ c #52805F",
+"!{ c #508064",
+"~{ c #608B67",
+"{{ c #5A8765",
+"]{ c #56856B",
+"^{ c #648E71",
+"/{ c #67926C",
+"({ c #6C9569",
+"_{ c #A5BA95",
+":{ c #DBDBD4",
+"<{ c #B8B2C2",
+"[{ c #C5C1D1",
+"}{ c #CECAD9",
+"|{ c #D1CCDA",
+"1{ c #D3D0DD",
+"2{ c #D7D2DF",
+"3{ c #C8C4D1",
+"4{ c #D8D4E1",
+"5{ c #CAC7D4",
+"6{ c #D7D3E0",
+"7{ c #D2CEDB",
+"8{ c #D3CFDC",
+"9{ c #D3CEDB",
+"0{ c #D8D4E0",
+"a{ c #DAD6E2",
+"b{ c #CFCBD8",
+"c{ c #D7D4E0",
+"d{ c #D0CDDA",
+"e{ c #D5D2DE",
+"f{ c #D1CEDB",
+"g{ c #C9C4D2",
+"h{ c #C2BDCD",
+"i{ c #BFBBC9",
+"j{ c #A3B89B",
+"k{ c #6C9154",
+"l{ c #71935B",
+"m{ c #8CA46B",
+"n{ c #9EB26B",
+"o{ c #9EB368",
+"p{ c #A9B978",
+"q{ c #B4C087",
+"r{ c #BBC589",
+"s{ c #C2CB94",
+"t{ c #BBC693",
+"u{ c #B1BD87",
+"v{ c #ADBC81",
+"w{ c #9BB274",
+"x{ c #9EB26F",
+"y{ c #9EB16D",
+"z{ c #7F9E70",
+"A{ c #598872",
+"B{ c #6E9069",
+"C{ c #96A761",
+"D{ c #A3B262",
+"E{ c #8EA468",
+"F{ c #78936F",
+"G{ c #70926C",
+"H{ c #688E6A",
+"I{ c #507B66",
+"J{ c #4E7B65",
+"K{ c #3F6D5B",
+"L{ c #386A59",
+"M{ c #3E7461",
+"N{ c #577E5F",
+"O{ c #87A26F",
+"P{ c #89AB83",
+"Q{ c #84A878",
+"R{ c #598261",
+"S{ c #336756",
+"T{ c #58855F",
+"U{ c #659068",
+"V{ c #A1B26E",
+"W{ c #678267",
+"X{ c #045353",
+"Y{ c #527B66",
+"Z{ c #84A57B",
+"`{ c #86A672",
+" ] c #87A671",
+".] c #739767",
+"+] c #457965",
+"@] c #58826A",
+"#] c #809E6C",
+"$] c #8DAD84",
+"%] c #67907E",
+"&] c #3B7466",
+"*] c #4B7C62",
+"=] c #548161",
+"-] c #5F8B69",
+";] c #719465",
+">] c #37675A",
+",] c #29635B",
+"'] c #70955F",
+")] c #537F5F",
+"!] c #336A5D",
+"~] c #42725F",
+"{] c #628B6F",
+"]] c #87A97E",
+"^] c #98AE79",
+"/] c #809A71",
+"(] c #688A6A",
+"_] c #618668",
+":] c #6D8F6B",
+"<] c #77956C",
+"[] c #819B6F",
+"}] c #87A070",
+"|] c #8FAA7C",
+"1] c #80A276",
+"2] c #7B9C69",
+"3] c #A4B687",
+"4] c #E9EBDC",
+"5] c #F6F2F4",
+"6] c #D4CFDC",
+"7] c #D4D1DD",
+"8] c #D9D5E1",
+"9] c #D1CDD9",
+"0] c #DBD7E3",
+"a] c #D1CEDA",
+"b] c #DDD9E4",
+"c] c #CFCCD8",
+"d] c #D7D3DF",
+"e] c #D5D1DD",
+"f] c #DEDAE5",
+"g] c #D2CFDB",
+"h] c #D0CDD9",
+"i] c #DCD9E4",
+"j] c #D6D3DF",
+"k] c #DBD8E3",
+"l] c #D8D3E0",
+"m] c #DCD8E3",
+"n] c #C2BBCF",
+"o] c #CFCCD9",
+"p] c #585360",
+"q] c #D6DFD1",
+"r] c #92AA75",
+"s] c #688F52",
+"t] c #4B7960",
+"u] c #598168",
+"v] c #7C9F6D",
+"w] c #85A465",
+"x] c #8BA668",
+"y] c #94AC6B",
+"z] c #95AD6C",
+"A] c #94AB6A",
+"B] c #89A363",
+"C] c #98AE6C",
+"D] c #A9BB7E",
+"E] c #B4C186",
+"F] c #BBC78B",
+"G] c #B8C68A",
+"H] c #8CA780",
+"I] c #698F6F",
+"J] c #688E64",
+"K] c #769865",
+"L] c #97AB66",
+"M] c #B5BE66",
+"N] c #98AE6D",
+"O] c #73976D",
+"P] c #739368",
+"Q] c #7D9B6B",
+"R] c #577C62",
+"S] c #316558",
+"T] c #2F6A5E",
+"U] c #5D845F",
+"V] c #7F9E64",
+"W] c #789E78",
+"X] c #91AF73",
+"Y] c #65895F",
+"Z] c #366B56",
+"`] c #5E8960",
+" ^ c #699367",
+".^ c #9CB071",
+"+^ c #67856E",
+"@^ c #24625C",
+"#^ c #618A65",
+"$^ c #6B956C",
+"%^ c #709767",
+"&^ c #759962",
+"*^ c #658F60",
+"=^ c #4F7E62",
+"-^ c #487A6B",
+";^ c #6F9570",
+">^ c #87A66C",
+",^ c #85A582",
+"'^ c #527D71",
+")^ c #2F685A",
+"!^ c #417762",
+"~^ c #4D7F64",
+"{^ c #49795E",
+"]^ c #46745F",
+"^^ c #4E7B64",
+"/^ c #6D956A",
+"(^ c #4E7E6B",
+"_^ c #336D63",
+":^ c #658D62",
+"<^ c #74986A",
+"[^ c #6B9675",
+"}^ c #8DAA78",
+"|^ c #9BB57B",
+"1^ c #9BB375",
+"2^ c #A6BA79",
+"3^ c #B1BF7B",
+"4^ c #ABBB79",
+"5^ c #AFC080",
+"6^ c #94AF77",
+"7^ c #86A574",
+"8^ c #809E5F",
+"9^ c #AFBE8A",
+"0^ c #F2F5E6",
+"a^ c #DBD6E0",
+"b^ c #CDC8D8",
+"c^ c #CBC8D5",
+"d^ c #D3CFDB",
+"e^ c #D8D5E1",
+"f^ c #DAD7E3",
+"g^ c #DDDAE4",
+"h^ c #DDDAE5",
+"i^ c #D9D6E1",
+"j^ c #D3D0DB",
+"k^ c #DBD7E2",
+"l^ c #D6D3DE",
+"m^ c #DAD6E1",
+"n^ c #DAD7E2",
+"o^ c #D7D4DF",
+"p^ c #D4D1DC",
+"q^ c #DFDCE6",
+"r^ c #D1CDDB",
+"s^ c #D4D1DE",
+"t^ c #D2CFDD",
+"u^ c #CFC9D9",
+"v^ c #5A5563",
+"w^ c #948DA1",
+"x^ c #E1DCE5",
+"y^ c #E2E2DA",
+"z^ c #A8B978",
+"A^ c #557E54",
+"B^ c #386F60",
+"C^ c #568361",
+"D^ c #6F9670",
+"E^ c #789F79",
+"F^ c #83A47A",
+"G^ c #8EAA78",
+"H^ c #92AC71",
+"I^ c #92AA70",
+"J^ c #7B9B70",
+"K^ c #729974",
+"L^ c #8BAA78",
+"M^ c #9AB37D",
+"N^ c #A6BA82",
+"O^ c #B0C082",
+"P^ c #A9BC83",
+"Q^ c #98B07E",
+"R^ c #7B9C72",
+"S^ c #6A936D",
+"T^ c #668E68",
+"U^ c #6B8F61",
+"V^ c #638A64",
+"W^ c #5C8465",
+"X^ c #678C63",
+"Y^ c #598765",
+"Z^ c #306358",
+"`^ c #2E5D51",
+" / c #779658",
+"./ c #719463",
+"+/ c #55856D",
+"@/ c #9FB474",
+"#/ c #809867",
+"$/ c #3E735A",
+"%/ c #5D8963",
+"&/ c #6C9469",
+"*/ c #8AA66A",
+"=/ c #5C8267",
+"-/ c #447664",
+";/ c #719661",
+">/ c #628C5E",
+",/ c #57855F",
+"'/ c #4B7C59",
+")/ c #42735A",
+"!/ c #427263",
+"~/ c #598974",
+"{/ c #67936A",
+"]/ c #729866",
+"^/ c #739875",
+"// c #4F7D66",
+"(/ c #4D785C",
+"_/ c #588267",
+":/ c #699070",
+"</ c #749673",
+"[/ c #7A9A72",
+"}/ c #93AE7A",
+"|/ c #8DAD83",
+"1/ c #90AE82",
+"2/ c #7C9D75",
+"3/ c #538260",
+"4/ c #5D895D",
+"5/ c #6E9667",
+"6/ c #71986B",
+"7/ c #638E66",
+"8/ c #6C9567",
+"9/ c #769C6A",
+"0/ c #779C6C",
+"a/ c #82A36D",
+"b/ c #89A872",
+"c/ c #84A779",
+"d/ c #7B9F73",
+"e/ c #72986C",
+"f/ c #7BA07A",
+"g/ c #86A77A",
+"h/ c #6E936A",
+"i/ c #5D8956",
+"j/ c #B1BF97",
+"k/ c #F3EDEB",
+"l/ c #D8D5E0",
+"m/ c #DEDAE4",
+"n/ c #DEDCE6",
+"o/ c #D9D5E0",
+"p/ c #DEDBE5",
+"q/ c #DFDBE5",
+"r/ c #E0DDE7",
+"s/ c #DCD9E3",
+"t/ c #DBD7E1",
+"u/ c #DBD8E2",
+"v/ c #4C4B4D",
+"w/ c #8D869A",
+"x/ c #D8CFDB",
+"y/ c #BFC89A",
+"z/ c #79994B",
+"A/ c #769B68",
+"B/ c #6F915E",
+"C/ c #658B62",
+"D/ c #608C6E",
+"E/ c #7DA074",
+"F/ c #94AD72",
+"G/ c #8BA468",
+"H/ c #9AB175",
+"I/ c #94AE7E",
+"J/ c #5A8369",
+"K/ c #517F61",
+"L/ c #799E6D",
+"M/ c #85A778",
+"N/ c #90AC7F",
+"O/ c #99B179",
+"P/ c #A0B680",
+"Q/ c #BAC687",
+"R/ c #B1BD82",
+"S/ c #769776",
+"T/ c #467560",
+"U/ c #4F775B",
+"V/ c #5C8361",
+"W/ c #497A5F",
+"X/ c #3F725B",
+"Y/ c #215952",
+"Z/ c #366253",
+"`/ c #92A559",
+" ( c #738F63",
+".( c #3D7262",
+"+( c #85A476",
+"@( c #88A374",
+"#( c #497861",
+"$( c #487964",
+"%( c #5A8766",
+"&( c #557C5B",
+"*( c #446F57",
+"=( c #497A60",
+"-( c #53825C",
+";( c #54805A",
+">( c #59815F",
+",( c #5F8565",
+"'( c #63856A",
+")( c #759472",
+"!( c #8EA879",
+"~( c #90A673",
+"{( c #8CA775",
+"]( c #84A474",
+"^( c #8CA776",
+"/( c #98AE7D",
+"(( c #A9BE86",
+"_( c #A9BC84",
+":( c #91AA82",
+"<( c #779D86",
+"[( c #88A98C",
+"}( c #92A97B",
+"|( c #638864",
+"1( c #52815C",
+"2( c #5B8860",
+"3( c #598763",
+"4( c #5F8A5F",
+"5( c #5F8A60",
+"6( c #699265",
+"7( c #678F66",
+"8( c #5A8563",
+"9( c #4F816C",
+"0( c #558672",
+"a( c #55846C",
+"b( c #65906A",
+"c( c #527B55",
+"d( c #2C6051",
+"e( c #0C5448",
+"f( c #567B67",
+"g( c #D0D9C7",
+"h( c #F2EEF2",
+"i( c #D5D1DC",
+"j( c #DCD9E5",
+"k( c #D7D3DE",
+"l( c #DFDBE6",
+"m( c #E0DCE6",
+"n( c #E3E0E9",
+"o( c #DFDDE6",
+"p( c #E0DDE6",
+"q( c #E3E1E9",
+"r( c #E2E0E8",
+"s( c #DFDEE5",
+"t( c #E7E6EB",
+"u( c #E3E2E8",
+"v( c #E5E3E9",
+"w( c #EEEDF0",
+"x( c #E6E6EA",
+"y( c #E8E8EB",
+"z( c #F1F1F3",
+"A( c #EBEAEC",
+"B( c #EAE9EC",
+"C( c #EEEEF1",
+"D( c #E6E5EB",
+"E( c #E1DFE6",
+"F( c #E8E7EC",
+"G( c #E5E4EA",
+"H( c #E2E0E6",
+"I( c #E8E7ED",
+"J( c #E7E6EC",
+"K( c #E4E2E9",
+"L( c #E7E5EC",
+"M( c #E2E1E7",
+"N( c #E7E5EB",
+"O( c #E9E7ED",
+"P( c #E6E4EA",
+"Q( c #EBE9EE",
+"R( c #EAE8EE",
+"S( c #E9E8ED",
+"T( c #DFDDE4",
+"U( c #E4E3EA",
+"V( c #E2E0E7",
+"W( c #D9D7DF",
+"X( c #DEDBE4",
+"Y( c #DFDCE5",
+"Z( c #CFCCD7",
+"`( c #C2BECC",
+" _ c #D6D3DD",
+"._ c #CDC5D4",
+"+_ c #B5C5A9",
+"@_ c #6C934F",
+"#_ c #769A5F",
+"$_ c #88A66D",
+"%_ c #839C60",
+"&_ c #668A61",
+"*_ c #6B936F",
+"=_ c #8AA772",
+"-_ c #91AC75",
+";_ c #A6BB7A",
+">_ c #859C6E",
+",_ c #3B6B5F",
+"'_ c #4D7C60",
+")_ c #6F966E",
+"!_ c #7EA281",
+"~_ c #8DAC7B",
+"{_ c #7CA074",
+"]_ c #83A078",
+"^_ c #B8BF82",
+"/_ c #C6CE8A",
+"(_ c #75947A",
+"__ c #336A61",
+":_ c #41725B",
+"<_ c #517D62",
+"[_ c #23625C",
+"}_ c #406F5D",
+"|_ c #99AC63",
+"1_ c #799367",
+"2_ c #42735F",
+"3_ c #92AD79",
+"4_ c #6C8B65",
+"5_ c #2B695F",
+"6_ c #548167",
+"7_ c #48735B",
+"8_ c #3B6D5B",
+"9_ c #598662",
+"0_ c #668B5F",
+"a_ c #849C6F",
+"b_ c #98AC78",
+"c_ c #A4B97F",
+"d_ c #BDCA8B",
+"e_ c #C2CC8D",
+"f_ c #B9C47F",
+"g_ c #AFBB78",
+"h_ c #94AD7C",
+"i_ c #9BB37E",
+"j_ c #B3C386",
+"k_ c #B0C28A",
+"l_ c #9CB681",
+"m_ c #80A075",
+"n_ c #668D71",
+"o_ c #598879",
+"p_ c #70997E",
+"q_ c #98AF77",
+"r_ c #77976B",
+"s_ c #3F7260",
+"t_ c #3E7060",
+"u_ c #3E745F",
+"v_ c #4C7E62",
+"w_ c #4E805F",
+"x_ c #507F5E",
+"y_ c #517E61",
+"z_ c #3C7162",
+"A_ c #3B7062",
+"B_ c #4B7B67",
+"C_ c #4C7C66",
+"D_ c #538168",
+"E_ c #56846C",
+"F_ c #56855F",
+"G_ c #558656",
+"H_ c #67856F",
+"I_ c #6E857D",
+"J_ c #356054",
+"K_ c #0A5446",
+"L_ c #8EA598",
+"M_ c #F9F5F7",
+"N_ c #D5D2DC",
+"O_ c #D7D4DE",
+"P_ c #DDDBE4",
+"Q_ c #E2DFE7",
+"R_ c #E8E6EC",
+"S_ c #E2E2E8",
+"T_ c #E8E7EB",
+"U_ c #F2F1F2",
+"V_ c #E7E5EA",
+"W_ c #E1DEE6",
+"X_ c #D4CEDE",
+"Y_ c #D5CEDF",
+"Z_ c #C6BED4",
+"`_ c #BFB5CF",
+" : c #B9ACCA",
+".: c #AFA0C2",
+"+: c #A696BB",
+"@: c #A290B8",
+"#: c #9883AF",
+"$: c #957FAD",
+"%: c #947EAB",
+"&: c #9179AA",
+"*: c #8970A4",
+"=: c #896FA2",
+"-: c #8A70A4",
+";: c #886EA1",
+">: c #8A70A3",
+",: c #8A71A4",
+"': c #8970A3",
+"): c #896FA3",
+"!: c #8970A2",
+"~: c #8B71A5",
+"{: c #886FA2",
+"]: c #886FA3",
+"^: c #866DA0",
+"/: c #886EA3",
+"(: c #856B9F",
+"_: c #836A9D",
+":: c #866CA0",
+"<: c #80669A",
+"[: c #806699",
+"}: c #82689D",
+"|: c #7E6498",
+"1: c #876EA0",
+"2: c #68567B",
+"3: c #504C59",
+"4: c #BFB6C8",
+"5: c #789A59",
+"6: c #77984A",
+"7: c #7A9E74",
+"8: c #8CA772",
+"9: c #9AAA60",
+"0: c #5D805A",
+"a: c #4D7E69",
+"b: c #749B72",
+"c: c #82A369",
+"d: c #9AAF63",
+"e: c #C1C864",
+"f: c #7C966E",
+"g: c #2E665E",
+"h: c #477862",
+"i: c #6F9872",
+"j: c #7FA47A",
+"k: c #88A87D",
+"l: c #749978",
+"m: c #5C8973",
+"n: c #8AA47D",
+"o: c #C8D08A",
+"p: c #92AB83",
+"q: c #447266",
+"r: c #2D6358",
+"s: c #396F5E",
+"t: c #235E57",
+"u: c #47725F",
+"v: c #6F9270",
+"w: c #4A7D6A",
+"x: c #618E6A",
+"y: c #95AA72",
+"z: c #B1B862",
+"A: c #557D67",
+"B: c #48786B",
+"C: c #678B5D",
+"D: c #7C9A69",
+"E: c #A1B374",
+"F: c #A7B77A",
+"G: c #A3B886",
+"H: c #9AB284",
+"I: c #97B180",
+"J: c #ADBE84",
+"K: c #BBC683",
+"L: c #93AB7A",
+"M: c #679273",
+"N: c #7B9F77",
+"O: c #9CB37C",
+"P: c #A4BA81",
+"Q: c #86A67A",
+"R: c #58876C",
+"S: c #497D68",
+"T: c #5D8670",
+"U: c #8DA57B",
+"V: c #AFBC6C",
+"W: c #8BA15F",
+"X: c #6A9163",
+"Y: c #82A06B",
+"Z: c #73936E",
+"`: c #5B8569",
+" < c #5F8568",
+".< c #5B8469",
+"+< c #578468",
+"@< c #4C7D66",
+"#< c #497966",
+"$< c #648665",
+"%< c #859E55",
+"&< c #819F59",
+"*< c #698E69",
+"=< c #4C7D54",
+"-< c #628A52",
+";< c #9AAE95",
+">< c #E1E5E7",
+",< c #91AA99",
+"'< c #085138",
+")< c #5F766B",
+"!< c #F5F5FA",
+"~< c #DFDDE7",
+"{< c #E1DFE7",
+"]< c #E2DFE6",
+"^< c #EDECEF",
+"/< c #E5E4E8",
+"(< c #DBD8E4",
+"_< c #D0CADA",
+":< c #CAC2D7",
+"<< c #BDB1CD",
+"[< c #AA9ABE",
+"}< c #A08CB5",
+"|< c #947DAC",
+"1< c #8B72A5",
+"2< c #856A9F",
+"3< c #81669D",
+"4< c #7C5F98",
+"5< c #775894",
+"6< c #725190",
+"7< c #704E8E",
+"8< c #6F4D8E",
+"9< c #6C488B",
+"0< c #7D609A",
+"a< c #876BA2",
+"b< c #82669E",
+"c< c #83679F",
+"d< c #80649D",
+"e< c #7F629C",
+"f< c #7F639C",
+"g< c #80629C",
+"h< c #80639C",
+"i< c #81649D",
+"j< c #81659E",
+"k< c #81659D",
+"l< c #82659E",
+"m< c #8569A1",
+"n< c #745392",
+"o< c #653A87",
+"p< c #BBB3C6",
+"q< c #D2D5CF",
+"r< c #8DA668",
+"s< c #6F9349",
+"t< c #739B75",
+"u< c #9FB36E",
+"v< c #A6AF5A",
+"w< c #899F6B",
+"x< c #82A070",
+"y< c #669065",
+"z< c #6E935D",
+"A< c #B0B852",
+"B< c #CECB60",
+"C< c #628367",
+"D< c #346C5D",
+"E< c #5A8764",
+"F< c #6E9773",
+"G< c #97B383",
+"H< c #A5BB81",
+"I< c #638D72",
+"J< c #497E6E",
+"K< c #86A579",
+"L< c #B6C686",
+"M< c #9EB485",
+"N< c #56806A",
+"O< c #2A6055",
+"P< c #295B52",
+"Q< c #547C5C",
+"R< c #88A76D",
+"S< c #6F9572",
+"T< c #477B69",
+"U< c #578767",
+"V< c #799965",
+"W< c #B7B953",
+"X< c #A8B268",
+"Y< c #6B906E",
+"Z< c #7A9B6E",
+"`< c #9EB685",
+" [ c #ABBC89",
+".[ c #8EA981",
+"+[ c #779F7E",
+"@[ c #83A67C",
+"#[ c #8FA975",
+"$[ c #679071",
+"%[ c #7B9D76",
+"&[ c #9EB47D",
+"*[ c #8CA979",
+"=[ c #5B856D",
+"-[ c #3B7164",
+";[ c #4F7C6B",
+">[ c #8BA37E",
+",[ c #AFBB7F",
+"'[ c #A5B76F",
+")[ c #8FA85F",
+"![ c #749467",
+"~[ c #678D67",
+"{[ c #759866",
+"][ c #7C9E6F",
+"^[ c #80A16E",
+"/[ c #78996B",
+"([ c #7B996A",
+"_[ c #7E9D6A",
+":[ c #749A66",
+"<[ c #80A164",
+"[[ c #8AA25E",
+"}[ c #779253",
+"|[ c #597F5C",
+"1[ c #226149",
+"2[ c #437250",
+"3[ c #B7C3AC",
+"4[ c #F1EEF2",
+"5[ c #E5E1E8",
+"6[ c #E9ECED",
+"7[ c #587866",
+"8[ c #4E715E",
+"9[ c #DFE2E8",
+"0[ c #E4E1EA",
+"a[ c #ECEAEE",
+"b[ c #F0EFF1",
+"c[ c #DCD8E4",
+"d[ c #D1CADC",
+"e[ c #AE9FC1",
+"f[ c #9C87B3",
+"g[ c #83689E",
+"h[ c #7D6099",
+"i[ c #775995",
+"j[ c #714F8F",
+"k[ c #7A5C97",
+"l[ c #886EA4",
+"m[ c #937AAC",
+"n[ c #9882B1",
+"o[ c #9F8AB6",
+"p[ c #A18DB8",
+"q[ c #A08CB7",
+"r[ c #A693BC",
+"s[ c #A795BD",
+"t[ c #A794BD",
+"u[ c #A794BC",
+"v[ c #A896BE",
+"w[ c #AA99C0",
+"x[ c #B3A4C7",
+"y[ c #8C72A6",
+"z[ c #643C84",
+"A[ c #D7D4D5",
+"B[ c #A3B275",
+"C[ c #6D9149",
+"D[ c #6D9264",
+"E[ c #88A56F",
+"F[ c #A4B46C",
+"G[ c #B9BF70",
+"H[ c #BCC67D",
+"I[ c #8BA479",
+"J[ c #648E6E",
+"K[ c #7F9E68",
+"L[ c #B2B960",
+"M[ c #899F62",
+"N[ c #477860",
+"O[ c #437560",
+"P[ c #598669",
+"Q[ c #789C75",
+"R[ c #9DB376",
+"S[ c #8DA873",
+"T[ c #57856D",
+"U[ c #5B886D",
+"V[ c #8FAD7B",
+"W[ c #B2C185",
+"X[ c #A2B37D",
+"Y[ c #497463",
+"Z[ c #1D5853",
+"`[ c #497457",
+" } c #799C68",
+".} c #749A76",
+"+} c #4A7C6A",
+"@} c #477B66",
+"#} c #668D60",
+"$} c #879D59",
+"%} c #93A76C",
+"&} c #81A074",
+"*} c #89A983",
+"=} c #7FA487",
+"-} c #739D7F",
+";} c #6D977C",
+">} c #729A7E",
+",} c #83A884",
+"'} c #94B281",
+")} c #91AC76",
+"!} c #638A6E",
+"~} c #5C896B",
+"{} c #A0B670",
+"]} c #98AE71",
+"^} c #547F65",
+"/} c #25635E",
+"(} c #45746A",
+"_} c #8BA67C",
+":} c #B3C07A",
+"<} c #9AAD6B",
+"[} c #85A35C",
+"}} c #799A61",
+"|} c #548169",
+"1} c #447964",
+"2} c #43765F",
+"3} c #518165",
+"4} c #638F69",
+"5} c #638C67",
+"6} c #608A64",
+"7} c #628D66",
+"8} c #608966",
+"9} c #417252",
+"0} c #286652",
+"a} c #406F5A",
+"b} c #A1B4A4",
+"c} c #FFFEFE",
+"d} c #B9C5BD",
+"e} c #9DB2A6",
+"f} c #E8EBEA",
+"g} c #EBE9ED",
+"h} c #E6E5E9",
+"i} c #E1DEE8",
+"j} c #D0C9DB",
+"k} c #BDB2CD",
+"l} c #A898BD",
+"m} c #957EAD",
+"n} c #82679D",
+"o} c #7B5D97",
+"p} c #765794",
+"q} c #704D8E",
+"r} c #765693",
+"s} c #856AA1",
+"t} c #886DA3",
+"u} c #947DAD",
+"v} c #A08BB7",
+"w} c #A38FB9",
+"x} c #A38FBA",
+"y} c #A592BC",
+"z} c #A08AB7",
+"A} c #9E8AB6",
+"B} c #9F89B6",
+"C} c #9C86B4",
+"D} c #9B85B3",
+"E} c #9B84B3",
+"F} c #9A84B2",
+"G} c #9983B2",
+"H} c #9D87B4",
+"I} c #AA98BF",
+"J} c #D6D0D6",
+"K} c #B6BF80",
+"L} c #7A9845",
+"M} c #5A855C",
+"N} c #648758",
+"O} c #80A171",
+"P} c #8EA86B",
+"Q} c #B1BB6C",
+"R} c #C1C77C",
+"S} c #9BB588",
+"T} c #8FAB81",
+"U} c #8BA677",
+"V} c #5B896C",
+"W} c #386F62",
+"X} c #427662",
+"Y} c #528263",
+"Z} c #709360",
+"`} c #99B06D",
+" | c #779A75",
+".| c #4F816F",
+"+| c #6F9876",
+"@| c #84A57A",
+"#| c #BFC684",
+"$| c #A0B07E",
+"%| c #2E5D58",
+"&| c #2B574C",
+"*| c #658D6A",
+"=| c #6A967D",
+"-| c #5B8970",
+";| c #43735F",
+">| c #4E7B5E",
+",| c #64916F",
+"'| c #789D82",
+")| c #87A381",
+"!| c #84A681",
+"~| c #669073",
+"{| c #5A866C",
+"]| c #6A957A",
+"^| c #799F7C",
+"/| c #88A77A",
+"(| c #99B074",
+"_| c #829F6C",
+":| c #5B8564",
+"<| c #618A60",
+"[| c #709463",
+"}| c #4E7C62",
+"|| c #376D60",
+"1| c #5D866D",
+"2| c #87A679",
+"3| c #8CA86F",
+"4| c #74975C",
+"5| c #618C5D",
+"6| c #628A5D",
+"7| c #5C8462",
+"8| c #5A856D",
+"9| c #658C6F",
+"0| c #55856E",
+"a| c #4C806C",
+"b| c #487C66",
+"c| c #437660",
+"d| c #46775F",
+"e| c #528060",
+"f| c #638B61",
+"g| c #5B865D",
+"h| c #44784C",
+"i| c #477853",
+"j| c #74967C",
+"k| c #CED8D0",
+"l| c #E1DFE8",
+"m| c #E6E5EA",
+"n| c #F7F7F8",
+"o| c #F8F3F6",
+"p| c #DDD5E4",
+"q| c #C3B7D2",
+"r| c #9E8AB4",
+"s| c #876DA1",
+"t| c #765694",
+"u| c #8468A0",
+"v| c #927AAC",
+"w| c #A491BB",
+"x| c #A692BC",
+"y| c #A28EB9",
+"z| c #9F8BB6",
+"A| c #9E88B5",
+"B| c #9983B1",
+"C| c #9881B0",
+"D| c #9780AF",
+"E| c #977FAF",
+"F| c #967FAF",
+"G| c #957EAE",
+"H| c #947CAD",
+"I| c #937BAC",
+"J| c #917AAB",
+"K| c #9179AB",
+"L| c #9781B0",
+"M| c #CEC8D5",
+"N| c #B3C08D",
+"O| c #7C9A46",
+"P| c #658D60",
+"Q| c #4F7C5C",
+"R| c #71996F",
+"S| c #6E9466",
+"T| c #A0AD53",
+"U| c #9CAA60",
+"V| c #729977",
+"W| c #A2B985",
+"X| c #9EB580",
+"Y| c #93AF81",
+"Z| c #8EA97E",
+"`| c #678E74",
+" 1 c #5A8870",
+".1 c #4E7F69",
+"+1 c #42755E",
+"@1 c #84A066",
+"#1 c #9AB076",
+"$1 c #46766C",
+"%1 c #4D7C6A",
+"&1 c #699574",
+"*1 c #7E9F7C",
+"=1 c #C9D189",
+"-1 c #849876",
+";1 c #3C6757",
+">1 c #547F5E",
+",1 c #65906C",
+"'1 c #618C68",
+")1 c #3E715A",
+"!1 c #4D7A65",
+"~1 c #8DAA83",
+"{1 c #A3B984",
+"]1 c #88A577",
+"^1 c #7DA07D",
+"/1 c #527C69",
+"(1 c #376B5F",
+"_1 c #6B9578",
+":1 c #7A9F74",
+"<1 c #82A069",
+"[1 c #9BAE6C",
+"}1 c #77986C",
+"|1 c #4D7858",
+"11 c #396E5D",
+"21 c #6F966D",
+"31 c #86A86E",
+"41 c #6B9264",
+"51 c #4D7B5C",
+"61 c #4A7958",
+"71 c #52825E",
+"81 c #528165",
+"91 c #789772",
+"01 c #9EB381",
+"a1 c #92AE7E",
+"b1 c #8DAB81",
+"c1 c #87A680",
+"d1 c #739477",
+"e1 c #568166",
+"f1 c #4F7F5B",
+"g1 c #5F8958",
+"h1 c #6B914B",
+"i1 c #608C4A",
+"j1 c #699063",
+"k1 c #A4B5A2",
+"l1 c #E9EDEE",
+"m1 c #E8E6EB",
+"n1 c #DAD5E3",
+"o1 c #BDB3CD",
+"p1 c #A492B9",
+"q1 c #8C73A6",
+"r1 c #7A5C96",
+"s1 c #755592",
+"t1 c #795B97",
+"u1 c #896EA4",
+"v1 c #8E75A8",
+"w1 c #9984B2",
+"x1 c #957DAD",
+"y1 c #937CAC",
+"z1 c #9178AA",
+"A1 c #9077A9",
+"B1 c #8F77A9",
+"C1 c #8D74A7",
+"D1 c #8D73A7",
+"E1 c #8C71A5",
+"F1 c #8A6FA4",
+"G1 c #896EA3",
+"H1 c #8970A5",
+"I1 c #8B72A6",
+"J1 c #8F76A9",
+"K1 c #C5BDCC",
+"L1 c #B9C7A7",
+"M1 c #7D9C54",
+"N1 c #7A9B59",
+"O1 c #558262",
+"P1 c #437661",
+"Q1 c #57846C",
+"R1 c #8DA15B",
+"S1 c #A4AF55",
+"T1 c #548163",
+"U1 c #679174",
+"V1 c #85A97B",
+"W1 c #95B084",
+"X1 c #AABD87",
+"Y1 c #98B381",
+"Z1 c #81A67F",
+"`1 c #6D967B",
+" 2 c #4F806C",
+".2 c #628865",
+"+2 c #829F6A",
+"@2 c #4B7663",
+"#2 c #3F7461",
+"$2 c #66916E",
+"%2 c #68947A",
+"&2 c #A6BA83",
+"*2 c #B3BD79",
+"=2 c #719268",
+"-2 c #4F7F5D",
+";2 c #55825B",
+">2 c #4C7B5A",
+",2 c #568165",
+"'2 c #82A07A",
+")2 c #AEC084",
+"!2 c #94AB72",
+"~2 c #6D956D",
+"{2 c #4F7A6B",
+"]2 c #326B62",
+"^2 c #7B9F76",
+"/2 c #86A775",
+"(2 c #8DA86B",
+"_2 c #95AB6E",
+":2 c #4C7967",
+"<2 c #165E5B",
+"[2 c #215F58",
+"}2 c #28645C",
+"|2 c #497C66",
+"12 c #618C6B",
+"22 c #507F64",
+"32 c #42775B",
+"42 c #43725C",
+"52 c #547D61",
+"62 c #5A8665",
+"72 c #5B876B",
+"82 c #87A37A",
+"92 c #88A67D",
+"02 c #8BAA7E",
+"a2 c #B8C585",
+"b2 c #C2CB89",
+"c2 c #ABBB7C",
+"d2 c #91A76F",
+"e2 c #769869",
+"f2 c #779971",
+"g2 c #8EA889",
+"h2 c #BFCECB",
+"i2 c #FCFAFB",
+"j2 c #D9D3E1",
+"k2 c #9C89B3",
+"l2 c #755693",
+"m2 c #735291",
+"n2 c #755593",
+"o2 c #876CA2",
+"p2 c #9078AA",
+"q2 c #A490BA",
+"r2 c #9D88B5",
+"s2 c #9C86B3",
+"t2 c #856BA1",
+"u2 c #856AA0",
+"v2 c #8469A0",
+"w2 c #82659D",
+"x2 c #83689F",
+"y2 c #B4ACBE",
+"z2 c #D9DFDA",
+"A2 c #8CA574",
+"B2 c #759741",
+"C2 c #789B62",
+"D2 c #4B7D68",
+"E2 c #306C65",
+"F2 c #2C6A62",
+"G2 c #5B815F",
+"H2 c #A9B550",
+"I2 c #7C9557",
+"J2 c #4F7C5D",
+"K2 c #5C8866",
+"L2 c #6A9471",
+"M2 c #80A37B",
+"N2 c #82A37A",
+"O2 c #7A9F78",
+"P2 c #95B180",
+"Q2 c #90AC81",
+"R2 c #689174",
+"S2 c #467A65",
+"T2 c #3E715B",
+"U2 c #558061",
+"V2 c #6E956C",
+"W2 c #709977",
+"X2 c #749A78",
+"Y2 c #96AA6D",
+"Z2 c #ACB96D",
+"`2 c #648966",
+" 3 c #3C6D56",
+".3 c #638863",
+"+3 c #9BB182",
+"@3 c #9EB787",
+"#3 c #89A871",
+"$3 c #699067",
+"%3 c #6D956F",
+"&3 c #90AC77",
+"*3 c #588169",
+"=3 c #447760",
+"-3 c #7D9E6C",
+";3 c #96AF6C",
+">3 c #86A169",
+",3 c #60886D",
+"'3 c #457564",
+")3 c #577A66",
+"!3 c #678771",
+"~3 c #62876D",
+"{3 c #527C65",
+"]3 c #487664",
+"^3 c #4D7963",
+"/3 c #598160",
+"(3 c #769362",
+"_3 c #89A570",
+":3 c #5E8969",
+"<3 c #47755E",
+"[3 c #688D6A",
+"}3 c #83A177",
+"|3 c #A9B97A",
+"13 c #9FB372",
+"23 c #9BAF69",
+"33 c #B4BE77",
+"43 c #BDC586",
+"53 c #C3C985",
+"63 c #B3C07C",
+"73 c #CED5B5",
+"83 c #BDAFCE",
+"93 c #6C498B",
+"03 c #795A96",
+"a3 c #8B71A6",
+"b3 c #A591BB",
+"c3 c #8A70A5",
+"d3 c #896FA4",
+"e3 c #84689F",
+"f3 c #7F629B",
+"g3 c #7E619B",
+"h3 c #7E609A",
+"i3 c #7D5F9A",
+"j3 c #7C5F9A",
+"k3 c #7D5F99",
+"l3 c #7C5E99",
+"m3 c #7B5D98",
+"n3 c #7A5B97",
+"o3 c #9A83B2",
+"p3 c #F2F2F7",
+"q3 c #ABBB94",
+"r3 c #648C40",
+"s3 c #739656",
+"t3 c #7E9E5E",
+"u3 c #688C64",
+"v3 c #3B6F66",
+"w3 c #427360",
+"x3 c #749357",
+"y3 c #86A258",
+"z3 c #6A8E5A",
+"A3 c #49775A",
+"B3 c #42725A",
+"C3 c #5D8766",
+"D3 c #779E77",
+"E3 c #5C8871",
+"F3 c #668E70",
+"G3 c #9AB37C",
+"H3 c #ABBF82",
+"I3 c #76987A",
+"J3 c #387065",
+"K3 c #417360",
+"L3 c #5B8567",
+"M3 c #528375",
+"N3 c #8CA37B",
+"O3 c #B8BF76",
+"P3 c #698867",
+"Q3 c #618362",
+"R3 c #A7B679",
+"S3 c #91AC7F",
+"T3 c #7A9D72",
+"U3 c #7C9C67",
+"V3 c #5A896D",
+"W3 c #789C76",
+"X3 c #9CB477",
+"Y3 c #678C65",
+"Z3 c #4B7B60",
+"`3 c #6E956E",
+" 4 c #678A60",
+".4 c #487560",
+"+4 c #528273",
+"@4 c #94AD79",
+"#4 c #B8C372",
+"$4 c #C1C877",
+"%4 c #ACBB74",
+"&4 c #8FA56A",
+"*4 c #8DA36A",
+"=4 c #98AC61",
+"-4 c #99AC57",
+";4 c #8DA55B",
+">4 c #628662",
+",4 c #42735E",
+"'4 c #548060",
+")4 c #A2B36F",
+"!4 c #9DAE6A",
+"~4 c #80A064",
+"{4 c #8CA457",
+"]4 c #99AC61",
+"^4 c #8EAB79",
+"/4 c #94AF79",
+"(4 c #B1BD75",
+"_4 c #C0C585",
+":4 c #CED2A8",
+"<4 c #E3E6D0",
+"[4 c #D2CCDF",
+"}4 c #AA94BD",
+"|4 c #A895BD",
+"14 c #A390BA",
+"24 c #866CA2",
+"34 c #7E619A",
+"44 c #785A96",
+"54 c #785995",
+"64 c #745492",
+"74 c #938DA1",
+"84 c #F0EAED",
+"94 c #C4D0B0",
+"04 c #6E9449",
+"a4 c #648C51",
+"b4 c #6D8F5E",
+"c4 c #8EA358",
+"d4 c #98AA61",
+"e4 c #6B8B61",
+"f4 c #55855B",
+"g4 c #5D8862",
+"h4 c #5F8860",
+"i4 c #61895B",
+"j4 c #437157",
+"k4 c #3F715C",
+"l4 c #628C74",
+"m4 c #427863",
+"n4 c #779C6B",
+"o4 c #94AC7A",
+"p4 c #A3B783",
+"q4 c #769B76",
+"r4 c #24605B",
+"s4 c #386859",
+"t4 c #5C8967",
+"u4 c #538272",
+"v4 c #7E9A74",
+"w4 c #879E69",
+"x4 c #75926C",
+"y4 c #A2B47C",
+"z4 c #A4B87E",
+"A4 c #759964",
+"B4 c #729559",
+"C4 c #709160",
+"D4 c #668D6B",
+"E4 c #8EA771",
+"F4 c #A1B471",
+"G4 c #4D7D62",
+"H4 c #487965",
+"I4 c #35695E",
+"J4 c #58806C",
+"K4 c #8AA77D",
+"L4 c #97B184",
+"M4 c #8BA87A",
+"N4 c #84A268",
+"O4 c #89A466",
+"P4 c #88A363",
+"Q4 c #91A964",
+"R4 c #92A85B",
+"S4 c #85A059",
+"T4 c #587F5B",
+"U4 c #346253",
+"V4 c #45705C",
+"W4 c #6E946B",
+"X4 c #7F9E67",
+"Y4 c #7D9C60",
+"Z4 c #86A268",
+"`4 c #8EA56D",
+" 5 c #99AB65",
+".5 c #9AAF66",
+"+5 c #8BA86C",
+"@5 c #83A36F",
+"#5 c #86A475",
+"$5 c #8CA76E",
+"%5 c #9BB06A",
+"&5 c #B7C084",
+"*5 c #D2D7AD",
+"=5 c #E8ECD4",
+"-5 c #E8E5F0",
+";5 c #C4B6D2",
+">5 c #775794",
+",5 c #725090",
+"'5 c #6E4C8D",
+")5 c #6E4B8D",
+"!5 c #6E4B8C",
+"~5 c #6D4A8C",
+"{5 c #948CA2",
+"]5 c #DBD7E0",
+"^5 c #E3E9DC",
+"/5 c #90A970",
+"(5 c #70954D",
+"_5 c #668F68",
+":5 c #4C795C",
+"<5 c #809860",
+"[5 c #92A85E",
+"}5 c #6D9259",
+"|5 c #608B64",
+"15 c #467865",
+"25 c #678F5B",
+"35 c #507E5D",
+"45 c #517B65",
+"55 c #608768",
+"65 c #548363",
+"75 c #6F976D",
+"85 c #6A936F",
+"95 c #6C9373",
+"05 c #A4BB84",
+"a5 c #577964",
+"b5 c #18544F",
+"c5 c #5F8962",
+"d5 c #4F815E",
+"e5 c #6F9168",
+"f5 c #93A770",
+"g5 c #9BAF6F",
+"h5 c #739469",
+"i5 c #598759",
+"j5 c #668E5C",
+"k5 c #698E63",
+"l5 c #76965E",
+"m5 c #92A868",
+"n5 c #8AA56F",
+"o5 c #538466",
+"p5 c #3C6D59",
+"q5 c #245B53",
+"r5 c #4F7E69",
+"s5 c #8DAC77",
+"t5 c #89A774",
+"u5 c #709974",
+"v5 c #719971",
+"w5 c #6B9463",
+"x5 c #73995E",
+"y5 c #709558",
+"z5 c #618B5E",
+"A5 c #608C61",
+"B5 c #4E7F63",
+"C5 c #225A55",
+"D5 c #386252",
+"E5 c #5D845B",
+"F5 c #688F64",
+"G5 c #70935F",
+"H5 c #6C915D",
+"I5 c #75966C",
+"J5 c #87A36F",
+"K5 c #91AB73",
+"L5 c #80A275",
+"M5 c #638D6C",
+"N5 c #58886F",
+"O5 c #6B9579",
+"P5 c #90AC7D",
+"Q5 c #A1B67F",
+"R5 c #ACBB78",
+"S5 c #ADBC6F",
+"T5 c #AAB97A",
+"U5 c #C1CA9E",
+"V5 c #EFF3E3",
+"W5 c #E5DFEB",
+"X5 c #A592BB",
+"Y5 c #8A71A5",
+"Z5 c #876DA3",
+"`5 c #7E629B",
+" 6 c #785996",
+".6 c #755492",
+"+6 c #715090",
+"@6 c #6F4C8D",
+"#6 c #6D498C",
+"$6 c #6B478A",
+"%6 c #6A4689",
+"&6 c #6A4589",
+"*6 c #A39AB1",
+"=6 c #BBB1C4",
+"-6 c #BAB1C1",
+";6 c #EEE7EB",
+">6 c #ADBAA0",
+",6 c #688C49",
+"'6 c #86A156",
+")6 c #608661",
+"!6 c #306C61",
+"~6 c #487863",
+"{6 c #4D7861",
+"]6 c #6E915B",
+"^6 c #74935B",
+"/6 c #3F705B",
+"(6 c #48775B",
+"_6 c #56805D",
+":6 c #457359",
+"<6 c #417057",
+"[6 c #7FA16A",
+"}6 c #6D927A",
+"|6 c #95AD79",
+"16 c #456F5E",
+"26 c #41705F",
+"36 c #5C8660",
+"46 c #5D805F",
+"56 c #98AC75",
+"66 c #8EA360",
+"76 c #869C56",
+"86 c #6A8A64",
+"96 c #306B5D",
+"06 c #73976B",
+"a6 c #829F5E",
+"b6 c #94AE6D",
+"c6 c #678E72",
+"d6 c #1F5A55",
+"e6 c #235650",
+"f6 c #447262",
+"g6 c #4F8065",
+"h6 c #5B8765",
+"i6 c #5D8965",
+"j6 c #5D875F",
+"k6 c #5D8559",
+"l6 c #608964",
+"m6 c #558160",
+"n6 c #477963",
+"o6 c #2D655D",
+"p6 c #225B55",
+"q6 c #5B875D",
+"r6 c #689265",
+"s6 c #668F63",
+"t6 c #568261",
+"u6 c #5D8A6A",
+"v6 c #6C946C",
+"w6 c #537F67",
+"x6 c #377066",
+"y6 c #497C6C",
+"z6 c #6E9475",
+"A6 c #98AF78",
+"B6 c #B0BF82",
+"C6 c #A4B885",
+"D6 c #97AF77",
+"E6 c #A3B673",
+"F6 c #A6B564",
+"G6 c #8FA654",
+"H6 c #A5B986",
+"I6 c #EBEED8",
+"J6 c #B2A2C6",
+"K6 c #7B5E99",
+"L6 c #775895",
+"M6 c #704F8F",
+"N6 c #694489",
+"O6 c #694488",
+"P6 c #684388",
+"Q6 c #694387",
+"R6 c #684287",
+"S6 c #684387",
+"T6 c #735290",
+"U6 c #C8C0CF",
+"V6 c #D5CED9",
+"W6 c #E1DFE5",
+"X6 c #CAD2D2",
+"Y6 c #B5C2B9",
+"Z6 c #BEC9B5",
+"`6 c #B2C0AC",
+" 7 c #749177",
+".7 c #5F8653",
+"+7 c #7A9953",
+"@7 c #8BA45B",
+"#7 c #688C67",
+"$7 c #336A63",
+"%7 c #216561",
+"&7 c #5A815F",
+"*7 c #819B54",
+"=7 c #688C5B",
+"-7 c #4A775A",
+";7 c #487357",
+">7 c #43735D",
+",7 c #356D60",
+"'7 c #23605A",
+")7 c #3E705D",
+"!7 c #88A75F",
+"~7 c #799A62",
+"{7 c #437A6C",
+"]7 c #8AA87F",
+"^7 c #7D946A",
+"/7 c #457158",
+"(7 c #40745E",
+"_7 c #78916B",
+":7 c #78985C",
+"<7 c #92A75A",
+"[7 c #638A6C",
+"}7 c #3A6E63",
+"|7 c #6F8F66",
+"17 c #84A168",
+"27 c #8BA66A",
+"37 c #96AE71",
+"47 c #457568",
+"57 c #064D4F",
+"67 c #416F5F",
+"77 c #709873",
+"87 c #628A6C",
+"97 c #457964",
+"07 c #3D7161",
+"a7 c #356C5F",
+"b7 c #386F65",
+"c7 c #507E67",
+"d7 c #5B8761",
+"e7 c #3E715F",
+"f7 c #2C6259",
+"g7 c #3D6F5B",
+"h7 c #4C7C5E",
+"i7 c #588562",
+"j7 c #5F8A66",
+"k7 c #4F7D63",
+"l7 c #447763",
+"m7 c #4A7860",
+"n7 c #42735B",
+"o7 c #366B5B",
+"p7 c #517866",
+"q7 c #86A06D",
+"r7 c #A1B364",
+"s7 c #ADB965",
+"t7 c #A3B46E",
+"u7 c #93AC6D",
+"v7 c #8EA558",
+"w7 c #90A34A",
+"x7 c #9EB064",
+"y7 c #8EAC7A",
+"z7 c #7A9D64",
+"A7 c #A4B47C",
+"B7 c #E4E5CD",
+"C7 c #BCADCD",
+"D7 c #6D4B8C",
+"E7 c #6D4A8B",
+"F7 c #6B488A",
+"G7 c #6B4689",
+"H7 c #6A4588",
+"I7 c #CFC9D7",
+"J7 c #DCD7E1",
+"K7 c #F3EDF0",
+"L7 c #F6F6FA",
+"M7 c #CDD7D0",
+"N7 c #AEC0A8",
+"O7 c #96AC84",
+"P7 c #6E9173",
+"Q7 c #4B7B62",
+"R7 c #568657",
+"S7 c #346D50",
+"T7 c #5C8562",
+"U7 c #749964",
+"V7 c #6B9059",
+"W7 c #819D5A",
+"X7 c #859F5B",
+"Y7 c #73935C",
+"Z7 c #5C8661",
+"`7 c #5F8A5E",
+" 8 c #6E945F",
+".8 c #71975B",
+"+8 c #6D9154",
+"@8 c #568060",
+"#8 c #57836C",
+"$8 c #47786C",
+"%8 c #2B6159",
+"&8 c #59805E",
+"*8 c #739865",
+"=8 c #48795F",
+"-8 c #759777",
+";8 c #386655",
+">8 c #456E5D",
+",8 c #88A477",
+"'8 c #73966E",
+")8 c #6B9065",
+"!8 c #7D9D6C",
+"~8 c #50806B",
+"{8 c #62886A",
+"]8 c #90A969",
+"^8 c #819E61",
+"/8 c #7A9B67",
+"(8 c #366E63",
+"_8 c #4A7C67",
+":8 c #618E6C",
+"<8 c #69906A",
+"[8 c #719369",
+"}8 c #69916B",
+"|8 c #5A886A",
+"18 c #447968",
+"28 c #3E7465",
+"38 c #407663",
+"48 c #4E7E64",
+"58 c #5A845D",
+"68 c #406F5C",
+"78 c #215651",
+"88 c #2B5D4E",
+"98 c #3B6C56",
+"08 c #386857",
+"a8 c #306153",
+"b8 c #225B54",
+"c8 c #205A56",
+"d8 c #2E6256",
+"e8 c #376758",
+"f8 c #557B63",
+"g8 c #83A070",
+"h8 c #9EAE5F",
+"i8 c #8DA557",
+"j8 c #92A75C",
+"k8 c #93A75E",
+"l8 c #8BA35A",
+"m8 c #86A15F",
+"n8 c #729874",
+"o8 c #759D79",
+"p8 c #779C71",
+"q8 c #729765",
+"r8 c #9DAE71",
+"s8 c #DCDCB9",
+"t8 c #FFFEF6",
+"u8 c #C5B9D4",
+"v8 c #8E879B",
+"w8 c #E5E1E9",
+"x8 c #FDFDFE",
+"y8 c #EDF0F3",
+"z8 c #DDE5DB",
+"A8 c #BFCCAD",
+"B8 c #9EB28B",
+"C8 c #799B71",
+"D8 c #618C5B",
+"E8 c #628C53",
+"F8 c #67905D",
+"G8 c #5D886B",
+"H8 c #518068",
+"I8 c #41705E",
+"J8 c #567F5C",
+"K8 c #72985D",
+"L8 c #55815E",
+"M8 c #5D835C",
+"N8 c #849E5A",
+"O8 c #729665",
+"P8 c #5B8A65",
+"Q8 c #5F8B5E",
+"R8 c #58855D",
+"S8 c #58845F",
+"T8 c #5E8A61",
+"U8 c #6C9264",
+"V8 c #69916A",
+"W8 c #417163",
+"X8 c #275E5C",
+"Y8 c #3E7568",
+"Z8 c #517E62",
+"`8 c #70946F",
+" 9 c #739671",
+".9 c #2B5C51",
+"+9 c #6A8469",
+"@9 c #90A875",
+"#9 c #527E5A",
+"$9 c #6D8D5C",
+"%9 c #6C8E66",
+"&9 c #719164",
+"*9 c #7F9B5F",
+"=9 c #759660",
+"-9 c #7D995B",
+";9 c #7B9D68",
+">9 c #487A69",
+",9 c #366E61",
+"'9 c #598869",
+")9 c #4B7C66",
+"!9 c #3D7466",
+"~9 c #3D7260",
+"{9 c #467761",
+"]9 c #517F65",
+"^9 c #527D5E",
+"/9 c #5A805E",
+"(9 c #4A7A5A",
+"_9 c #376957",
+":9 c #2E5B4E",
+"<9 c #4C6D5C",
+"[9 c #537765",
+"}9 c #49755F",
+"|9 c #4F7763",
+"19 c #527563",
+"29 c #467061",
+"39 c #2A6156",
+"49 c #366552",
+"59 c #57815C",
+"69 c #73946A",
+"79 c #7D9C71",
+"89 c #7E9F6B",
+"99 c #729566",
+"09 c #6C9365",
+"a9 c #709561",
+"b9 c #6B9067",
+"c9 c #668E6E",
+"d9 c #518272",
+"e9 c #477B6F",
+"f9 c #688C6B",
+"g9 c #8FA76F",
+"h9 c #8FAA74",
+"i9 c #7E9E74",
+"j9 c #97AA66",
+"k9 c #BCC48B",
+"l9 c #F1F5DD",
+"m9 c #CDC2DA",
+"n9 c #664086",
+"o9 c #694388",
+"p9 c #D0CAD8",
+"q9 c #D8DDCF",
+"r9 c #BBC6AB",
+"s9 c #B5C2A2",
+"t9 c #9CB092",
+"u9 c #90A97F",
+"v9 c #7C9D55",
+"w9 c #70944C",
+"x9 c #769958",
+"y9 c #7FA06C",
+"z9 c #82A37E",
+"A9 c #7EA27A",
+"B9 c #527D66",
+"C9 c #416C58",
+"D9 c #477662",
+"E9 c #35685D",
+"F9 c #336455",
+"G9 c #678D5C",
+"H9 c #668E63",
+"I9 c #3F715E",
+"J9 c #436E58",
+"K9 c #517A61",
+"L9 c #4C7F67",
+"M9 c #578664",
+"N9 c #527C5D",
+"O9 c #517B5A",
+"P9 c #44765B",
+"Q9 c #457966",
+"R9 c #286663",
+"S9 c #1E5B58",
+"T9 c #48745F",
+"U9 c #709671",
+"V9 c #577F66",
+"W9 c #316150",
+"X9 c #7C976D",
+"Y9 c #7C996F",
+"Z9 c #557F56",
+"`9 c #668959",
+" 0 c #64875E",
+".0 c #87A15F",
+"+0 c #86A05A",
+"@0 c #6A8B57",
+"#0 c #799758",
+"$0 c #739861",
+"%0 c #30685E",
+"&0 c #386956",
+"*0 c #316457",
+"=0 c #2E655D",
+"-0 c #31675A",
+";0 c #326757",
+">0 c #346957",
+",0 c #48755A",
+"'0 c #5A7F5E",
+")0 c #43705A",
+"!0 c #245B51",
+"~0 c #2F6054",
+"{0 c #628359",
+"]0 c #8BA678",
+"^0 c #769B84",
+"/0 c #6F9B7F",
+"(0 c #7EA687",
+"_0 c #87AA86",
+":0 c #87A87B",
+"<0 c #5C896C",
+"[0 c #4D7D64",
+"}0 c #5A875F",
+"|0 c #4B7A5A",
+"10 c #42755B",
+"20 c #5B8764",
+"30 c #578263",
+"40 c #528061",
+"50 c #497B69",
+"60 c #3D746B",
+"70 c #336B61",
+"80 c #567E63",
+"90 c #8EA264",
+"00 c #A1B26D",
+"a0 c #92AB6F",
+"b0 c #95A962",
+"c0 c #8FA86D",
+"d0 c #819F5C",
+"e0 c #879F48",
+"f0 c #AAB879",
+"g0 c #E3E7C7",
+"h0 c #D6CFDA",
+"i0 c #7E5F99",
+"j0 c #623A82",
+"k0 c #674186",
+"l0 c #BBB3C4",
+"m0 c #B3BFAD",
+"n0 c #709155",
+"o0 c #6B9043",
+"p0 c #648C53",
+"q0 c #608A5A",
+"r0 c #699163",
+"s0 c #799C6D",
+"t0 c #7A9E6E",
+"u0 c #7A9F6D",
+"v0 c #7AA175",
+"w0 c #6C9674",
+"x0 c #6B9571",
+"y0 c #769A72",
+"z0 c #5A7E61",
+"A0 c #2D5B50",
+"B0 c #2F6457",
+"C0 c #396E5E",
+"D0 c #326457",
+"E0 c #60815A",
+"F0 c #749561",
+"G0 c #3D6D5B",
+"H0 c #2B5F56",
+"I0 c #346A5D",
+"J0 c #3B6E5F",
+"K0 c #578563",
+"L0 c #6E9461",
+"M0 c #708D59",
+"N0 c #608357",
+"O0 c #507758",
+"P0 c #4B755B",
+"Q0 c #497A63",
+"R0 c #2D6158",
+"S0 c #1B5551",
+"T0 c #5E8B72",
+"U0 c #547A63",
+"V0 c #325C4E",
+"W0 c #6F8F5F",
+"X0 c #6F9566",
+"Y0 c #457962",
+"Z0 c #487A63",
+"`0 c #5E8963",
+" a c #5C8863",
+".a c #6E8E5F",
+"+a c #7C9960",
+"@a c #4C7659",
+"#a c #30655A",
+"$a c #386B60",
+"%a c #396354",
+"&a c #376352",
+"*a c #2C6158",
+"=a c #2C635C",
+"-a c #43745E",
+";a c #547F61",
+">a c #366554",
+",a c #3C675A",
+"'a c #5D8668",
+")a c #6D946A",
+"!a c #5F886C",
+"~a c #5B876D",
+"{a c #5D886F",
+"]a c #59826C",
+"^a c #4F7F6C",
+"/a c #5A8A75",
+"(a c #68947B",
+"_a c #608E75",
+":a c #578267",
+"<a c #3A6E5B",
+"[a c #3E715D",
+"}a c #3F725E",
+"|a c #3B6F5D",
+"1a c #336857",
+"2a c #497862",
+"3a c #638865",
+"4a c #7B9358",
+"5a c #96A860",
+"6a c #95AB65",
+"7a c #8AA566",
+"8a c #86A466",
+"9a c #93A854",
+"0a c #93A74D",
+"aa c #86A05C",
+"ba c #749567",
+"ca c #6F935B",
+"da c #90A766",
+"ea c #C4D0A0",
+"fa c #E5E5E0",
+"ga c #9A82B0",
+"ha c #674086",
+"ia c #633A82",
+"ja c #684187",
+"ka c #DBDBDE",
+"la c #B0C09C",
+"ma c #819D52",
+"na c #7F9C63",
+"oa c #709471",
+"pa c #648B6D",
+"qa c #66906C",
+"ra c #5D8B66",
+"sa c #447662",
+"ta c #437561",
+"ua c #4E7D66",
+"va c #5E8C6D",
+"wa c #759A69",
+"xa c #709564",
+"ya c #44725C",
+"za c #25574F",
+"Aa c #306356",
+"Ba c #295F57",
+"Ca c #27544C",
+"Da c #4A7158",
+"Ea c #618C6A",
+"Fa c #4A7C66",
+"Ga c #306255",
+"Ha c #24554E",
+"Ia c #2F5F54",
+"Ja c #4C775E",
+"Ka c #6F9161",
+"La c #79975A",
+"Ma c #7C9855",
+"Na c #769451",
+"Oa c #668D5D",
+"Pa c #588465",
+"Qa c #386A5A",
+"Ra c #447765",
+"Sa c #437161",
+"Ta c #3B6550",
+"Ua c #789658",
+"Va c #6D9568",
+"Wa c #407770",
+"Xa c #477C6E",
+"Ya c #5D8C6A",
+"Za c #689066",
+"`a c #719765",
+" b c #7D9E63",
+".b c #567D5E",
+"+b c #2E665A",
+"@b c #4D7C62",
+"#b c #5A8866",
+"$b c #547F60",
+"%b c #527B58",
+"&b c #4A7A5D",
+"*b c #528269",
+"=b c #5C896A",
+"-b c #5B8560",
+";b c #466F56",
+">b c #3A6755",
+",b c #4F7E64",
+"'b c #558165",
+")b c #34675B",
+"!b c #3B6B5C",
+"~b c #507B60",
+"{b c #3B6D5A",
+"]b c #40715E",
+"^b c #487665",
+"/b c #4D7D6C",
+"(b c #528472",
+"_b c #5E8762",
+":b c #3B7161",
+"<b c #346E61",
+"[b c #3C715F",
+"}b c #3B6F5C",
+"|b c #48765A",
+"1b c #6C905E",
+"2b c #8FA85B",
+"3b c #94A75D",
+"4b c #7D9863",
+"5b c #6E925D",
+"6b c #77955A",
+"7b c #72905D",
+"8b c #688A57",
+"9b c #739255",
+"0b c #7F9C65",
+"ab c #819E75",
+"bb c #819E70",
+"cb c #85A15A",
+"db c #86A25B",
+"eb c #B1C185",
+"fb c #EFF3D7",
+"gb c #C9BDD7",
+"hb c #84679F",
+"ib c #653D84",
+"jb c #9790A6",
+"kb c #D1CBD8",
+"lb c #ECF1E7",
+"mb c #99AD77",
+"nb c #819C46",
+"ob c #94AA63",
+"pb c #8EA662",
+"qb c #86A365",
+"rb c #6B9167",
+"sb c #41715F",
+"tb c #32685C",
+"ub c #376D5C",
+"vb c #3E725C",
+"wb c #4A7759",
+"xb c #568059",
+"yb c #508161",
+"zb c #306559",
+"Ab c #26584F",
+"Bb c #346454",
+"Cb c #24564E",
+"Db c #154C4A",
+"Eb c #3A6759",
+"Fb c #467664",
+"Gb c #376A59",
+"Hb c #2B5D52",
+"Ib c #22544F",
+"Jb c #1F534D",
+"Kb c #3B6A57",
+"Lb c #557D5D",
+"Mb c #658B5F",
+"Nb c #7A9E5C",
+"Ob c #799B5B",
+"Pb c #769B6C",
+"Qb c #6B9569",
+"Rb c #568461",
+"Sb c #4D7A61",
+"Tb c #708B5F",
+"Ub c #8DA764",
+"Vb c #6D9367",
+"Wb c #618B6B",
+"Xb c #75996D",
+"Yb c #83A067",
+"Zb c #91AC5F",
+"`b c #7A9B5C",
+" c c #49775C",
+".c c #245D54",
+"+c c #396C5D",
+"@c c #497B62",
+"#c c #447658",
+"$c c #477658",
+"%c c #4B7759",
+"&c c #517C58",
+"*c c #517A5B",
+"=c c #3E6A54",
+"-c c #326153",
+";c c #4B775E",
+">c c #508165",
+",c c #386E5A",
+"'c c #356857",
+")c c #3E6D5C",
+"!c c #3A6D5C",
+"~c c #5F8A68",
+"{c c #578568",
+"]c c #5D8767",
+"^c c #789462",
+"/c c #7E9A65",
+"(c c #698C69",
+"_c c #618A69",
+":c c #5F8C66",
+"<c c #3B6E5D",
+"[c c #386B5A",
+"}c c #417259",
+"|c c #58805A",
+"1c c #58815C",
+"2c c #567F5D",
+"3c c #56815E",
+"4c c #518059",
+"5c c #437159",
+"6c c #43715C",
+"7c c #527F61",
+"8c c #75986F",
+"9c c #8DA977",
+"0c c #93AC6C",
+"ac c #97AA5D",
+"bc c #8FA459",
+"cc c #809B4C",
+"dc c #A3B375",
+"ec c #E1E6C6",
+"fc c #FEFEF8",
+"gc c #D2C8DE",
+"hc c #653E85",
+"ic c #F3EDF1",
+"jc c #CBD4BF",
+"kc c #7E9955",
+"lc c #7B9A4A",
+"mc c #92AA60",
+"nc c #92A75D",
+"oc c #89A56C",
+"pc c #7FA26F",
+"qc c #73986D",
+"rc c #6B8F66",
+"sc c #547B5F",
+"tc c #386A5E",
+"uc c #3C6F5F",
+"vc c #366E5F",
+"wc c #2D665C",
+"xc c #255349",
+"yc c #316050",
+"zc c #28594F",
+"Ac c #164846",
+"Bc c #1F504A",
+"Cc c #306052",
+"Dc c #346859",
+"Ec c #2F645A",
+"Fc c #265A54",
+"Gc c #1C524E",
+"Hc c #194F4C",
+"Ic c #255955",
+"Jc c #3E6B5E",
+"Kc c #5B805B",
+"Lc c #6B9678",
+"Mc c #6B9371",
+"Nc c #6F956C",
+"Oc c #8EA775",
+"Pc c #80A174",
+"Qc c #88A463",
+"Rc c #AAB753",
+"Sc c #9DB051",
+"Tc c #8FA154",
+"Uc c #5E7C56",
+"Vc c #376454",
+"Wc c #255C54",
+"Xc c #1F544F",
+"Yc c #1E5140",
+"Zc c #215744",
+"`c c #2F6053",
+" d c #2C5C50",
+".d c #2F5E50",
+"+d c #305F4E",
+"@d c #2A584C",
+"#d c #2B5A4F",
+"$d c #3B685A",
+"%d c #6E916D",
+"&d c #90AC6E",
+"*d c #719168",
+"=d c #567B62",
+"-d c #5F8766",
+";d c #638F65",
+">d c #4D7E60",
+",d c #528162",
+"'d c #7A9962",
+")d c #829E5F",
+"!d c #829F60",
+"~d c #90A95F",
+"{d c #89A05A",
+"]d c #779157",
+"^d c #56805E",
+"/d c #396F5F",
+"(d c #2F6458",
+"_d c #265850",
+":d c #285B4F",
+"<d c #295B4F",
+"[d c #28584E",
+"}d c #26574E",
+"|d c #205752",
+"1d c #265F57",
+"2d c #3F705A",
+"3d c #427560",
+"4d c #326A62",
+"5d c #487966",
+"6d c #6C9467",
+"7d c #7F9E6B",
+"8d c #7F9C67",
+"9d c #74955E",
+"0d c #7B9962",
+"ad c #7B9967",
+"bd c #799866",
+"cd c #799B69",
+"dd c #799C5B",
+"ed c #91A75B",
+"fd c #C4CA96",
+"gd c #FDFCE6",
+"hd c #B2A0C4",
+"id c #BAC4A2",
+"jd c #75954D",
+"kd c #719652",
+"ld c #7B9A64",
+"md c #769860",
+"nd c #759A67",
+"od c #719668",
+"pd c #6D8F67",
+"qd c #5F8868",
+"rd c #427868",
+"sd c #336C62",
+"td c #306A5C",
+"ud c #366A5A",
+"vd c #25554C",
+"wd c #27554A",
+"xd c #28574B",
+"yd c #23534B",
+"zd c #1E4F49",
+"Ad c #1D4E49",
+"Bd c #28584D",
+"Cd c #2F5E51",
+"Dd c #265952",
+"Ed c #265A53",
+"Fd c #275A4E",
+"Gd c #255951",
+"Hd c #325D55",
+"Id c #3F6958",
+"Jd c #537D5D",
+"Kd c #6F916C",
+"Ld c #799976",
+"Md c #6B926F",
+"Nd c #649070",
+"Od c #758E62",
+"Pd c #748657",
+"Qd c #577554",
+"Rd c #2E5C51",
+"Sd c #0F4D4D",
+"Td c #2A5D53",
+"Ud c #3B6B55",
+"Vd c #416D56",
+"Wd c #3B6446",
+"Xd c #1F4D3C",
+"Yd c #154A47",
+"Zd c #1F514C",
+"`d c #24544C",
+" e c #2D5B4E",
+".e c #4B7860",
+"+e c #789E75",
+"@e c #8CAB7B",
+"#e c #89A576",
+"$e c #99B378",
+"%e c #A9BC78",
+"&e c #94AE74",
+"*e c #789A6B",
+"=e c #749463",
+"-e c #5B7F58",
+";e c #4E7354",
+">e c #6A8A5A",
+",e c #6C8D59",
+"'e c #49735B",
+")e c #2C6053",
+"!e c #316655",
+"~e c #396F5B",
+"{e c #336A5F",
+"]e c #4A7D6B",
+"^e c #5B8766",
+"/e c #547C60",
+"(e c #48715E",
+"_e c #275B55",
+":e c #2A5D55",
+"<e c #32665B",
+"[e c #34685B",
+"}e c #427060",
+"|e c #447565",
+"1e c #5B8566",
+"2e c #527F5D",
+"3e c #467758",
+"4e c #477758",
+"5e c #4C7A5A",
+"6e c #598871",
+"7e c #52826B",
+"8e c #5F8B70",
+"9e c #4B7658",
+"0e c #467242",
+"ae c #8FA864",
+"be c #E9EFC6",
+"ce c #B09DC1",
+"de c #CBC6D4",
+"ee c #F7F7EB",
+"fe c #AEBC90",
+"ge c #668D4A",
+"he c #6D9356",
+"ie c #6C905D",
+"je c #5B845C",
+"ke c #537E58",
+"le c #3A705E",
+"me c #477861",
+"ne c #6F955B",
+"oe c #698E5E",
+"pe c #4F7C5F",
+"qe c #31665A",
+"re c #1A4F4B",
+"se c #1A4B47",
+"te c #28564B",
+"ue c #25534A",
+"ve c #205049",
+"we c #1B4E48",
+"xe c #3B6654",
+"ye c #5C8362",
+"ze c #6D9470",
+"Ae c #749977",
+"Be c #789970",
+"Ce c #719267",
+"De c #6A8E67",
+"Ee c #719265",
+"Fe c #628961",
+"Ge c #4B7F67",
+"He c #6C906C",
+"Ie c #5A7A5D",
+"Je c #0D4846",
+"Ke c #003F42",
+"Le c #0E4C4D",
+"Me c #2F6A5F",
+"Ne c #3E725B",
+"Oe c #3F7562",
+"Pe c #658F73",
+"Qe c #64876C",
+"Re c #20534B",
+"Se c #2F5F52",
+"Te c #376855",
+"Ue c #618B65",
+"Ve c #759B6F",
+"We c #709772",
+"Xe c #719977",
+"Ye c #799F76",
+"Ze c #84A375",
+"`e c #8FAB75",
+" f c #94AF74",
+".f c #A3B878",
+"+f c #869D6D",
+"@f c #386055",
+"#f c #104F4C",
+"$f c #265B53",
+"%f c #2D5C52",
+"&f c #3B654F",
+"*f c #4B775B",
+"=f c #477A61",
+"-f c #467867",
+";f c #739968",
+">f c #6E9771",
+",f c #52836B",
+"'f c #3A7065",
+")f c #427260",
+"!f c #57845C",
+"~f c #628A65",
+"{f c #5E8463",
+"]f c #517A5C",
+"^f c #4A765B",
+"/f c #41715D",
+"(f c #42745F",
+"_f c #3F7160",
+":f c #356E61",
+"<f c #3B7464",
+"[f c #457760",
+"}f c #366F56",
+"|f c #005036",
+"1f c #406955",
+"2f c #C0D1BD",
+"3f c #F9FAE3",
+"4f c #9C86B1",
+"5f c #938C9F",
+"6f c #DED9E3",
+"7f c #EEF3EC",
+"8f c #9DB188",
+"9f c #678C44",
+"0f c #5F874C",
+"af c #578260",
+"bf c #6B8C5B",
+"cf c #7A9455",
+"df c #759156",
+"ef c #6E8F5E",
+"ff c #6D9469",
+"gf c #6C9168",
+"hf c #5B8466",
+"if c #417061",
+"jf c #2B655C",
+"kf c #305D4F",
+"lf c #2D5D51",
+"mf c #24564D",
+"nf c #1B4D48",
+"of c #164946",
+"pf c #1C4F4D",
+"qf c #4B7461",
+"rf c #81A477",
+"sf c #82A575",
+"tf c #6A9475",
+"uf c #5C8770",
+"vf c #5B8775",
+"wf c #518572",
+"xf c #4F7E5F",
+"yf c #678C5B",
+"zf c #477466",
+"Af c #77966C",
+"Bf c #406857",
+"Cf c #0E4544",
+"Df c #24554C",
+"Ef c #396B58",
+"Ff c #346756",
+"Gf c #316356",
+"Hf c #2B665D",
+"If c #377067",
+"Jf c #739C7C",
+"Kf c #668C6F",
+"Lf c #25554E",
+"Mf c #26574B",
+"Nf c #4A7858",
+"Of c #648E5C",
+"Pf c #618B5A",
+"Qf c #59875D",
+"Rf c #689275",
+"Sf c #548470",
+"Tf c #638F74",
+"Uf c #729A75",
+"Vf c #799F6F",
+"Wf c #86A677",
+"Xf c #ACBF88",
+"Yf c #879976",
+"Zf c #30564F",
+"`f c #215749",
+" g c #4F7D55",
+".g c #6C935E",
+"+g c #658F5E",
+"@g c #5B8861",
+"#g c #447459",
+"$g c #296459",
+"%g c #467964",
+"&g c #68905F",
+"*g c #5E895B",
+"=g c #5F8C62",
+"-g c #4D7A5F",
+";g c #356C59",
+">g c #54825D",
+",g c #5F8964",
+"'g c #5F8562",
+")g c #62865E",
+"!g c #658B64",
+"~g c #53846F",
+"{g c #558269",
+"]g c #5E845C",
+"^g c #66885A",
+"/g c #5C8356",
+"(g c #2D6F40",
+"_g c #C9D6D0",
+":g c #EFE9F1",
+"<g c #967EAE",
+"[g c #8E879A",
+"}g c #DBD6E1",
+"|g c #ECF0EB",
+"1g c #A4B596",
+"2g c #729350",
+"3g c #678F43",
+"4g c #789A58",
+"5g c #849E60",
+"6g c #829C61",
+"7g c #497964",
+"8g c #548367",
+"9g c #45735E",
+"0g c #2E6054",
+"ag c #21534D",
+"bg c #094646",
+"cg c #2E5C53",
+"dg c #648B6B",
+"eg c #7CA27C",
+"fg c #6F9675",
+"gg c #548465",
+"hg c #41725F",
+"ig c #3C715D",
+"jg c #5C885F",
+"kg c #5D835B",
+"lg c #587D5E",
+"mg c #386E61",
+"ng c #608C71",
+"og c #608667",
+"pg c #25564C",
+"qg c #22524C",
+"rg c #27564C",
+"sg c #2A5A4D",
+"tg c #346452",
+"ug c #40735B",
+"vg c #508068",
+"wg c #7AA386",
+"xg c #50796C",
+"yg c #1B4F49",
+"zg c #3A6953",
+"Ag c #497A5D",
+"Bg c #41745E",
+"Cg c #4E7E62",
+"Dg c #739471",
+"Eg c #8FA871",
+"Fg c #89A775",
+"Gg c #81A375",
+"Hg c #7FA375",
+"Ig c #7FA175",
+"Jg c #9EB67D",
+"Kg c #A0B27A",
+"Lg c #668859",
+"Mg c #326E54",
+"Ng c #437662",
+"Og c #57855B",
+"Pg c #588561",
+"Qg c #2E6962",
+"Rg c #608959",
+"Sg c #5C895A",
+"Tg c #5D8B5E",
+"Ug c #487B63",
+"Vg c #245E59",
+"Wg c #2D6155",
+"Xg c #48785C",
+"Yg c #578562",
+"Zg c #57825C",
+"`g c #648D5D",
+" h c #719464",
+".h c #749867",
+"+h c #799C63",
+"@h c #7C9850",
+"#h c #638640",
+"$h c #507B43",
+"%h c #80A077",
+"&h c #E8F3DE",
+"*h c #E3D8E7",
+"=h c #633982",
+"-h c #4D4955",
+";h c #D2CCD8",
+">h c #F6F8FC",
+",h c #BCC8B3",
+"'h c #769554",
+")h c #588543",
+"!h c #5C8656",
+"~h c #678C62",
+"{h c #6B9165",
+"]h c #6C8D5D",
+"^h c #77945F",
+"/h c #6F9568",
+"(h c #5F8862",
+"_h c #4F795C",
+":h c #336657",
+"<h c #23564F",
+"[h c #174A46",
+"}h c #3D6457",
+"|h c #83A076",
+"1h c #8CAD7B",
+"2h c #7A9F79",
+"3h c #789C74",
+"4h c #538167",
+"5h c #376A5B",
+"6h c #3F6E59",
+"7h c #60895D",
+"8h c #7B9B57",
+"9h c #72965A",
+"0h c #668D5A",
+"ah c #4D7658",
+"bh c #457861",
+"ch c #628962",
+"dh c #709665",
+"eh c #346553",
+"fh c #25554F",
+"gh c #23554F",
+"hh c #22544D",
+"ih c #356655",
+"jh c #366755",
+"kh c #2F5F51",
+"lh c #366655",
+"mh c #628B74",
+"nh c #71997C",
+"oh c #356B5C",
+"ph c #618564",
+"qh c #809B62",
+"rh c #91AB66",
+"sh c #9CB06C",
+"th c #98AC69",
+"uh c #95AD6E",
+"vh c #97AF6D",
+"wh c #99AF68",
+"xh c #789F6F",
+"yh c #98B483",
+"zh c #A2B57C",
+"Ah c #507962",
+"Bh c #266055",
+"Ch c #5D8760",
+"Dh c #4D7A5D",
+"Eh c #4A7C5E",
+"Fh c #407466",
+"Gh c #26645D",
+"Hh c #43745B",
+"Ih c #5E865A",
+"Jh c #5D8759",
+"Kh c #5F8C5E",
+"Lh c #547E5F",
+"Mh c #326456",
+"Nh c #487559",
+"Oh c #557E58",
+"Ph c #608559",
+"Qh c #6A8C61",
+"Rh c #6D915B",
+"Sh c #618D4D",
+"Th c #57863F",
+"Uh c #5B8343",
+"Vh c #849F7E",
+"Wh c #BFBBCA",
+"Xh c #B7A4C7",
+"Yh c #8C73A7",
+"Zh c #613781",
+"`h c #DFE5CF",
+" i c #89A36B",
+".i c #638B48",
+"+i c #588440",
+"@i c #6F914A",
+"#i c #7E9B57",
+"$i c #709261",
+"%i c #5A835F",
+"&i c #507D5A",
+"*i c #587E58",
+"=i c #507554",
+"-i c #22574F",
+";i c #55755A",
+">i c #9CAF78",
+",i c #95AE81",
+"'i c #6E9574",
+")i c #729571",
+"!i c #547C5F",
+"~i c #59825C",
+"{i c #628B61",
+"]i c #638A5D",
+"^i c #769858",
+"/i c #7D9D59",
+"(i c #759255",
+"_i c #2C645C",
+":i c #377063",
+"<i c #98AC60",
+"[i c #4F7155",
+"}i c #1A504C",
+"|i c #2E6155",
+"1i c #2A5B4F",
+"2i c #45735A",
+"3i c #3B6657",
+"4i c #305F53",
+"5i c #42735C",
+"6i c #71987B",
+"7i c #5B8272",
+"8i c #255A50",
+"9i c #4F7858",
+"0i c #94A95D",
+"ai c #98AA59",
+"bi c #97AA5B",
+"ci c #85A268",
+"di c #699469",
+"ei c #759A6A",
+"fi c #90A862",
+"gi c #95AA58",
+"hi c #95AD5E",
+"ii c #8EAC71",
+"ji c #83A474",
+"ki c #92AE7A",
+"li c #9FB283",
+"mi c #5D7F64",
+"ni c #31694C",
+"oi c #4D7C4A",
+"pi c #587F53",
+"qi c #608861",
+"ri c #45745E",
+"si c #2E655C",
+"ti c #47735D",
+"ui c #5B825D",
+"vi c #598762",
+"wi c #668A5C",
+"xi c #47745F",
+"yi c #34695F",
+"zi c #43715D",
+"Ai c #4E7550",
+"Bi c #3C7142",
+"Ci c #467A44",
+"Di c #668D58",
+"Ei c #89A373",
+"Fi c #C7D0AC",
+"Gi c #F5F6F2",
+"Hi c #623881",
+"Ii c #663F85",
+"Ji c #9992A6",
+"Ki c #DED9E2",
+"Li c #E7EAE5",
+"Mi c #B2C1A6",
+"Ni c #829F79",
+"Oi c #5B8550",
+"Pi c #508042",
+"Qi c #5B844A",
+"Ri c #638850",
+"Si c #628958",
+"Ti c #58815B",
+"Ui c #4F7A5A",
+"Vi c #3C6C57",
+"Wi c #58785B",
+"Xi c #9FB179",
+"Yi c #99B383",
+"Zi c #6B9572",
+"`i c #558469",
+" j c #4B7C61",
+".j c #487759",
+"+j c #66895B",
+"@j c #739765",
+"#j c #5C8760",
+"$j c #709354",
+"%j c #82A158",
+"&j c #7A9658",
+"*j c #40664F",
+"=j c #0F4745",
+"-j c #316C63",
+";j c #517D69",
+">j c #BDC360",
+",j c #6A7D55",
+"'j c #18504C",
+")j c #3E6D59",
+"!j c #3C6A56",
+"~j c #26584E",
+"{j c #3C6A59",
+"]j c #6A9165",
+"^j c #4C7C5C",
+"/j c #779773",
+"(j c #84A383",
+"_j c #346558",
+":j c #446C54",
+"<j c #759960",
+"[j c #789D5E",
+"}j c #89A45D",
+"|j c #82A163",
+"1j c #789C68",
+"2j c #80A069",
+"3j c #668E66",
+"4j c #6F9770",
+"5j c #7D9E72",
+"6j c #80A06D",
+"7j c #7CA06F",
+"8j c #99B285",
+"9j c #9AAF83",
+"0j c #608B59",
+"aj c #60894A",
+"bj c #638743",
+"cj c #668B43",
+"dj c #628948",
+"ej c #417451",
+"fj c #2A684F",
+"gj c #3E734E",
+"hj c #2D6D4B",
+"ij c #386F40",
+"jj c #5B8342",
+"kj c #4E7F47",
+"lj c #2A6A48",
+"mj c #256546",
+"nj c #3D7243",
+"oj c #608652",
+"pj c #94A982",
+"qj c #CBD5C1",
+"rj c #FBFEFF",
+"sj c #AC99C0",
+"tj c #CEC8D7",
+"uj c #F3ECEF",
+"vj c #E8EBF1",
+"wj c #9FB29D",
+"xj c #839E75",
+"yj c #84A174",
+"zj c #78975E",
+"Aj c #658C4E",
+"Bj c #4A7A4A",
+"Cj c #376E52",
+"Dj c #8AA16F",
+"Ej c #AFC184",
+"Fj c #86A478",
+"Gj c #618B6D",
+"Hj c #518266",
+"Ij c #5B875F",
+"Jj c #648B59",
+"Kj c #71945F",
+"Lj c #6C9163",
+"Mj c #709258",
+"Nj c #82A157",
+"Oj c #6B8D5E",
+"Pj c #406651",
+"Qj c #154C49",
+"Rj c #154A49",
+"Sj c #32695C",
+"Tj c #698E6D",
+"Uj c #A1B15B",
+"Vj c #4F6D4D",
+"Wj c #547858",
+"Xj c #5D8459",
+"Yj c #406E56",
+"Zj c #265A51",
+"`j c #4F7959",
+" k c #6F9361",
+".k c #638D62",
+"+k c #729569",
+"@k c #95B27C",
+"#k c #4C7365",
+"$k c #104D4C",
+"%k c #527A5A",
+"&k c #577E58",
+"*k c #537D57",
+"=k c #5E8460",
+"-k c #638666",
+";k c #3E7569",
+">k c #508272",
+",k c #59886E",
+"'k c #68926F",
+")k c #799E74",
+"!k c #7EA173",
+"~k c #8CAA72",
+"{k c #B3C392",
+"]k c #C0CCB0",
+"^k c #99B08A",
+"/k c #8BA473",
+"(k c #88A366",
+"_k c #75985D",
+":k c #5F8D56",
+"<k c #578555",
+"[k c #55855A",
+"}k c #447A51",
+"|k c #3F764A",
+"1k c #59864F",
+"2k c #608953",
+"3k c #658A5C",
+"4k c #7D9D6B",
+"5k c #A1B885",
+"6k c #DCE5C4",
+"7k c #FFFDF8",
+"8k c #E8E1ED",
+"9k c #B4A3C7",
+"0k c #595462",
+"ak c #E8E4EA",
+"bk c #FBF9FA",
+"ck c #EAECEB",
+"dk c #BAC5B5",
+"ek c #9AAD8E",
+"fk c #86A07A",
+"gk c #668B67",
+"hk c #73966A",
+"ik c #97B17C",
+"jk c #82A06F",
+"kk c #698D65",
+"lk c #527D61",
+"mk c #5C875F",
+"nk c #70935A",
+"ok c #779458",
+"pk c #819D58",
+"qk c #83A05B",
+"rk c #77955B",
+"sk c #54785B",
+"tk c #26554F",
+"uk c #275950",
+"vk c #2D5E54",
+"wk c #1F514A",
+"xk c #275851",
+"yk c #628868",
+"zk c #6F9563",
+"Ak c #285D4D",
+"Bk c #2F5E49",
+"Ck c #668852",
+"Dk c #6F8F59",
+"Ek c #54805E",
+"Fk c #2B6359",
+"Gk c #467156",
+"Hk c #638857",
+"Ik c #719564",
+"Jk c #6A9369",
+"Kk c #87A574",
+"Lk c #6D8F72",
+"Mk c #104E4C",
+"Nk c #1B4F4C",
+"Ok c #306155",
+"Pk c #316254",
+"Qk c #2F6354",
+"Rk c #326658",
+"Sk c #437361",
+"Tk c #467869",
+"Uk c #4E7D6D",
+"Vk c #6B8E6E",
+"Wk c #739570",
+"Xk c #799B70",
+"Yk c #759A74",
+"Zk c #719A75",
+"`k c #769E75",
+" l c #709969",
+".l c #8EA66F",
+"+l c #E0E1CD",
+"@l c #DAD4E6",
+"#l c #B5AFC3",
+"$l c #ADB4B7",
+"%l c #A7B3A9",
+"&l c #B1BAAC",
+"*l c #B7C2B7",
+"=l c #B1BEB5",
+"-l c #ABB5B1",
+";l c #ABB5B0",
+">l c #B3B7B6",
+",l c #BBB8C7",
+"'l c #C1B4D2",
+")l c #B09CC1",
+"!l c #977EAE",
+"~l c #FCFCFC",
+"{l c #BBC6A4",
+"]l c #8BA265",
+"^l c #6D8E57",
+"/l c #7D9A5B",
+"(l c #84A05A",
+"_l c #8AA457",
+":l c #98AC57",
+"<l c #839958",
+"[l c #58795C",
+"}l c #2D5B55",
+"|l c #114A49",
+"1l c #174A48",
+"2l c #27574D",
+"3l c #2C5C51",
+"4l c #2C5F57",
+"5l c #275951",
+"6l c #0F463B",
+"7l c #456B55",
+"8l c #9CB5A5",
+"9l c #8DA09E",
+"0l c #5B7D63",
+"al c #4F7E42",
+"bl c #7E9C57",
+"cl c #62875E",
+"dl c #36695B",
+"el c #356B59",
+"fl c #557F59",
+"gl c #7FA169",
+"hl c #80A177",
+"il c #7B9B73",
+"jl c #205650",
+"kl c #0D4647",
+"ll c #346657",
+"ml c #4E7D5F",
+"nl c #5B8868",
+"ol c #5A886D",
+"pl c #6A9168",
+"ql c #82A268",
+"rl c #92AA68",
+"sl c #9BAE65",
+"tl c #99AD62",
+"ul c #9CAE60",
+"vl c #91A969",
+"wl c #84A26B",
+"xl c #7F9F6F",
+"yl c #7C9E70",
+"zl c #75985B",
+"Al c #96AB73",
+"Bl c #EBEFDA",
+"Cl c #C0AECD",
+"Dl c #643B83",
+"El c #6C4689",
+"Fl c #724D8E",
+"Gl c #745190",
+"Hl c #7A5A96",
+"Il c #735190",
+"Jl c #6E498C",
+"Kl c #684086",
+"Ll c #B6B0C3",
+"Ml c #C1BDCC",
+"Nl c #F0ECF1",
+"Ol c #E5E7D7",
+"Pl c #B0BA72",
+"Ql c #8CA13C",
+"Rl c #7E984D",
+"Sl c #90A75E",
+"Tl c #A0B259",
+"Ul c #89A25E",
+"Vl c #75945D",
+"Wl c #7A9357",
+"Xl c #6A8457",
+"Yl c #345F53",
+"Zl c #0F4949",
+"`l c #084244",
+" m c #1D4E4A",
+".m c #2E5E53",
+"+m c #2B5A50",
+"@m c #2D5F56",
+"#m c #2F5F55",
+"$m c #01432B",
+"%m c #4C6854",
+"&m c #E7E8F1",
+"*m c #BBC8BC",
+"=m c #4F7E4F",
+"-m c #6D9145",
+";m c #7E9657",
+">m c #597D58",
+",m c #3C705A",
+"'m c #6A9063",
+")m c #81A171",
+"!m c #8DAA7B",
+"~m c #7FA07A",
+"{m c #0A4344",
+"]m c #1F524B",
+"^m c #658E6B",
+"/m c #789653",
+"(m c #7D9B5B",
+"_m c #84A063",
+":m c #95AB61",
+"<m c #95AB62",
+"[m c #95AD6B",
+"}m c #A0B26D",
+"|m c #96AA6A",
+"1m c #90A96F",
+"2m c #81A36F",
+"3m c #77974F",
+"4m c #B4BF83",
+"5m c #F8F8E9",
+"6m c #663E85",
+"7m c #B2ACBE",
+"8m c #BBB6C7",
+"9m c #EFECF1",
+"0m c #C4CDB4",
+"am c #9EAE75",
+"bm c #AFBB83",
+"cm c #809D64",
+"dm c #5A8052",
+"em c #54775B",
+"fm c #356354",
+"gm c #2D5F53",
+"hm c #2C5E51",
+"im c #184D4A",
+"jm c #124848",
+"km c #1F504B",
+"lm c #22524A",
+"mm c #326152",
+"nm c #396957",
+"om c #326557",
+"pm c #33655A",
+"qm c #085235",
+"rm c #56785F",
+"sm c #A89BC0",
+"tm c #B09DC2",
+"um c #9DB1A0",
+"vm c #598345",
+"wm c #709247",
+"xm c #6C8B5A",
+"ym c #628760",
+"zm c #528264",
+"Am c #5A8461",
+"Bm c #7C9E6C",
+"Cm c #9BB37B",
+"Dm c #91AA7A",
+"Em c #3D685A",
+"Fm c #174C48",
+"Gm c #1E4F4A",
+"Hm c #1E514B",
+"Im c #285C52",
+"Jm c #407159",
+"Km c #406F59",
+"Lm c #467459",
+"Mm c #5E876D",
+"Nm c #6D9372",
+"Om c #729573",
+"Pm c #7D9B70",
+"Qm c #93AA69",
+"Rm c #94AC6E",
+"Sm c #85A676",
+"Tm c #80A06C",
+"Um c #8FA452",
+"Vm c #D0D7A3",
+"Wm c #D7CDE1",
+"Xm c #674187",
+"Ym c #C7C3D1",
+"Zm c #D3D0DC",
+"`m c #E3E2E9",
+" n c #DCE0E6",
+".n c #EFEEF4",
+"+n c #EEEFF7",
+"@n c #5B846D",
+"#n c #004F35",
+"$n c #20534F",
+"%n c #1E524F",
+"&n c #2F6057",
+"*n c #326256",
+"=n c #25554D",
+"-n c #336252",
+";n c #285A51",
+">n c #44735C",
+",n c #407059",
+"'n c #386555",
+")n c #44715B",
+"!n c #14613C",
+"~n c #5C8767",
+"{n c #9D8FB5",
+"]n c #6A4388",
+"^n c #A58FB9",
+"/n c #F0F6F4",
+"(n c #A6B9A4",
+"_n c #6D925D",
+":n c #5A8447",
+"<n c #729257",
+"[n c #779B69",
+"}n c #5C8963",
+"|n c #6B926B",
+"1n c #94AF7A",
+"2n c #8DA777",
+"3n c #3C6759",
+"4n c #1C504C",
+"5n c #1B4D49",
+"6n c #336559",
+"7n c #3F715F",
+"8n c #3D6E5E",
+"9n c #2D6861",
+"0n c #2C6C67",
+"an c #477A6C",
+"bn c #427668",
+"cn c #42796B",
+"dn c #739A72",
+"en c #80A16C",
+"fn c #7A9C6C",
+"gn c #7DA27B",
+"hn c #7C9D5C",
+"in c #A5B675",
+"jn c #F4F8E5",
+"kn c #8C72A5",
+"ln c #633B83",
+"mn c #B5B1C1",
+"nn c #DCD8E1",
+"on c #E6E0E7",
+"pn c #D3D7DB",
+"qn c #5D8565",
+"rn c #22663F",
+"sn c #3E705F",
+"tn c #467961",
+"un c #457761",
+"vn c #2E5F53",
+"wn c #396956",
+"xn c #24574F",
+"yn c #44735D",
+"zn c #44745D",
+"An c #306252",
+"Bn c #3D6A58",
+"Cn c #557D59",
+"Dn c #62845C",
+"En c #226239",
+"Fn c #648A6B",
+"Gn c #AA98C0",
+"Hn c #9379AB",
+"In c #FFFCFD",
+"Jn c #C4CEB6",
+"Kn c #709256",
+"Ln c #648C42",
+"Mn c #83A15D",
+"Nn c #6E9365",
+"On c #688E61",
+"Pn c #95AD77",
+"Qn c #93AD81",
+"Rn c #3D6A5D",
+"Sn c #1A4D49",
+"Tn c #336557",
+"Un c #366856",
+"Vn c #1D4D49",
+"Wn c #295A51",
+"Xn c #70996E",
+"Yn c #679173",
+"Zn c #6F936F",
+"`n c #7D996C",
+" o c #6E9066",
+".o c #6F9470",
+"+o c #83A374",
+"@o c #85A265",
+"#o c #75975E",
+"$o c #8EA55A",
+"%o c #DFE5B8",
+"&o c #C5B8D4",
+"*o c #C7C0D1",
+"=o c #D4D0DC",
+"-o c #E2DEE8",
+";o c #E0E2E0",
+">o c #7C996C",
+",o c #3C7346",
+"'o c #4B7C67",
+")o c #40715B",
+"!o c #517F60",
+"~o c #406E59",
+"{o c #386856",
+"]o c #507E5C",
+"^o c #4F805E",
+"/o c #356A5A",
+"(o c #507A5D",
+"_o c #6B8E56",
+":o c #2B6B3F",
+"<o c #7A9B82",
+"[o c #B19BC1",
+"}o c #866AA1",
+"|o c #F3EDF4",
+"1o c #D9E2D3",
+"2o c #739554",
+"3o c #71913F",
+"4o c #88A46B",
+"5o c #719664",
+"6o c #95AB71",
+"7o c #A5B680",
+"8o c #456B5C",
+"9o c #1A4C46",
+"0o c #306152",
+"ao c #3B6F5A",
+"bo c #366A59",
+"co c #255A54",
+"do c #194D4A",
+"eo c #557B5E",
+"fo c #789A69",
+"go c #99AF67",
+"ho c #9FB061",
+"io c #8CA666",
+"jo c #94AA67",
+"ko c #9AAD65",
+"lo c #9BAE5E",
+"mo c #99AD58",
+"no c #98AB5B",
+"oo c #819F5A",
+"po c #7E994E",
+"qo c #C4C793",
+"ro c #F5F1F2",
+"so c #C7C1D1",
+"to c #D4D0DE",
+"uo c #D9D4E0",
+"vo c #E2DFE8",
+"wo c #E1DEE7",
+"xo c #E9E6EB",
+"yo c #F2F1EF",
+"zo c #869D73",
+"Ao c #3E7845",
+"Bo c #47765F",
+"Co c #295B4E",
+"Do c #3F6D57",
+"Eo c #598863",
+"Fo c #25584E",
+"Go c #326355",
+"Ho c #346656",
+"Io c #59845E",
+"Jo c #608C67",
+"Ko c #3C705E",
+"Lo c #6A8A60",
+"Mo c #598240",
+"No c #517D5E",
+"Oo c #C8D5CE",
+"Po c #AC98BF",
+"Qo c #7C5F99",
+"Ro c #DBE2C2",
+"So c #8DA25A",
+"To c #849E49",
+"Uo c #799A65",
+"Vo c #85A16E",
+"Wo c #8CA26E",
+"Xo c #396559",
+"Yo c #1E5750",
+"Zo c #316354",
+"`o c #396B5B",
+" p c #42745C",
+".p c #32695A",
+"+p c #31665B",
+"@p c #24564F",
+"#p c #144945",
+"$p c #2E5D4D",
+"%p c #567D57",
+"&p c #6E955B",
+"*p c #6E9267",
+"=p c #6E9264",
+"-p c #809E61",
+";p c #8CA65F",
+">p c #89A76D",
+",p c #769A5C",
+"'p c #97A96F",
+")p c #F0F5D9",
+"!p c #9D86B3",
+"~p c #B1AABD",
+"{p c #EEECEF",
+"]p c #BCAFCC",
+"^p c #B9A5C8",
+"/p c #A0B58A",
+"(p c #467C43",
+"_p c #3E6E58",
+":p c #487459",
+"<p c #68915C",
+"[p c #608B5D",
+"}p c #47775A",
+"|p c #426C54",
+"1p c #396B56",
+"2p c #3E6B54",
+"3p c #668B60",
+"4p c #69926D",
+"5p c #5C8666",
+"6p c #7D9851",
+"7p c #537E44",
+"8p c #8EA798",
+"9p c #DCD3E4",
+"0p c #EAEECF",
+"ap c #8DA34D",
+"bp c #71914A",
+"cp c #8DA571",
+"dp c #74935E",
+"ep c #1E5A4C",
+"fp c #255E58",
+"gp c #356758",
+"hp c #3A6B5F",
+"ip c #588663",
+"jp c #4B795A",
+"kp c #336150",
+"lp c #26564C",
+"mp c #477359",
+"np c #5C8763",
+"op c #638F6B",
+"pp c #5F8B6A",
+"qp c #739563",
+"rp c #879E55",
+"sp c #88A153",
+"tp c #86A56F",
+"up c #729A72",
+"vp c #74985B",
+"wp c #D0DAB0",
+"xp c #D3C7DD",
+"yp c #E2DFE9",
+"zp c #B4A7C6",
+"Ap c #B099C0",
+"Bp c #C3D2A6",
+"Cp c #49784F",
+"Dp c #47755D",
+"Ep c #7B9A5D",
+"Fp c #779B5D",
+"Gp c #508062",
+"Hp c #67855B",
+"Ip c #769668",
+"Jp c #376B5C",
+"Kp c #47735E",
+"Lp c #799861",
+"Mp c #85A26B",
+"Np c #7A995F",
+"Op c #62883C",
+"Pp c #83A178",
+"Qp c #BEBCCF",
+"Rp c #83669E",
+"Sp c #CDC0D9",
+"Tp c #DAE0C0",
+"Up c #89A359",
+"Vp c #95A955",
+"Wp c #9DAE7D",
+"Xp c #456F5A",
+"Yp c #2C6546",
+"Zp c #497857",
+"`p c #719766",
+" q c #457560",
+".q c #4E7B5A",
+"+q c #406E58",
+"@q c #2B5E51",
+"#q c #3A6D5D",
+"$q c #53826C",
+"%q c #689374",
+"&q c #81A26D",
+"*q c #8EA75F",
+"=q c #89A35B",
+"-q c #789D6C",
+";q c #709658",
+">q c #B0BF91",
+",q c #EFECEB",
+"'q c #252224",
+")q c #90899D",
+"!q c #A49DB1",
+"~q c #C9C3D3",
+"{q c #D8D4DF",
+"]q c #E0DEE7",
+"^q c #A897BC",
+"/q c #D4C7DD",
+"(q c #C3CFB3",
+"_q c #588258",
+":q c #678B5C",
+"<q c #8BA767",
+"[q c #6D9362",
+"}q c #44765D",
+"|q c #49745A",
+"1q c #829D66",
+"2q c #7B9B69",
+"3q c #40725C",
+"4q c #8EA766",
+"5q c #829D4E",
+"6q c #5B8642",
+"7q c #74945F",
+"8q c #D9E1CD",
+"9q c #B6A3C6",
+"0q c #CABBD5",
+"aq c #E0E6C7",
+"bq c #9FAD5E",
+"cq c #CECF9B",
+"dq c #BAC8BE",
+"eq c #47714D",
+"fq c #346738",
+"gq c #4B7657",
+"hq c #4D7760",
+"iq c #7B9F69",
+"jq c #6F9367",
+"kq c #427459",
+"lq c #5E8A5F",
+"mq c #5F8A67",
+"nq c #578361",
+"oq c #4A7B5D",
+"pq c #447862",
+"qq c #4B7D69",
+"rq c #5A856E",
+"sq c #75976F",
+"tq c #91A861",
+"uq c #8EA866",
+"vq c #799D5B",
+"wq c #98AD7F",
+"xq c #E7EEE1",
+"yq c #B9B3C4",
+"zq c #D8D5DF",
+"Aq c #DCD9E2",
+"Bq c #E4E1E9",
+"Cq c #E9E8EC",
+"Dq c #9D88B3",
+"Eq c #C9BAD4",
+"Fq c #CAD6C5",
+"Gq c #729459",
+"Hq c #769850",
+"Iq c #8BAA77",
+"Jq c #628B68",
+"Kq c #3E7259",
+"Lq c #6D8E63",
+"Mq c #8EAA6D",
+"Nq c #668E64",
+"Oq c #799761",
+"Pq c #98AB58",
+"Qq c #6C8F62",
+"Rq c #C8D1C0",
+"Sq c #D9E0B6",
+"Tq c #D2DAAC",
+"Uq c #95A49C",
+"Vq c #3C6741",
+"Wq c #4B7B40",
+"Xq c #4B794E",
+"Yq c #5B855C",
+"Zq c #6F8D63",
+"`q c #41715C",
+" r c #4F7F58",
+".r c #6F945C",
+"+r c #799B68",
+"@r c #6D935D",
+"#r c #628D5A",
+"$r c #53815E",
+"%r c #3F7463",
+"&r c #507D66",
+"*r c #608868",
+"=r c #779464",
+"-r c #90A765",
+";r c #81A15F",
+">r c #93AB76",
+",r c #DCE5CD",
+"'r c #E6E3EB",
+")r c #EAE9EE",
+"!r c #927BAA",
+"~r c #A593BC",
+"{r c #BCABCB",
+"]r c #CFD9C5",
+"^r c #7B9A5C",
+"/r c #7C9C52",
+"(r c #87A46C",
+"_r c #568262",
+":r c #547D5F",
+"<r c #95A662",
+"[r c #91AA6F",
+"}r c #5A8A6F",
+"|r c #668C64",
+"1r c #88A04A",
+"2r c #779849",
+"3r c #85A479",
+"4r c #DAE1D3",
+"5r c #B8AACB",
+"6r c #674287",
+"7r c #653E84",
+"8r c #AA9DC0",
+"9r c #A397BB",
+"0r c #AE9DC2",
+"ar c #D6D1E5",
+"br c #C2D1BB",
+"cr c #799968",
+"dr c #5C8748",
+"er c #3C7341",
+"fr c #55804A",
+"gr c #8AA14B",
+"hr c #759158",
+"ir c #517E55",
+"jr c #608751",
+"kr c #789760",
+"lr c #7B9B61",
+"mr c #789959",
+"nr c #719356",
+"or c #61895C",
+"pr c #598267",
+"qr c #7A9664",
+"rr c #7F9E63",
+"sr c #799C5C",
+"tr c #BFCCA2",
+"ur c #E3DAE8",
+"vr c #595461",
+"wr c #A9A2B5",
+"xr c #DEDCE4",
+"yr c #927BAB",
+"zr c #704E8F",
+"Ar c #A28DB8",
+"Br c #9B86B3",
+"Cr c #B7A2C5",
+"Dr c #BECBAD",
+"Er c #729554",
+"Fr c #84A05F",
+"Gr c #6E9361",
+"Hr c #57835D",
+"Ir c #839D5C",
+"Jr c #ABB659",
+"Kr c #87A370",
+"Lr c #739A76",
+"Mr c #85A056",
+"Nr c #74924A",
+"Or c #84A480",
+"Pr c #BBBDC7",
+"Qr c #C1B2D0",
+"Rr c #A996BE",
+"Sr c #694589",
+"Tr c #C3B3D1",
+"Ur c #CCCAD3",
+"Vr c #C0CFAC",
+"Wr c #A0B786",
+"Xr c #7E9C6B",
+"Yr c #72914A",
+"Zr c #7E993B",
+"`r c #698D46",
+" s c #4E7E4A",
+".s c #4C7E46",
+"+s c #5E8749",
+"@s c #6C8F47",
+"#s c #6E9245",
+"$s c #618A41",
+"%s c #688E40",
+"&s c #719444",
+"*s c #608949",
+"=s c #5E8647",
+"-s c #6E8F4B",
+";s c #6E9043",
+">s c #97A969",
+",s c #E6E5D2",
+"'s c #282527",
+")s c #57525F",
+"!s c #9991A5",
+"~s c #BDB7CB",
+"{s c #E5E2EA",
+"]s c #907AA9",
+"^s c #AB94BC",
+"/s c #B7C39E",
+"(s c #749646",
+"_s c #698D60",
+":s c #698C5A",
+"<s c #98AB5E",
+"[s c #A8B761",
+"}s c #8AA45A",
+"|s c #849E51",
+"1s c #92A75E",
+"2s c #9CB295",
+"3s c #C2C6D2",
+"4s c #795693",
+"5s c #623982",
+"6s c #C0B0CE",
+"7s c #BAA7C9",
+"8s c #BBBBC6",
+"9s c #AABE9D",
+"0s c #9EB57A",
+"as c #A0B67C",
+"bs c #84A171",
+"cs c #6F9267",
+"ds c #76996B",
+"es c #799D68",
+"fs c #85A46F",
+"gs c #799A6B",
+"hs c #9AB176",
+"is c #93AC78",
+"js c #92AC78",
+"ks c #9BB172",
+"ls c #A1B064",
+"ms c #98A74F",
+"ns c #CCD39A",
+"os c #292628",
+"ps c #BDB5CA",
+"qs c #E6E4EB",
+"rs c #9079A9",
+"ss c #9F85B3",
+"ts c #BBC294",
+"us c #7C9740",
+"vs c #809C5C",
+"ws c #759762",
+"xs c #92A757",
+"ys c #8DA349",
+"zs c #98A85B",
+"As c #A9B784",
+"Bs c #CFD8C8",
+"Cs c #9479AA",
+"Ds c #603580",
+"Es c #896DA2",
+"Fs c #BBA9CA",
+"Gs c #B8A5C7",
+"Hs c #B4A2C6",
+"Is c #AC9DC3",
+"Js c #A497BB",
+"Ks c #9D92B6",
+"Ls c #988FB1",
+"Ms c #9B92B5",
+"Ns c #9E94BA",
+"Os c #A497BE",
+"Ps c #AE9EC4",
+"Qs c #B3A1C5",
+"Rs c #B2A1C5",
+"Ss c #A695B9",
+"Ts c #C7C1C5",
+"Us c #DCE3B3",
+"Vs c #E4EEC3",
+"Ws c #A490BB",
+"Xs c #2A2729",
+"Ys c #5D5866",
+"Zs c #948EA1",
+"`s c #BDB6CB",
+" t c #9276A8",
+".t c #B5BFA3",
+"+t c #7C9A51",
+"@t c #76965C",
+"#t c #6F9561",
+"$t c #8EA555",
+"%t c #A1AE61",
+"&t c #ABB981",
+"*t c #D9E2C3",
+"=t c #EFEBF3",
+"-t c #673F85",
+";t c #653C84",
+">t c #663C83",
+",t c #8D72A6",
+"'t c #C1B3D1",
+")t c #653D85",
+"!t c #2D2A2C",
+"~t c #5C5865",
+"{t c #BFB6CB",
+"]t c #ABA4B7",
+"^t c #E3E1EA",
+"/t c #EBEAED",
+"(t c #9882AF",
+"_t c #84639C",
+":t c #B4BFB7",
+"<t c #7B9E5D",
+"[t c #71934E",
+"}t c #ACBA7F",
+"|t c #DADEBC",
+"1t c #E8E6F1",
+"2t c #C4B5D2",
+"3t c #2F2D2F",
+"4t c #9690A3",
+"5t c #C1B9CD",
+"6t c #A08EB6",
+"7t c #9C85B3",
+"8t c #8E76A9",
+"9t c #785794",
+"0t c #C8C4CD",
+"at c #8AA56A",
+"bt c #688D3C",
+"ct c #AFBD86",
+"dt c #CFCADD",
+"et c #947AAB",
+"ft c #643D84",
+"gt c #343234",
+"ht c #5C5764",
+"it c #958FA2",
+"jt c #C1BACE",
+"kt c #C7C2D0",
+"lt c #DEDCE5",
+"mt c #B0A1C3",
+"nt c #D2C3DA",
+"ot c #C9D8AC",
+"pt c #9CB275",
+"qt c #F4F6D7",
+"rt c #B6A4C7",
+"st c #5F3580",
+"tt c #373638",
+"ut c #5E5A67",
+"vt c #9892A5",
+"wt c #C0B8CC",
+"xt c #D1CED9",
+"yt c #DAD8E2",
+"zt c #C0B5D0",
+"At c #9077AA",
+"Bt c #947BAC",
+"Ct c #B2A6BF",
+"Dt c #AA9CBA",
+"Et c #B9A8CA",
+"Ft c #3B393C",
+"Gt c #66616F",
+"Ht c #9B95A7",
+"It c #C2BACD",
+"Jt c #C2BBCC",
+"Kt c #DAD7E1",
+"Lt c #CCC5D7",
+"Mt c #714F8E",
+"Nt c #8B70A5",
+"Ot c #AA97BF",
+"Pt c #9680AF",
+"Qt c #7D619A",
+"Rt c #3F3E40",
+"St c #635F6C",
+"Tt c #9D96A8",
+"Ut c #C3BDD0",
+"Vt c #CECAD6",
+"Wt c #DAD5E1",
+"Xt c #7A5D97",
+"Yt c #424144",
+"Zt c #686371",
+"`t c #A09AAC",
+" u c #E2E0E9",
+".u c #EBEAEF",
+"+u c #725191",
+"@u c #927AAB",
+"#u c #6D498B",
+"$u c #464649",
+"%u c #6C6875",
+"&u c #A9A3B5",
+"*u c #D2CFDA",
+"=u c #ECEBEE",
+"-u c #A896BC",
+";u c #866BA1",
+">u c #7A5D98",
+",u c #4C4B4F",
+"'u c #6B6774",
+")u c #A5A0B1",
+"!u c #C0B6CF",
+"~u c #8D75A8",
+"{u c #71508F",
+"]u c #505053",
+"^u c #6D6976",
+"/u c #A7A2B3",
+"(u c #CCC6D8",
+"_u c #E8E6ED",
+":u c #866BA2",
+"<u c #6A478A",
+"[u c #555559",
+"}u c #736F7C",
+"|u c #AAA5B6",
+"1u c #CCC6D7",
+"2u c #EDEDF1",
+"3u c #9078A9",
+"4u c #5A5A5E",
+"5u c #7D7987",
+"6u c #B0ABBC",
+"7u c #D6D1DF",
+"8u c #B3A5C6",
+"9u c #6A4489",
+"0u c #5E5E62",
+"au c #7F7C89",
+"bu c #B6B0C1",
+"cu c #D2CDDC",
+"du c #725290",
+"eu c #646568",
+"fu c #827F8C",
+"gu c #B3AEBE",
+"hu c #8D74A6",
+"iu c #775795",
+"ju c #898693",
+"ku c #B7B3C3",
+"lu c #B7AAC8",
+"mu c #A08BB6",
+"nu c #6D6E72",
+"ou c #8A8794",
+"pu c #B7B3C2",
+"qu c #D3CEDD",
+"ru c #886DA2",
+"su c #6A4488",
+"tu c #737377",
+"uu c #8B8894",
+"vu c #D5D0DD",
+"wu c #EAEAED",
+"xu c #9F8BB5",
+"yu c #7B5E98",
+"zu c #77787C",
+"Au c #8F8C99",
+"Bu c #BCB8C6",
+"Cu c #CFC8DA",
+"Du c #9B84B2",
+"Eu c #7B7C80",
+"Fu c #93919D",
+"Gu c #BFBAC8",
+"Hu c #E4E2EA",
+"Iu c #E8E8EC",
+"Ju c #7F8084",
+"Ku c #95929E",
+"Lu c #BEBAC8",
+"Mu c #ECEBF0",
+"Nu c #C4BAD2",
+"Ou c #848589",
+"Pu c #9895A1",
+"Qu c #C2BECB",
+"Ru c #9C87B4",
+"Su c #87898D",
+"Tu c #9D9BA7",
+"Uu c #C3BFCC",
+"Vu c #DBD9E3",
+"Wu c #BEB3CF",
+"Xu c #6C478A",
+"Yu c #9E89B6",
+"Zu c #8A8C90",
+"`u c #A4A1AD",
+" v c #C9C5D1",
+".v c #E4E0E9",
+"+v c #83679E",
+"@v c #8F9094",
+"#v c #A2A0AB",
+"$v c #CBC7D3",
+"%v c #BFB5CE",
+"&v c #929498",
+"*v c #A5A3AE",
+"=v c #C9C6D2",
+"-v c #95979B",
+";v c #AAA8B4",
+">v c #CCC9D4",
+",v c #C9C1D6",
+"'v c #745593",
+")v c #989A9E",
+"!v c #AEACB7",
+"~v c #D0CDD8",
+"{v c #EFEFF2",
+"]v c #9580AE",
+"^v c #AFADB8",
+"/v c #D0CED9",
+"(v c #DCD8E5",
+"_v c #82679E",
+":v c #9FA0A4",
+"<v c #B1AFBA",
+"[v c #EAE8ED",
+"}v c #AE9EC1",
+"|v c #A3A4A7",
+"1v c #B4B2BC",
+"2v c #D1CFD9",
+"3v c #81649C",
+"4v c #A4A5A9",
+"5v c #B6B4BE",
+"6v c #D0CED8",
+"7v c #C6BED3",
+"8v c #A7A8AB",
+"9v c #B7B6C0",
+"0v c #D2D0DA",
+"av c #9985B0",
+"bv c #AAABAE",
+"cv c #B8B6C1",
+"dv c #D3D0DA",
+"ev c #ABACB0",
+"fv c #C3BAD2",
+"gv c #ADAEB2",
+"hv c #BBBAC3",
+"iv c #9A86B1",
+"jv c #775996",
+"kv c #A796BE",
+"lv c #8569A0",
+"mv c #663D86",
+"nv c #AFB0B3",
+"ov c #BDBBC5",
+"pv c #D5D3DD",
+"qv c #7A5C98",
+"rv c #947BAD",
+"sv c #8F7BA5",
+"tv c #B0B1B5",
+"uv c #CDC5DA",
+"vv c #9780B0",
+"wv c #AD9CC2",
+"xv c #B4A4C8",
+"yv c #A595B8",
+"zv c #A59FB1",
+"Av c #69418A",
+"Bv c #B1B2B6",
+"Cv c #BEBCC6",
+"Dv c #E0DFE4",
+"Ev c #AA99BF",
+"Fv c #6E4A8D",
+"Gv c #7B5B99",
+"Hv c #7A5B99",
+"Iv c #6F4C8E",
+"Jv c #684088",
+"Kv c #ACA2BC",
+"Lv c #BEB1D0",
+"Mv c #9B96A7",
+"Nv c #6A418A",
+"Ov c #6B458A",
+"Pv c #745291",
+"Qv c #6D488C",
+"Rv c #7C5C9A",
+"Sv c #B2B3B6",
+"Tv c #BFBDC7",
+"Uv c #E3E2E6",
+"Vv c #AC9AC1",
+"Wv c #7E5F9B",
+"Xv c #9787AA",
+"Yv c #C6C4CC",
+"Zv c #A38EBA",
+"`v c #B7B7BF",
+" w c #B5A7C7",
+".w c #674087",
+"+w c #917CA8",
+"@w c #927AAA",
+"#w c #9D8EB0",
+"$w c #BAACCD",
+"%w c #867697",
+"&w c #8B8B92",
+"*w c #643B84",
+"=w c #B4B4B8",
+"-w c #BFBEC6",
+";w c #9982B1",
+">w c #8365A1",
+",w c #968FA4",
+"'w c #D3CBE1",
+")w c #A29FAB",
+"!w c #6F4A90",
+"~w c #C5BBD3",
+"{w c #9B92AA",
+"]w c #9D8BB3",
+"^w c #633983",
+"/w c #B5B7BA",
+"(w c #C2C1C8",
+"_w c #BDB4CB",
+":w c #8D78A5",
+"<w c #886CA4",
+"[w c #907CA5",
+"}w c #673F86",
+"|w c #6C488A",
+"1w c #6E4A8C",
+"2w c #6B468A",
+"3w c #7F619B",
+"4w c #8C74A5",
+"5w c #C7C7CC",
+"6w c #A293B6",
+"7w c #745493",
+"8w c #6B458C",
+"9w c #6B448B",
+"0w c #684087",
+"aw c #684186",
+"bw c #714E8E",
+"cw c #6C468C",
+"dw c #CFCED1",
+"ew c #8A73A3",
+"fw c #8368A0",
+"gw c #C3C1CA",
+"hw c #7B5F97",
+"iw c #8D74A8",
+"jw c #765593",
+"kw c #6D478C",
+"lw c #735093",
+"mw c #755295",
+"nw c #745194",
+"ow c #6C478C",
+"pw c #B9BBBD",
+"qw c #B9B5C4",
+"rw c #765793",
+"sw c #A08CB8",
+"tw c #9D86B5",
+"uw c #9F94B0",
+"vw c #9E9AA8",
+"ww c #9C9AA5",
+"xw c #9582AB",
+"yw c #663E86",
+"zw c #663D85",
+"Aw c #714E8F",
+"Bw c #9984AF",
+"Cw c #83818C",
+"Dw c #9D8FB0",
+"Ew c #A38ABB",
+"Fw c #8E8D96",
+"Gw c #CFC8DB",
+"Hw c #A19AAE",
+"Iw c #6A428A",
+"Jw c #735191",
+"Kw c #72508F",
+"Lw c #7D5E99",
+"Mw c #7E629C",
+"Nw c #694287",
+"Ow c #B09EC5",
+"Pw c #9B99A5",
+"Qw c #704B90",
+"Rw c #9B8CAD",
+"Sw c #785896",
+"Tw c #937CAD",
+"Uw c #B8A9CB",
+"Vw c #82649F",
+"Ww c #A09BAC",
+"Xw c #9076AA",
+"Yw c #A39FAD",
+"Zw c #653E86",
+"`w c #785895",
+" x c #7B5C98",
+".x c #755391",
+"+x c #6F4B8D",
+"@x c #6E488A",
+"#x c #683F85",
+"$x c #683E85",
+"%x c #693E85",
+"&x c #683D84",
+"*x c #694187",
+"=x c #6F4A8C",
+"-x c #704B8D",
+";x c #765392",
+">x c #81649E",
+",x c #A19CAD",
+"'x c #9786AB",
+")x c #673F87",
+"!x c #8B77A1",
+"~x c #8367A0",
+"{x c #6A458A",
+"]x c #6F4A8E",
+"^x c #714C90",
+"/x c #684188",
+"(x c #6B4589",
+"_x c #724E8E",
+":x c #693F85",
+"<x c #673C83",
+"[x c #673D84",
+"}x c #663C84",
+"|x c #653B83",
+"1x c #664084",
+"2x c #674684",
+"3x c #684C84",
+"4x c #6A5185",
+"5x c #6B5685",
+"6x c #6D5686",
+"7x c #6D5B85",
+"8x c #6E5F85",
+"9x c #6E5E85",
+"0x c #6D5985",
+"ax c #6C5686",
+"bx c #6B5585",
+"cx c #6A4F85",
+"dx c #694B84",
+"ex c #674584",
+"fx c #6A4187",
+"gx c #745191",
+"hx c #6E4A8E",
+"ix c #7F6799",
+"jx c #866AA2",
+"kx c #673B83",
+"lx c #673C84",
+"mx c #674384",
+"nx c #6A5184",
+"ox c #6E5D85",
+"px c #706884",
+"qx c #737381",
+"rx c #757F7E",
+"sx c #788A79",
+"tx c #799076",
+"ux c #7A9475",
+"vx c #7B9873",
+"wx c #7C9A71",
+"xx c #7D9F6F",
+"yx c #7D9E6F",
+"zx c #7EA26D",
+"Ax c #7FA56A",
+"Bx c #7FA46B",
+"Cx c #7DA06D",
+"Dx c #7C9A72",
+"Ex c #7B9773",
+"Fx c #7A9376",
+"Gx c #798E77",
+"Hx c #77877B",
+"Ix c #757C7F",
+"Jx c #727082",
+"Kx c #6F6485",
+"Lx c #6D5A85",
+"Mx c #694C85",
+"Nx c #724F8F",
+"Ox c #BBBCBF",
+"Px c #7A5F95",
+"Qx c #8F75A9",
+"Rx c #704A8C",
+"Sx c #663A82",
+"Tx c #674284",
+"Ux c #6A5384",
+"Vx c #706684",
+"Wx c #737681",
+"Xx c #78887A",
+"Yx c #7C9B71",
+"Zx c #7FA26C",
+"`x c #7FA46C",
+" y c #7EA36C",
+".y c #7EA26C",
+"+y c #7EA16D",
+"@y c #7FA36B",
+"#y c #7FA46A",
+"$y c #799077",
+"%y c #76827C",
+"&y c #726F82",
+"*y c #694B85",
+"=y c #B3B3BB",
+"-y c #775993",
+";y c #6A4287",
+">y c #6B5384",
+",y c #706984",
+"'y c #767E7E",
+")y c #799276",
+"!y c #7D9D70",
+"~y c #7D9D6F",
+"{y c #7B9475",
+"]y c #7D9F6E",
+"^y c #7FA36C",
+"/y c #7FA569",
+"(y c #7C9973",
+"_y c #798C79",
+":y c #737680",
+"<y c #6E6084",
+"[y c #694A85",
+"}y c #663982",
+"|y c #6D478A",
+"1y c #B0AEB9",
+"2y c #725390",
+"3y c #6B4287",
+"4y c #653982",
+"5y c #6D5C84",
+"6y c #7D9E70",
+"7y c #7C9C71",
+"8y c #76857B",
+"9y c #747B7F",
+"0y c #706983",
+"ay c #6E6184",
+"by c #6C5984",
+"cy c #6B5485",
+"dy c #694886",
+"ey c #694885",
+"fy c #6A4D85",
+"gy c #6C5A85",
+"hy c #6E6284",
+"iy c #716A82",
+"jy c #737380",
+"ky c #757D7E",
+"ly c #78877A",
+"my c #7B9375",
+"ny c #7FA56B",
+"oy c #716B83",
+"py c #6B5285",
+"qy c #663F84",
+"ry c #653882",
+"sy c #A9A4B4",
+"ty c #74787F",
+"uy c #7A9375",
+"vy c #7EA36B",
+"wy c #788A7A",
+"xy c #716982",
+"yy c #684485",
+"zy c #653780",
+"Ay c #6C4488",
+"By c #6E478A",
+"Cy c #6E488B",
+"Dy c #643780",
+"Ey c #653A82",
+"Fy c #684585",
+"Gy c #6D5C85",
+"Hy c #716C82",
+"Iy c #747B7E",
+"Jy c #798D78",
+"Ky c #7C9B72",
+"Ly c #7C9D70",
+"My c #716D83",
+"Ny c #8E75A7",
+"Oy c #8E76A7",
+"Py c #9D89B3",
+"Qy c #643A82",
+"Ry c #727381",
+"Sy c #799177",
+"Ty c #6E5C84",
+"Uy c #684984",
+"Vy c #673A82",
+"Wy c #745391",
+"Xy c #81639C",
+"Yy c #6C4589",
+"Zy c #664184",
+"`y c #737581",
+" z c #77847C",
+".z c #706484",
+"+z c #684685",
+"@z c #6B4387",
+"#z c #AF9EC3",
+"$z c #745293",
+"%z c #8A7D9B",
+"&z c #A097AF",
+"*z c #704C8E",
+"=z c #9B90AB",
+"-z c #6C498C",
+";z c #947AAF",
+">z c #8D8E93",
+",z c #8F9096",
+"'z c #9784AC",
+")z c #643B85",
+"!z c #73508F",
+"~z c #664183",
+"{z c #6F6084",
+"]z c #76837B",
+"^z c #7EA16E",
+"/z c #7B9476",
+"(z c #74797F",
+"_z c #653881",
+":z c #633A83",
+"<z c #694D85",
+"[z c #6F6584",
+"}z c #7B9674",
+"|z c #7A9575",
+"1z c #737481",
+"2z c #6B5185",
+"3z c #8465A3",
+"4z c #7C7D80",
+"5z c #8769A3",
+"6z c #9386A6",
+"7z c #B29EC7",
+"8z c #909096",
+"9z c #8F8F96",
+"0z c #B5ABC5",
+"az c #9785AC",
+"bz c #716983",
+"cz c #798F78",
+"dz c #714D8E",
+"ez c #735392",
+"fz c #684684",
+"gz c #6F6185",
+"hz c #7B9774",
+"iz c #75807D",
+"jz c #8B6FA6",
+"kz c #9F9DA9",
+"lz c #765494",
+"mz c #8F80A3",
+"nz c #6F4B8E",
+"oz c #876DA2",
+"pz c #886EA2",
+"qz c #9680AE",
+"rz c #663882",
+"sz c #684584",
+"tz c #75817D",
+"uz c #674483",
+"vz c #735090",
+"wz c #706584",
+"xz c #76867B",
+"yz c #77867B",
+"zz c #6E5D84",
+"Az c #663B83",
+"Bz c #714E90",
+"Cz c #765495",
+"Dz c #87739C",
+"Ez c #8366A0",
+"Fz c #7A9276",
+"Gz c #727081",
+"Hz c #6A4F84",
+"Iz c #683D85",
+"Jz c #775694",
+"Kz c #77887B",
+"Lz c #6E5C85",
+"Mz c #673E85",
+"Nz c #88749D",
+"Oz c #82659F",
+"Pz c #706783",
+"Qz c #684484",
+"Rz c #6B4488",
+"Sz c #7A9177",
+"Tz c #6C5585",
+"Uz c #866AA0",
+"Vz c #836E9A",
+"Wz c #8266A0",
+"Xz c #78897A",
+"Yz c #78887B",
+"Zz c #664083",
+"`z c #704C8D",
+" A c #674383",
+".A c #706883",
+"+A c #747880",
+"@A c #6A4B85",
+"#A c #7D6596",
+"$A c #8467A0",
+"%A c #7E5F9A",
+"&A c #653781",
+"*A c #694A84",
+"=A c #747C7F",
+"-A c #6E5F84",
+";A c #B0A0C5",
+">A c #B5A5C8",
+",A c #684384",
+"'A c #663E83",
+")A c #8E74A8",
+"!A c #7E6696",
+"~A c #673F83",
+"{A c #6D4A8D",
+"]A c #7A5998",
+"^A c #6D5586",
+"/A c #6A468A",
+"(A c #76837C",
+"_A c #727181",
+":A c #755392",
+"<A c #7F619D",
+"[A c #877A99",
+"}A c #94949B",
+"|A c #9F88B6",
+"1A c #9783AD",
+"2A c #8C8B94",
+"3A c #9782AD",
+"4A c #643781",
+"5A c #674084",
+"6A c #6F4B8C",
+"7A c #643881",
+"8A c #6F6284",
+"9A c #77837C",
+"0A c #6B5184",
+"aA c #8466A2",
+"bA c #958FA1",
+"cA c #9179AC",
+"dA c #AFA2C1",
+"eA c #69438A",
+"fA c #643882",
+"gA c #6D5984",
+"hA c #78897B",
+"iA c #6C5285",
+"jA c #7C9675",
+"kA c #907BA7",
+"lA c #A49EB1",
+"mA c #795A97",
+"nA c #A793BD",
+"oA c #9E87B5",
+"pA c #A09DAB",
+"qA c #8D77A4",
+"rA c #726C82",
+"sA c #706784",
+"tA c #6B5084",
+"uA c #798B79",
+"vA c #7FA669",
+"wA c #694288",
+"xA c #6D478D",
+"yA c #8B70A6",
+"zA c #6C5385",
+"AA c #747A7F",
+"BA c #6E6185",
+"CA c #B4A6C6",
+"DA c #8C72A7",
+"EA c #798D79",
+"FA c #8F77AA",
+"GA c #726E82",
+"HA c #7FA66A",
+"IA c #9E8CB4",
+"JA c #683F88",
+"KA c #9482A8",
+"LA c #8D76A7",
+"MA c #747980",
+"NA c #A28EB8",
+"OA c #9889AC",
+"PA c #7F659B",
+"QA c #663F86",
+"RA c #856C9F",
+"SA c #A096B0",
+"TA c #6A4A84",
+"UA c #77837D",
+"VA c #716C83",
+"WA c #6D488B",
+"XA c #93939A",
+"YA c #714B92",
+"ZA c #77847D",
+"`A c #716984",
+" B c #B0A4C2",
+".B c #9A87B0",
+"+B c #8D75A7",
+"@B c #694086",
+"#B c #663E84",
+"$B c #737282",
+"%B c #663D83",
+"&B c #7F609D",
+"*B c #9796A0",
+"=B c #6E498F",
+"-B c #798B78",
+";B c #6E5B85",
+">B c #8F76A8",
+",B c #A396B4",
+"'B c #633B84",
+")B c #B6A5C8",
+"!B c #83669F",
+"~B c #706485",
+"{B c #747D7E",
+"]B c #684284",
+"^B c #6A4C84",
+"/B c #798F77",
+"(B c #6B5085",
+"_B c #9981B0",
+":B c #957DAE",
+"<B c #77857C",
+"[B c #78877B",
+"}B c #694985",
+"|B c #7B9575",
+"1B c #694984",
+"2B c #788D79",
+"3B c #78867B",
+"4B c #673F84",
+"5B c #6A4387",
+"6B c #886CA3",
+"7B c #77857B",
+"8B c #757D7F",
+"9B c #673E84",
+"0B c #684288",
+"aB c #735192",
+"bB c #714D90",
+"cB c #664085",
+"dB c #76867C",
+"eB c #684383",
+"fB c #6B4388",
+"gB c #77877C",
+"hB c #6B4489",
+"iB c #9786AC",
+"jB c #643C85",
+"kB c #AF9EC4",
+"lB c #785696",
+"mB c #9B98A5",
+"nB c #A7A1B3",
+"oB c #6F4B8F",
+"pB c #684084",
+"qB c #683F84",
+"rB c #757E7E",
+"sB c #AE9DC3",
+"tB c #B5A7C9",
+"uB c #704D8F",
+"vB c #8B6DA9",
+"wB c #7F5F9E",
+"xB c #6B468B",
+"yB c #896EA5",
+"zB c #A997BF",
+"AB c #8569A2",
+"BB c #A197B1",
+"CB c #6C468B",
+"DB c #6B438A",
+"EB c #6A448A",
+"FB c #7FA16E",
+"GB c #80A868",
+"HB c #7B9673",
+"IB c #6C5185",
+"JB c #6E5A85",
+"KB c #80A768",
+"LB c #6B4D86",
+"MB c #7B5D99",
+"NB c #737780",
+"OB c #653C85",
+"PB c #6C5986",
+"QB c #7F639B",
+"RB c #9076A9",
+"SB c #B7A7CA",
+"TB c #9F99AC",
+"UB c #80659C",
+"VB c #B19EC5",
+"WB c #A396B5",
+"XB c #653C86",
+"YB c #6B478B",
+"ZB c #937CAB",
+"`B c #AD9AC2",
+" C c #A99ABC",
+".C c #937EA9",
+"+C c #AE9CC2",
+"@C c #82639F",
+"#C c #755493",
+"$C c #9887AC",
+"%C c #D8D2E3",
+"&C c #876BA1",
+"*C c #908E98",
+"=C c #704990",
+"-C c #B1A1C5",
+";C c #9580AC",
+">C c #9B83B2",
+",C c #A996BF",
+"'C c #A18BB7",
+")C c #9E9DA6",
+"!C c #694289",
+"~C c #B3A3C7",
+"{C c #A998BC",
+"]C c #B6A7C9",
+"^C c #C7BBD6",
+"/C c #755394",
+"(C c #9781AE",
+"_C c #AB99C0",
+":C c #9F8AB7",
+"<C c #947CAC",
+"[C c #AC9BC1",
+"}C c #6D488D",
+"|C c #9986AE",
+"1C c #9C8EAF",
+"2C c #613782",
+"3C c #A895BE",
+"4C c #83699E",
+"5C c #643983",
+"6C c #9A88AF",
+"7C c #9F93B0",
+"8C c #704D90",
+"9C c #A38DBB",
+"0C c #886EA5",
+"aC c #A093B1",
+"bC c #9F93B1",
+"cC c #663D87",
+"dC c #9885AF",
+"eC c #9279AB",
+"fC c #B2ADBE",
+"gC c #9886AD",
+"hC c #8C76A5",
+"iC c #919197",
+"jC c #907AA7",
+"kC c #967EAF",
+"lC c #6A438A",
+"mC c #7B5A99",
+"nC c #735292",
+"oC c #7F619C",
+"pC c #8364A1",
+"qC c #6C468A",
+"rC c #7B5A9A",
+"sC c #643C83",
+"tC c #735092",
+"uC c #C2BFCA",
+"vC c #8C8D92",
+"wC c #A799BA",
+"xC c #8A6FA5",
+"yC c #9F89B5",
+"zC c #6C488C",
+"AC c #795897",
+"BC c #A694BB",
+"CC c #A2A2A9",
+"DC c #B2ADBD",
+"EC c #7D5F9B",
+"FC c #D2C9E0",
+"GC c #765295",
+"HC c #A9A8B1",
+"IC c #9D9DA3",
+"JC c #CBBDDC",
+"KC c #8365A0",
+"LC c #B3AFBD",
+"MC c #C5C4CC",
+"NC c #6E498D",
+"OC c #998AAE",
+"PC c #9A9AA1",
+"QC c #B1A0C5",
+"RC c #AB9ABE",
+"SC c #CBC0DC",
+"TC c #A18CB8",
+"UC c #8D76A5",
+"VC c #765395",
+"WC c #B6B5BC",
+"XC c #ADABB6",
+"YC c #B29FC7",
+"ZC c #AD9BC1",
+"`C c #AEA2C0",
+" D c #BAB0CA",
+".D c #6C458C",
+"+D c #A49DB0",
+"@D c #9E88B4",
+"#D c #643A83",
+"$D c #694189",
+"%D c #C3B6D3",
+"&D c #633883",
+"*D c #AD9CC0",
+"=D c #BBABCE",
+"-D c #AB9BBF",
+";D c #A89BBA",
+">D c #876CA3",
+",D c #8E78A5",
+"'D c #9480A9",
+")D c #A69CB6",
+"!D c #9880AF",
+"~D c #A899BB",
+"{D c #9680B0",
+"]D c #B09FC4",
+"^D c #BAABCC",
+"/D c #694088",
+"(D c #6C448C",
+"_D c #6F488F",
+":D c #9A9AA2",
+"<D c #AB9AC1",
+"[D c #775595",
+"}D c #82669F",
+"|D c #724F90",
+"1D c #7D5E9B",
+"2D c #846A9F",
+"3D c #9E8FB2",
+"4D c #9077AB",
+"5D c #8B71A7",
+"6D c #795A95",
+"7D c #765594",
+"8D c #CFC9DA",
+"9D c #9984B0",
+"0D c #6A438B",
+"aD c #937DAB",
+"bD c #80649B",
+"cD c #E3E3E5",
+"dD c #AD9BC2",
+"eD c #D6D5DD",
+"fD c #9782AE",
+"gD c #BEC0C2",
+"hD c #9D91AE",
+"iD c #8B73A5",
+"jD c #643A84",
+"kD c #A392B7",
+"lD c #C1C3C5",
+"mD c #B8AEC8",
+"nD c #9782AF",
+"oD c #B7A8CA",
+"pD c #BFB2D0",
+"qD c #BAACCC",
+"rD c #BFB3D1",
+"sD c #B2A1C6",
+"tD c #603680",
+"uD c #E4DFEC",
+"vD c #E6E2ED",
+"wD c #B4A4C7",
+"xD c #7D619B",
+"yD c #F6F5F9",
+"zD c #BBADCD",
+"AD c #EFECF3",
+"BD c #D8D1E4",
+"CD c #C9BFD9",
+"DD c #ECE9F2",
+"ED c #E8E4EF",
+"FD c #C4BAD5",
+"GD c #E5E1ED",
+"HD c #FDFBFD",
+"ID c #CEC4DC",
+"JD c #E7E3EE",
+"KD c #CEC5DC",
+"LD c #DED8E8",
+"MD c #C9BED8",
+"ND c #E1DCEA",
+"OD c #D2CADF",
+"PD c #C6BAD6",
+"QD c #E0DAE9",
+"RD c #F2F0F6",
+"SD c #F8F6FA",
+"TD c #E3DEEB",
+"UD c #C5BAD5",
+"VD c #F2EFF6",
+"WD c #F1EFF6",
+"XD c #EDEAF2",
+"YD c #F8F5F9",
+"ZD c #F3F1F7",
+"`D c #D3CBE0",
+" E c #B8ABCB",
+".E c #CBC1DA",
+"+E c #C4B9D5",
+"@E c #F3F0F6",
+"#E c #C0B3D1",
+"$E c #C7BCD7",
+"%E c #7C5D98",
+"&E c #8F78AA",
+"*E c #C4B8D4",
+"=E c #CCC2DA",
+"-E c #B2A3C7",
+";E c #EFECF4",
+">E c #D7CFE2",
+",E c #EAE6F0",
+"'E c #D7D0E3",
+")E c #E0DBE9",
+"!E c #A28FBA",
+"~E c #B5A6C9",
+"{E c #D6CEE2",
+"]E c #5E317E",
+"^E c #C3B7D3",
+"/E c #D1C9DF",
+"(E c #C5B9D5",
+"_E c #D9D3E4",
+":E c #C8BDD7",
+"<E c #A18CB7",
+"[E c #E2DDEB",
+"}E c #C9BFD8",
+"|E c #CDC3DB",
+"1E c #D3CADF",
+"2E c #D8D2E4",
+"3E c #C3B7D4",
+"4E c #D0C8DE",
+"5E c #CAC0D9",
+"6E c #AF9FC4",
+"7E c #B4A5C7",
+"8E c #D6CDE1",
+"9E c #D0C7DD",
+"0E c #B9AACB",
+"aE c #BDB0CF",
+"bE c #F0EEF5",
+"cE c #E9E5EF",
+"dE c #A795BE",
+"eE c #5D327E",
+"fE c #F5F3F8",
+"gE c #BCAFCF",
+"hE c #DCD6E7",
+"iE c #C3B8D4",
+"jE c #EDEBF3",
+"kE c #C2B6D3",
+"lE c #FBFBFD",
+"mE c #CBC1D9",
+"nE c #ECEAF3",
+"oE c #E9E6F0",
+"pE c #C0B4D2",
+"qE c #F5F3F7",
+"rE c #CDC4DB",
+"sE c #BCAECE",
+"tE c #BBACCD",
+"uE c #613881",
+"vE c #623882",
+"wE c #C1B5D2",
+"xE c #735390",
+"yE c #876FA2",
+"zE c #866DA1",
+"AE c #866EA1",
+"BE c #7A5E97",
+"CE c #6F4D8D",
+"DE c #876EA1",
+"EE c #876FA1",
+"FE c #80669C",
+"GE c #8F78A7",
+"HE c #E9E9EA",
+"IE c #E8E8E9",
+"JE c #AC9FC0",
+"KE c #D6D5DF",
+"LE c #785A94",
+"ME c #7E639A",
+"NE c #E0E0E5",
+"OE c #C3BCD1",
+"PE c #785B95",
+"QE c #6E4D8D",
+"RE c #765893",
+"SE c #9A86B0",
+"TE c #8F78A8",
+"UE c #CBC6D7",
+"VE c #745591",
+"WE c #735491",
+"XE c #72518F",
+"YE c #CECBD9",
+"ZE c #8A72A3",
+"`E c #C0B8CF",
+" F c #D3D1DD",
+".F c #7C6098",
+"+F c #C3BDD1",
+"@F c #7D6299",
+"#F c #6E4C8C",
+"$F c #DDDDE3",
+"%F c #C6C1D3",
+"&F c #7B5E97",
+"*F c #C8C3D5",
+"=F c #70508F",
+"-F c #C6C0D3",
+";F c #5F337F",
+">F c #603480",
+",F c #A798BB",
+"'F c #704F8E",
+")F c #7F649B",
+"!F c #D2D0DC",
+"~F c #C9C4D5",
+"{F c #A595B9",
+"]F c #8E78A8",
+"^F c #8B73A4",
+"/F c #AB9EBF",
+"(F c #795B96",
+"_F c #71518F",
+":F c #8D76A6",
+"<F c #D4D2DE",
+"[F c #9B88B2",
+"}F c #9986B0",
+"|F c #9C8AB2",
+"1F c #7E629A",
+"2F c #623A83",
+"3F c #C9C5D6",
+"4F c #A697BB",
+"5F c #795C96",
+"6F c #BAB1CA",
+"7F c #BFB8CE",
+"8F c #9987B1",
+"9F c #BBB2CB",
+"0F c #B0A3C2",
+"aF c #AB9FBF",
+"bF c #CAC6D6",
+"cF c #785A95",
+"dF c #B8AFC9",
+"eF c #9682AE",
+"fF c #BBB3CC",
+"gF c #A799BC",
+"hF c #B8AEC9",
+"iF c #8870A3",
+"jF c #B2A6C4",
+"kF c #9F8DB5",
+"lF c #A08FB6",
+"mF c #C4BED2",
+"nF c #775994",
+"oF c #BAB2CB",
+"pF c #7B5F98",
+"qF c #B9B0CA",
+"rF c #AFA3C2",
+"sF c #C8C4D5",
+"tF c #82669C",
+"uF c #B4AAC6",
+"vF c #CBC7D7",
+"wF c #9884AF",
+"xF c #BEB6CD",
+"yF c #917CAA",
+"zF c #B1A5C4",
+"AF c #735391",
+"BF c #CCC8D8",
+"CF c #DCDBE2",
+"DF c #9682AD",
+"EF c #8A73A4",
+"FF c #84699E",
+"GF c #C4BFD2",
+"HF c #AA9BBD",
+"IF c #C6C0D4",
+"JF c #B3A8C5",
+"KF c #BCB4CC",
+"LF c #BBB3CB",
+"MF c #755793",
+"NF c #C1B9CF",
+"OF c #DFE0E5",
+"PF c #795B95",
+"QF c #BEB7CE",
+"RF c #C1BAD0",
+"SF c #BFB8CF",
+"TF c #C5BFD2",
+"UF c #A190B6",
+"VF c #E1E3E7",
+"WF c #D8D6DF",
+"XF c #D7D6DF",
+"YF c #DFDFE4",
+"ZF c #9784AF",
+"`F c #B0A4C3",
+" G c #927DAA",
+".G c #A090B6",
+"+G c #81669C",
+"@G c #BDB5CD",
+"#G c #BDB4CC",
+"$G c #7C6099",
+"%G c #9B88B1",
+"&G c #D0CDDB",
+"*G c #927CAA",
+"=G c #CAC5D6",
+"-G c #B2A7C4",
+";G c #9581AD",
+">G c #CDC9D8",
+",G c #8B74A5",
+"'G c #9783AE",
+")G c #A99BBD",
+"!G c #AA9CBE",
+"~G c #947FAC",
+"{G c #CDCAD9",
+"]G c #A292B7",
+"^G c #D5D3DE",
+"/G c #D3D2DD",
+"(G c #9582AE",
+"_G c #8E78A7",
+":G c #D5D4DE",
+"<G c #C5C0D3",
+"[G c #B6ACC7",
+"}G c #8F79A8",
+"|G c #C2BBD0",
+"1G c #856CA0",
+"2G c #D6D4DE",
+"3G c #DEDEE4",
+"4G c #B3A9C5",
+"5G c #B0A5C3",
+"6G c #917AA9",
+"7G c #A494B9",
+"8G c #A394B9",
+"9G c #B7ADC8",
+"0G c #C9C3D5",
+"aG c #BDB6CD",
+"bG c #8C75A6",
+"cG c #C7C1D4",
+"dG c #613681",
+"eG c #927EAB",
+"fG c #5F3480",
+"gG c #8A72A4",
+"hG c #917BA9",
+"iG c #613680",
+"jG c #A393B8",
+"kG c #DAD8E1",
+"lG c #A597BA",
+"mG c #AB9DBF",
+"nG c #ADA1C1",
+"oG c #775A94",
+"pG c #E4E6E8",
+"qG c #E2E5E7",
+"rG c #D0CEDB",
+"sG c #B6ADC8",
+"tG c #A89ABC",
+"uG c #9B89B2",
+"vG c #AEA2C1",
+"wG c #8971A3",
+"xG c #AEA2C2",
+"yG c #BFB7CE",
+"zG c #ADA0C0",
+"AG c #A797BB",
+"BG c #613882",
+"CG c #927DAB",
+"DG c #8F7AA8",
+"EG c #8E77A6",
+"FG c #9078A8",
+"GG c #BEB5CD",
+"HG c #8870A2",
+"IG c #D1CFDC",
+"JG c #603681",
+"KG c #907AA8",
+"LG c #E1E1E5",
+"MG c #A291B7",
+"NG c #7D6199",
+"OG c #6F4E8E",
+"PG c #745592",
+"QG c #8972A3",
+"RG c #A08FB5",
+"SG c #D1D0DC",
+"TG c #6F4F8E",
+"UG c #5E317F",
+"VG c #937FAC",
+"WG c #B6ACC8",
+"XG c #603581",
+"YG c #A99CBE",
+"ZG c #623983",
+"`G c #A594B9",
+" H c #AB9DBE",
+".H c #5D2F7E",
+"+H c #AD9FC0",
+"@H c #B7AEC9",
+"#H c #9C8AB3",
+"$H c #623781",
+"%H c #9A88B1",
+"&H c #775893",
+"*H c #8C75A5",
+"=H c #8E77A7",
+"-H c #D4D2DD",
+";H c #DEDFE5",
+">H c #B6ABC7",
+",H c #765894",
+"'H c #9580AD",
+")H c #7C6199",
+"!H c #C7C2D4",
+"~H c #D8D7E0",
+"{H c #81679D",
+"]H c #CFCCDA",
+"^H c #B3A9C6",
+"/H c #B5AAC7",
+"(H c #9E8DB5",
+"_H c #A596BA",
+":H c #C2BAD0",
+"<H c #AA9DBE",
+"[H c #A292B8",
+"}H c #C3BBD0",
+"|H c #C0B9CF",
+"1H c #A99ABD",
+"2H c #B4A8C5",
+"3H c #795D97",
+"4H c #AEA1C1",
+"5H c #B1A6C4",
+"6H c #A191B7",
+"7H c #B3A7C5",
+"8H c #AC9FBF",
+"9H c #937EAB",
+"0H c #9985AF",
+"aH c #9A87B1",
+"bH c #81659C",
+"cH c #7D6595",
+"dH c #7D6594",
+"eH c #7C6493",
+"fH c #7B6392",
+"gH c #796290",
+"hH c #8468A1",
+"iH c #78608F",
+"jH c #8568A1",
+"kH c #755F8C",
+"lH c #735D89",
+"mH c #795C97",
+"nH c #705A86",
+"oH c #6E5883",
+"pH c #6B5681",
+"qH c #8669A3",
+"rH c #69547E",
+"sH c #66527B",
+"tH c #866AA3",
+"uH c #645079",
+"vH c #876BA4",
+"wH c #624E76",
+"xH c #8B6FA7",
+"yH c #634E79",
+"zH c #78529A",
+"AH c #8B6DA8",
+"BH c #8769A5",
+"CH c #8869A5",
+"DH c #886AA6",
+"EH c #8B6EA8",
+"FH c #795799",
+"GH c #663988",
+"HH c #575062",
+"IH c #5E4F6F",
+"JH c #5B4D6C",
+"KH c #5D4D6C",
+"LH c #5C4D6C",
+"MH c #5B4C6B",
+"NH c #5A4B6A",
+"OH c #5A4B69",
+"PH c #594A69",
+"QH c #5A4C6A",
+"RH c #5D4F6C",
+". . + @ # # $ % # $ # # @ % & $ % # $ & # @ # # % % # @ % # @ % # % @ & % $ # % @ # % @ % # * # # @ & % @ # # @ % # $ % % @ # # % % & @ @ # @ % # % @ # % $ & @ % # @ % # # @ # % $ # % @ # # @ # & $ @ # $ # # @ @ & $ @ & $ # # @ # # % @ # @ @ # @ % # # @ & # $ % # $ # # @ % # * % # $ & % @ # # % % # $ % # @ # # % @ & % $ # % @ # % @ # # * # % @ & % @ # # @ % # $ # % @ # # @ % & $ @ # @ % # % @ # @ $ & @ % # @ % # # @ # % @ # $ = - ",
+". . ; > , ' ) ! ~ { ] ^ / ( _ : ] ( < [ ! } | ^ 1 / 2 3 ] 4 5 6 7 8 { 9 [ { 0 a : , a b c ( : ( ] b a ] / ] ~ d e 2 f 4 g / g h b 3 ; 5 / i 1 j ~ k k _ e j a l m 4 1 3 [ 0 n g [ < a ] } [ 0 o 8 p o k q j | i 3 ! 0 j | a / r g l 5 h ! j _ 1 | [ | e c [ ) 2 ^ ) 4 2 : g h / [ , ) s g d a 8 3 1 i l b t < ! ( } 8 _ m u v s f 2 g o h g l , s { 4 m l [ 6 / ! ^ < m h f [ s / ( h d l ; / b q 5 3 i w x _ 5 3 a b ] ( e } c , f 4 g 3 , y z A ",
+". . * 6 B = 4 C D x v * ! D E , C F ^ C E 7 G # c , % 7 v C 2 F D i s % 9 _ D H x D I , * 9 2 E q G C J [ J * s G @ 4 B ; 7 K * 4 _ - _ G @ L 4 # 7 ' D t F J ^ v C F a = J ] K K 7 M I _ A A x I # 4 H @ g ~ & ! B A 7 ; N t K = F ' . ~ r * ~ G B q ~ O I 6 O C a M M 6 K M c . A _ B P ~ C K c F % ( h # [ D * 0 E * h ( + i 2 * 9 ] $ G h * p N B ~ F C H 4 C A [ D . 4 M J 7 B D ! t - c 9 % 7 , & [ v O L I p t H C P , D N 8 M I L O b Q A ",
+". . % J . % E . . 9 # - I + . J - . M R . v O . K K . A % . B @ . M B . = O . @ N - $ p . # K . & A . - F + . N * . M + . ; . . J @ . K & . C ; . B C . = A . * * . $ N . # F R # = R & K . - p . R ; . . I D . p $ . K # . A R ; l / ] N J . D * - O A . $ ; . $ B . R F R . ! m 2 A . - M - . N $ . H B . * S o M 4 - O % . B $ . * v . D J . [ 3 % & = . + F . . T U V + . - J . . H & . ; R . ; C . K A . B D . D @ . O p . $ N . @ O . t W = ",
+". . $ v . # p . R M . R 9 & . p # - 9 % . p D . K M . B % . ' H - C C . = E . @ = . * I . + p . % N . R N R . I % . E - - 2 O - v @ . ; * . O % . E E . D K . B ; . * v . & I . # B . * t & + N - - v R . M R . I $ . K D . p . X Y Z ` 1 & . + D . D H R O K . . H . + A . ...` +.@.+ . J + . C @ . = . . # #.$.t %.D G _ . $ O . % + . = M &.*.=.-.$ p . . H . . ;.>.1 r @ . G $ . C # . C % . + R . C * . O M . * C . A J . @ v . $ M . _ X A ",
+". . % H . @ P . $ q . + G - - G $ . 2 D . N & . H = . N D . M O - A C . E p . ; I . A 9 . $ G . @ h - % I . + 9 + + ' R . K % - J $ . N = . ' M . v C . E I . J q . B E . * I . O N . + K + + v - R P + + i & . G % . F M . q & z ,.. . M m I : B D '.s . & P u 8 H . = K j ).{ . a !.~.D f % D / + % : { $ A {.].$ g @ ^./.l l q . F | . M v ` y D a A P r '._ . 5 ..o ^ (._.r m + A b + D | * x :.v . ] t k L K 3 : J . K M . O p . B p . ~ <.A ",
+". . # H . * ' . # P . + I - - H R . I M . F % . v D . K = . M $ . A C . ; H . M I . O J . @ ; . + ' % # F . R F R - p # . E R . J $ . F O . I M . ; = . M A . O F - B H . D I . % H R & E . R v - + G R - P # . N & . ; % . J $ [.}.|.e D 1.2.3.h 4.5.Z ! $ 6.7.` : . $ O 8.-.# . . 8.9., 2.$ h =.+ &.0.=.a.# b.c.' ;.H 0.).-.d.e.. f.g.. A D h.i.f.. . j.=.k.(._ l.m.5.n.o.p.q.r.# s.t.% T {.: 5.u.6.. Q *.v.6 w.5.x.y.. K E . = H . * ; . L z.= ",
+". . # O R $ N . # t # + q - + J . - = & . q O - ; O . D # . N J . * $ - E K . B i - A F . D C . + = - @ q & R v + . = - - ~ * . = & - I $ . N v . I C . E D . @ D . E N + @ H - & O . $ ~ - R A R + F . - ^ = . q % . J + . O . X A.v.[.R r.$.. B.C.f.1.D.< E.T g.F.. @ K G.^.B . . [.d., H.- ~ Z = 9 I.z J.. a.c.0 K.R s.d.. 5 L.@ F.M.. E p . I.N.b.I O.4 . P.Q.# O.A . R.w . 5.l S.T.< U.M.B n V.E.. z W.. 8 Y X.[.2.- K p + * ; . # D . c _.A ",
+". . * K - $ I . & K & - F & - I - . N & . I % - ; D . N * . E A . H O - E C . * C - $ 9 . $ H . @ v . % v + + p + R ' - . v % . N & - I @ . M O . K K . E M . B E . M E R $ H . D I . # v - $ p - & 9 - R K % . N * . v % . p . z q.. . D 7.k + .Y.W.g.Z.T `.F.g.].. # & c. +H . . J.n.c .+. k T.C ++7.1.1.R {.c.G k.# n.G.. B 1.h.@+C . = I . . ~ ..#+k.O . l.F.= ` v . 0.5 . $+F.Q c.%+G.P @.@+R.=.. @.n.. 5 &+*+=+S.R B B R D ; . A p . h -+A ",
+". . $ P . % K . * v . + I - - 9 R . F = . p % . ' C . I M . M C . H H . A A . E B . D J . D I . & q & & v - R ^ # - ' # . J * . G * . K % - I @ . ; = . K B . A F . = K . D i . $ F - + v R & i - - ; - # N . . I # . N @ . v & {.;+. . C x.d R ] >+e.q.B.P 0.V V W . = E B /.1.z.W.;.D t ,+'+r.)+N +.b.#.!+m ~+V ' {+# f.Y ]+- ^+/+$.. . O v P.V.Q. +^ (+_+V )+y E ..N . 5.:+4 m <+[+r <+j.% u.9.Q }+x a.q.. I R.z n.[.@ = B . M P . O N . 2 $.A ",
+". . @ G + $ H . # ^ - & N . + I - . A & . K % . C @ . ; D . A $ . ; I - E M . B ' . = J . D J . R M - + ; - R ; R - v + . C & . ' B . v % . 9 K . H O . K = . % = . * C . @ E . @ H . # B . & q % & v . - ~ @ . N + . v & . O + '.) + . D |+2 D % c P.~+, R e 9.1+3 . $ ~ . C S.2++.(+k % y.~+b ].+ j G.|.3+) ~.b H n.@ I w.X A 2 p.4 ; . B M < G.4+a . 9 -+G.f.. C ,.M - b P.d M -+~ I '+a O k -.>.3+{ |.d . M q S.5+{ . O M . * B . * ; . ^ ].A ",
+". . + B & * N - - ' - + v . - N + . K & . N O . F % . G A . I * . $ M - ; K . * N . O K . $ v . & E . + ' R # ' . - ^ + - 9 - . = D . 9 * . ; E . ; O . C C . * A . O N . M p . = q . D v . - B % & ' R . 9 @ . v + . v @ . B $ . = K . I . . I H . R . . % * . . C . & ' . R $ . A ~+L.F . . . M @ . = . . 9 . . I . . $ . . D y.-.- p . M C . . # . % A . . K . @ A . # ' . . 9 . . M . . P . . O . . A . . J $ . . + . M v . K K . C ' . c -+A ",
+". . & D . $ I - R p + + q R - ^ * . v # . 9 M . v O . F M . K D + $ % . C K . $ J R O F . @ t - # v . + G # - F R - ~ & - p # + O R . v D . B M - p E . K ' . = E . O ' . * I . * G - @ J + & O . + 9 & . p @ . P @ . P C . J D . H J . K E . H H . M M + % * . O v . + p R % G . . N O . I R . ' D . N $ . G D . J $ + * # . = ]+a & K - B I . O ~ . @ p . # q R & F - + ~ - + p & + O - . N $ . K O - N A . p I . B B . B 9 . = p . A ' . _ <.A ",
+". . . = . . M . . % . . C . . H + . * . . @ . . v + . M . . # . . * & . D % . . - . . = . . N . . @ . . $ . . 9 . . K . . * . . B . . E . . # . . $ & . R p . . R . . & . % H . . B . . @ . . C . . K . . @ . . B . . M = . @ . . # . . E D . * % . - - . + D . + = . . & . . B . . p . . * . . $ . . N . . C . . @ . . = - . M . . R . . R D . . N . . % . . @ . . N . . E . . $ . . C . . ; . . % . . O - . % ; . + . . . R . D E . R = . i ].= ",
+"6+7+8+9+0+a+b+c+d+e+a+f+g+a+h+b+i+j+e+k+l+m+n+o+9+p+q+i+r+a+g+s+h+s+t+u+d+v+c+v+w+0+x+y+a+j+z+n+c+z+h+f+A+B+C+D+w+C+w+E+h+F+n+B+b+G+q+w+E+k+b+y+0+H+c+a+n+e+a+i+w+l+G+t+q+j+I+c+J+b+c+c+F+f+h+z+K+u+t+n+n+z+f+0+w+j+h+v+L+a+F+y+l+F+r+o+L+M+N+n+L+K+G+O+a+P+z+l+f+w+c+y+Q+h+k+H+a+h+R+s+j+z+f+B+A+K+o+S+A+C+O+s+j+w+d+h+H+T+U+V+V+n+g+H+l+G+x+a+f+z+W+n+F+h+P+A+N+N+X+i+q+w+Y+j+e+k+h+t+E+q+b+Z+n+e+n+0+g+c+a+y+e+a+v+O+l+H+b+`+n+X+j+h+w+K+ @.@+@",
+"@@#@$@%@&@*@=@-@;@>@,@-@=@'@)@!@~@{@]@'@~@=@^@/@(@%@_@:@,@~@<@[@^@}@|@1@2@!@3@4@>@5@6@7@'@8@9@0@_@a@)@8@b@)@/@=@9@c@d@e@-@d@^@&@f@b@g@h@^@{@[@i@j@k@h@'@&@[@l@'@d@)@&@9@0@;@m@&@n@=@&@-@b@e@5@o@,@/@d@)@{@m@9@p@d@'@q@:@'@r@s@^@~@!@[@{@t@>@1@'@!@u@v@9@^@&@|@)@;@=@1@w@x@^@t@s@'@)@9@-@*@m@'@~@=@&@y@:@]@c@[@,@z@k@,@&@h@b@0@A@[@B@v@m@'@v@[@5@'@9@B@-@i@)@8@b@-@r@i@!@w@=@e@p@=@e@&@:@9@C@:@&@{@s@|@z@[@h@'@^@,@{@k@[@~@^@9@B@_@m@8@-@9@D@E@F@G@",
+"H@I@J@K@*@;@L@p@M@N@p@O@N@P@M@K@Q@R@S@T@U@V@W@X@Y@Z@`@N@v@g@Y@v@M@ #.#y@+#S@;@@#v@;@##$#M@@#K@%#&#*#=#-#;#Q@>#,#;@'#)#2@!#N@~#{#]#Z@M@^#:@M@/#Z@M@(#Z@M@_#N@:#Z@~#<#~#S@%#[#h@y@-#)# #P@^#w@M@)#;@-#}#v@T@|#t@'#1#@#M@)# #:#)#&#'#2#]#X@3#4#O@Z@N@;@ #N@!#P@^#!#5#L@6#&#<@6#[#7#{@-#8#U@%#S@'#M@9#@#0#a#2@O@,#4@*@a#4@U@~#<@U@]#S@!# #a#b#&#$#M@5#)#c#b#$#O@b#K@d#e#,#*@U@)#2@!#.#6#U@$#f#M@)#h@U@a#g#U@h#~#M@]#a#X@]#i#O@j#,#k#l#h@{#i#^#;@m#n#G@",
+"o#p#q#r#M@T@)#f#Q@)#6#s#}#M@>#,#t#'#)#f#u#$#v#w#j#]#u#_#]#%#f#N@k#@#N@O@P@S@*@5#)#!#&#)#x#'#:@!#Q@K@M@y#8#Z@z#A#-#B#^#f#%#$#~#C#$#f#`@Z@)#M@D#N@`@E#a#F#@#,#{#G#S@:#H#m#{@I#J#>#e#S@!#'#)#!#>#)#!#O@,#v@M@^#Z@%#)#;@0#a#t@'#$#]#K#L#r#k#M#S@N#O#,#'#b#)#%###)#{#M@)#6#-#S@w@[#}#'#R@^#@#'#L@w@u#^#,#P#N@~#u#$#Z@%#Z@]#X@h#a#O@ #S@!#~#)#M@O#*#k#M@:@Q@P@Q#'#R#r#6#R#S#U@z#)#w@%#,#6#0#7#@#%#a#N@M@N@4#%#T#~#X@G#]#'#_#:@U###V#'#[#J#C#'#S@y@A#n#G@",
+"o#p#W#Q#w@b#h@M@O@N@'#M@9#t#t#Z@M@b#^#~#>#a#A@w#j#Y@X#~#;@k#a#.#k# #]#b# #4#%#3#a#R@f#Y#w@~#f#M@ #S@*@I#^#w@C#L@l#Z#N@U@%#S@W@>#|#t@!#Z@g#k#a#@#R@2#]#w@Z@b#`#Z@^#=###:@'#H#r#C#F#N@%#M@K@M@%#,#6#Q@N@b#R@.#M@O@9#W@t#a# $*@N@]#k#f#.$X@O#,#+$@$~#k# #S@%#&#N@;@b#<@'#U@<@`@-#9# #f#Y@M@;@Y#f#:#$#g#z#N@@##$a#-#R@$#]#:#~#a#*@W@v@x#i#W@R@Z@^# #~# #M@f#)#Q@%#)#*@R#K@%#N#,#'#O@L@@#k#.#~#!#a#6#k#]#P@x#)#a# #4@-#!#a#,#%#@$:@%#'#K@B#%#]#R@;#$$G@",
+"o#%$&$v#`#@#*$M@##K@'#'#=$b# #)#O@2@v#W@y#N@f#k#Y#N@C#^# #X@j#]#O@G#Z@/@/#S@%#E#$#k#b#^#*@Z@1#'#Z@L@M@0#S@!#R@-$b#:#9#l#>#)#f#%#N@ #Q@^#<@k#Y#i#k#j#a#-#7#;$!#a#L@>$##^#O@M@,$%#l#=$x#[#L@!#'#,#*@-#;#w@%#9#M@%#Y# #b#Y#'#w@,#]#'$/#a#k#E#A#)$E#j#X@@#^#'#b#]#Q@f#r#'#-#S@%#l#=$b#6#2#O@2@L@@#y#)#w@>$L@_#C#=$b#X@!$4@`@Z@W@/@T#)#k#1#Z@k#~$N@-#D#h#M@Z@K@'#I#S@M@%#,$ $H#A#'#{$S@w@O@,#@#Q@=$]$k#L@b#k#$#~#*@^#&#*@]#^#)$;$N@%#;$m#k#;$)#k#L@$$G@",
+"o#^$q#Q#M@'#Y#;@Q@K@-#R#S@*@%#S@-#M@2#a#Z#2#b#X@/# #d#]#a#'$5#)#C#/$]#%#O#)#`# #Q#%#[#S@($M@)#M@{@L@M@y#}#U@:#N@*@M@=$;@B#7#~#P#$# #R@a#<@{#a#,#U#L#]#R@f#D#M@@#r#F#_$N@R@O@N@M@b#L@O@>#K@{@0#)#!#%#)#f#U@)#f#y#7#6#R@2#@#M@a#,#:$E#f#:#O#Z@($<$,#C#M@K@e###,#'#M@S@b#-#K@M@>#S@Q@O@S@Q@M@)#f#u#Y#{@0#a#@#M@7#Y@B#Z@N@U#W@Z@x#L#,#M@5#S@:#M@^#<#-#,#M@-#r#'#F#)#'#k#N@Q@{@[$M@y#S@ #z#}$@#R@$#a#{#$#]#y#j#a#k#a#Z@M@f#Q#y#@$]#k###$#y@@#S@k#$#|$G@",
+"o#1$J@2$Q@b#a#U@b#K@Q@'#r# #>#,#b#'#}$6#>#9#v@k#]#Q@X@N@Z@:#a#v@)$E#)#'#~# #{#~#S@%#@#r#M@'#N@M@M@L@M@'#*$w@R@,#%#R@L@P@R@}$ #0#)#Z@'#]#Q@M@N@<@:#$#)#e# #a#($i#)#x#i#r#3$M@a#:# $L@'#U@)#M@{$8#;@M@v@U@Q@L@ #R@8#a#:#]#6#'#]#a#X@*#^#R@G#i#)$W@N@k# #N@e#-#K@y@i#Y@'#@#K@U@l#S#;@I#^#*@'#)#;@R@;#Z@k#N@'#>#^#W@>#|#Z@)$a#.#'#a#;@{#a#)#k#G#K@'#M@<@M@-#L@'#M@*$b#O@N@e#s#K@Q@%#)#b#:#}#~#'#N@M@M@)#Z@>$)#^#>$~#Y@'#G#^#k#E#L@'#-#Y@X@b#)#%#9#4$G@",
+"o#5$q#r#*@@#Y#x#U@S@b#'#)# #>#}#2@@#v@w@>#|#S@R#N@]#y#$#5#x#]#~#`@-#:@($!$j#:#@#:@U@-#S@U@6$Y# #w@<@Q@%#S@a#R#*$;@C#}#M@'#^#;@R@/#v@'#L@P@>#]#]#%#Z@,#k#h#<@w@W@A@O@M@r#M@'#V#`@7$)#`@-#^#Q@%#,# #-#A#'#%#,#f#O@^#t@0#7#t@@#a#~#k#f#K@>#h#S@C#L#a#R@G#a#'###Q#/@f#7#k#M@v#!#U@S@*@H#L@6#@#]#;@k#,#^#C#L@Z@y#*#b#%#N@6#%#@#}$'#7#f#:#G#,#'#i#)#'#&#^# # #]#U@O@K@5#>#S#Q@F#}#U@T@^#b#R@]#t@U@A#Q@k#N@Z@%#D#]#F#a#v@;@~#A@%#P@r#'#&#r#k#8$*#%#*$$$G@",
+"H@9$0$v#'#%#r#t#e#:@Q@R@Y#!#C#,#t#v@N@*@R@D#W@'#D#:@C#L#,#F# #Z@!#Z@v@F#3#r#M@M@h@O@M@S@%#{$a$6#v@<@U@[#<@;@'#Y#t@y#^#f#0#]#w@!#$#6#C#$#)#R@f#Z@>$<$N@C#b#4@g#4#Z@%#-#<@Q@&#b$-#F#8#M@R@N@b#c@,#M@:#A#a#>#N@;@>#,#6#y#a#~#A@N@ #R@~#Z@'#f#Q#R@M@S@x#@$]#!# #N@x#_$r#b#%#:@M@s#S@M@R#,#t#v@.#Q@%#|#6#O@N@h@P#+#v@X@~#~#!#a#4@X@5#Q#'#-#<@x#P@)#R@'#<@2@4#a#'#U@a$b#'#L@6#z#S@@#:#N@;@P@N@@#R#^#,#k#_#t@:#a#a#w# #Z@g#<@W@x#@#]#M@P@K@U@{$r#($^#|$G@",
+"o#1$c$r#%#M@S@M@d$-$k#{$S#@#>#N@M@R@e$@#z#7#-#M@^#2@F#~#)#e#G#W@X@]#a#k#f#)#F#l#L@f$3#*$'#O@2@g$%#h$>$)$Z@i$-#)#b#0#Y#t@k#,#M@k#K@b#R@$#]#:$1#Z@:$N@)#>$ #f#k#5#9#R#;$Z@{#G#N@{#H#J#!#%#)#R@U@A#'#'#v# #u#*$l#C#*$~#0#$#-#k#Y#j#'$a#@#{#$#4@e#-#r#`@b#a#X@f#*#x#P@S@'#>#-$0#[#S#{@R@N@'#%#m#Q@R#^#M@M@^# #0#T#N@k#a#;@X@^#G#k#/#:@U#O#^#N#f#K@%# $a#x#&#m#k#'#$#U@@#^#!#:#K@6#k#^#'#%#A#-#%#,#Z@u#*# #N#)#<@X@/#@#k#j#)#y#~$f#{#+#]#`@7$r#y@Y#j$G@",
+"o#1$J@Q#=#P@K@'#k$-$'#z#Y#l$s#L@*@y#^#<@k#$#-#O@L@i#F#j#a#=#T#a#X@~#_#%#j#,#)$-#r#C#R@4#C#m$n$o$p$q$r$s$t$u$R@A#U@k#*# #'#L@b#>#*#b#%#^#Z@f$$#N@:$~$<@>$j#<@C#Q@J#{#;$D#<# #S@x#U@)#`#M@K@'#O@)#U@d#8#!#y#*$b#N#N@ #k#)#f#B#j#S@R@j#5#%#N@a#X@~$N@($h#^#k#b#$#%#~$S@e#%#-$%#0#S@T@'#L@M@z#K@a#R@}$Q@O@A#b#:#]#t@'#N@~#F#a#G#%#]#N@y#L#L@y#l#)#e#~$)#k#%#J#*@'#N@'#&#9#'#{$)#;@'#A#M@k#)#-#'#}#6#B#Y#a#:$<$a#F#$#a#w#@#r#O@~$a#<#E#^#k# $^#y@*$$$G@",
+"H@v$w$,#{#i#)#R@I#L@*@Q@7#:#M@S@!#:#^#Z@'#$#6#X@N@a#'$]#@#X@E#N@*@f#W@{#a#a#U#@$<@x$y$z$A$B$C$D$E$F$G$H$I$J$K$;#y@R#)#U@>#}$A@{@a#*@M@^#@#B#a#a#'#]#@$>$]#<@X@3#)#Q@3#,#<#6$J#x#'#,#x#O@v#2@ $]#M@-#S@'#C#S@@#U@}$%#O@Y#6#R#a#4#{#j#a#:#h#,#U#L$Z@X@O#,#;@@#a#{#G#,#F#%#L@!#-#$#:#-#S@M@>#S@t@'#}$@#0#Y#W@z#2#-#0#a#]#!#Z@ #'#$#Y@'$~$<@U@G# #X@G#)#e#l#Q#;@Q@^#M@I#r#M@k#)#'#k#^#p@ $]#Q@M@)#-#B#7#W@{#$#U@e#N@a#X@f#,#/@ #N@R@-#K@:#&#$#k#L@$$G@",
+"H@M$N$S@{#3#;#U@y#;#Q@ #}#O@M@}#@#'#N@6#*@^#Z@%#j#|#O$$#<@k#~#f#;@N@Z@O@j#L@P$%#Q$R$S$T$U$V$W$X$Y$Z$`$ %.%+%@%#%$%%%K@ #R@$#@#w@)#;@'#Y#]#:$E#f#<#.#M#{#E#,#'#i#<@`#a#N@!#[#*$>#H#m#M@'#|#b#6#)#M@Q@;#;@u#L@b#*@9#'#M@^#Y@'#a#~#!#,#a#'#@#L@:$L#S@R@3#Z@;@a#|#'# #*$%#F#K@M@~#7#'#Q@A#P@U@.#;@b#)#g#R@N@Z@+$}#Z@k#Z@ #w@,#f#O@$#)#y#-#7#U@,#L$'#~$}#M@-#,#*@f#^#;@%#9#U@d$m#P@%#N@;@ #)#-#U@L@Z@u#$#f#M@K@M@M@1#N@'#f#v@/@]#N@M@l#r#U#6$*$i$A#j$G@",
+"H@I@&%J#M@U@K@;@F#L@!#-#*#M@'#$#f#;@^#b#M@}$b#Q@N@~#N#Z@}$e#W@6#r@N@N@k#-#*%=%-%;%>%,%'%)%!%~%{%]%^%/%(%_%:%<%[%}%|%1%*@R@]#b#*@S@t@k#]#4#'$j#2%3%4%-#U@-#<@b#Z@$#'#Z@_#!#~$L@k#I#J#M@T@<@Q@ #L@b#%#L@Z@z#^#@#M@Y# $'#~#~#b#N@5#'#N@i#Q@a#|#'$;$K@%#b#Z@r@a#Y#{# $b$!#I#L@r@@#2#M@'#N@w@@#)#-#M@^#*@M@Y#i#K#$#]#k#a# #`#N@<@x#W@Q#x#;$.#U@a#h#d#l#,#;@6#*#{#i#$#Q@-#K@'#z#8#@#%#<@!#b#S@f#R@^#h@R#T#~#($^#-#d#@#]#*@a#a#'#a#G#Q@5#)#)$5%r#'#L@4$G@",
+"H@6%0$]@M@-#Y#2@{@)#a#*@^#a#k#]#~#Q@)#~#M@,#{@R#^#4@R@~#a# #v@;@`@t#}$7%8%9%0%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%6#;@<@M@M@,#~#u%|#v%w%x%y%z%A%B%'#&#<@*@~#^#`#G#_#>$Q@K@U@'#^#6#~#Z@U@!#S@*@'#Y#Z@Q@,#]#*@N@,#%#~#Z@M@N@a#M@$#@#C#_#N@x#@#<@t#4@ #{#5#)#'#b#)#6#-#S@4@P@^#4@k#N@6#!#Y#f#!#*#M@0#L@~#R@D#4@t#<@P@M@a#<@%#D#,#;@G#S@f# #S@c@'#,#;@i#)#;@i#$#%#7$*$!#s#,#~#f#]#M@Q@)#f#%#)#]#!#$#,#c@a#S@T@~$]#!#a#N@r@Z@W@X@O#S@'# $,#0@C%D%G@",
+"H@M$c$J#l#%#]#6#!#t@2@M@,#4@%#]#6#M@a#;@Q@}#t@F#N@N@%#~#-# #^#M@E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%`% &.&+&@&#&v@$# $r@Z@$#$&%&&&*&=&-&;&>&n$<#@#a#*@@#Z@r@~#S@'###r#!#l#Z@!#]#j#Q@;@L@@#:#]#g#!#~#2@Q@a#<@%#Z@~#M@~#6#Q@)#]#k#h#)#'# # #;@,# #*@f#8#'###N@f#c@4@t@-#Y#Z@'#N@f#{@N@w@-#;#~#I#}#<@O@!$P@Z@L@3#@#]#L@I#f#<@ # #Z@6#@#K@b#&#<@ #b#$#b#f#*$b#5%m#f#'#N@-#]#^#-# #L@D#F#|#a#;@~#4@;@j#S@U@G#]$P@f#4@Q@$#)#O@;$K@M@&#W@Q@,&4$G@",
+"H@v$'&*$P@I#S@p@-#S@;@'#N@Z@U@)#g#Q@)#M@b#^#Z@%#h#S@U@j#@#b#4@/$F%)&!&~&{&]&^&/&(&_&:&<&[&}&|&1&2&3&4&5&6&7&8&9&0&a&b&c&d&6#Q@e&f&g&h&i&j&k&l&m&n&o&p&q& #:@!#a#f#r@Z@,#!#O@S@f#M@!$Q@~#]#M@U@,#~#0#)#v@M@S@f#O@a#]#M@N@A@r@,#-#*@7#v@U@;$b$P@h#Z@b#N@W@{@-#r#-#_$r#t@@#A#@#l#)#a#@$A#~#;@=$&# #}#4@O@T#S@ $7#@# #Y#@#Q@h#r#5%5#S@ #j#^#`#O#S@6#(#K@0@G#$#-#~#=$f#%#L@.#Q@^#b#W@)#P@M@N@^#>#7#,#-#^#a#d#_#}$b#1#)#*@N@h#P@$#}$g@l#r#f#-#a#Q@r&n#G@",
+"H@9$J@s&%#f$Q#w@k#S@@#R@]#!#M@2#2@ #,#;@p@,#]#%#Z@h@R@Z@b#t&u&v&w&x&y&z&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&`& *.*+*@*#*$*%*&***=*-*;*>*-#<@ #v@~#t#a#^#*@U@S@*@[#]#!#f#|#;@ $S@-#+$)#t@>#7#Z@>#]#-#Q@]#]$f#^#i#2@,#)#l# #S@U@L#E#@#]#]#;@~$S#e#k$*$@#7$*$i#_$N@@#b#}#a#a#Y#f#]#}#a$_$7#,#5%7# #W@^#a#b#1#8#,*O#r# $3#S#M@/$T#@#L#}#~#|#N@W@]#K@Z@##8#a#[#Y#@#Z@)#<$P@L@]#'*7#^#7$!$S@7$T#f#@#T#,#~#^#a#<$N@L@-#-#K@-#&#a#!#r&)*!*",
+"o#6%W#~*M@H#,#*@'#*$;@0#L@Q@P@N@;@2@<@;@Q@N@Z@B#N@)#e#a#b#{*]*^*/*(*_*:*<*[*}*|*1*2*3*4*5*6*7*8*9*0*a*b*c*d*e*f*g*h*i*j*k*<+l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*~#w@]#f#*@i#S@k#'#S#P@'#$#@#;@$#U@'#8#@#0#^#w@O@L@a#R#Y#@#-#^#f#Y@,#6#b#]#^#R#/#S#l#h#a#5#j#!$l#L#C%8$&#}#@#;$A*~$B*C*b#~#}#~#N@)#~# #;#T#D*C*A#_$L@j#W@=$+#8$*#m#5%E*)#O#E*A*##h#=$@#N@Y#Z@)#7#G#h#-$O#F*B%$#8$G*Z@E#L@ #&#H*^#I*L@]#&#J*;#H#=$1#~$Y#]#a#S@a#5#a#r#%#O#,$-#M#$#w@C%4$!*",
+"o#K*L*K@!#Q@,#M@:#)#~#I#S@f#R#Y#;@'#^# #k#^#Z@N#D#N@`@w@M*<+N*O*P*Q*R*S*T*U*V*W*X*Y*Z*`* =.=+=@=#=$=%=&=*===-=;=>=,='=)=!=~={=]=^=/=(=_=:=<=[=}=|=1=2=3=4=Z@'#Y@]#O@l#S@5=k#S@!#M@<@w@ $)#M@>#Y#;@M@^#P@0#7#.#H#*#N@F#7#]#l#)#a#[#!$}#0#E#*$-#+#,# #E*L@M@/$9#~$h#L@;$6=-$!$7=8=a#_$8=j#5#-$1#&#9=2#I*e$9#O#L@^#L#J*Y#_$0=}#L#^#}#&#a=C%5#h#r&O#b=,$L#$#m#5#/$c=O#d=B%2#3#9#N@b=e=j#_$V#$#/$9#$#_$0=-$@$f=,$_$2#9#O#}#L@M#j#,$H#g=,$@#@#,#6#m#h=!*",
+"H@i=W#K@!#M@S@M@%#:@'#I#L@@#Z#Y#-#u#)#;@f$|#f#'#D#a#%#2@F%j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=`= -.-+-@-|##-'#7#$-%-&-*-=---;-`#A@M@5%m#t@'#Y#@#M@S@ #%#S@-#I#L@N@>-*#]#y#=$N@F#T#)#O#$#9#-#*#Y#;$,-c=j#/#V#h#j#,$L#b=,$3#'-)-1#!-~-{-F*c=1#d=Q$*#{-e=J*L#e=}#]-^-B%E#J*J*E#0=8=O#f=C*&#/-)-]-]-(-_-:-~-'-]-c=E*+#c=<-E#9=$#]-~-m#L#[-*#{-}-9#|-C**#_-1-,$2-f=e=I*0=e=6$E*C*L#j#m#;$Z@)#Q@J*3-4-",
+"o#I@5-K@U@##*$'#%#m#k#R#9#b#R@A#-#:#m#a#R#*#-#M@^#f#%#}$6-7-8-9-0-a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S->#s$T-U-V-W-X-Y-Z-`- ;.;+;%#)#6# $}#@#_$-$~$I#C%;$@;V#]#l#e$$#%#e=-$F*#;1#h#J*9#M#V#V#b=$;-$T#%;9=h#$;&;'-,-*;]-b==;2#{--;;;a=>;C*b=)-7#7#,;#;,-';e${-}-9=<-}-9=a=E%,;]-^-)-);!;,;E*~;{;a=f=];7#^;/;<-0==;e&0=-;0=(;/;e$e&)-J*a==;1-|-=;J*_;:;9=a=e=/;<;[--;g=[;J*E#};}-7=*#9#-#9#j$|;",
+"o#K*1;K@M@##K@%#w#S#M@w#7#'#w@|#U@M@2;<@0#*#~#B#$#5#R@3;4;5;6;<+7;g&8;9;0;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;`; + >h$y@O@A#i#M@-$/$.>9=T#+>9#b=1#e${-G#=$,$|-@>m#6=#;H*b=J*c=*#1-c=,-;;c=<-#>$>a=%>&>/-*>=>f=->)-;>u$=;~->>>*Q$%>{;E%,>,;,;e$'>)-e&)>~-;;/;';!>~>{>]>^>)>[;)-)>!;e$/>~>(>>;[;>>>;!;#>*;A*e$/>^-e&_>->,>>*A*:>';=>!><>[>h$,;~>#>^-/>e&[>=;b=<-}>M#E**$Y@B%$$|;",
+"H@v$|>4@*@b#)#!#%#*$f#C#A#M@'#,#M@ #N@t#y#)#1>O@j#]#=#2>3>4>5>e=r@6>7>8>9>0>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>A>B>C>D>E>F>G>H>I>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>Y>Z>`> ,.,+,Z@a#h#E#H*T#@,B%9#F*->#,b=9=7#0=A*C*|-->&;;;e$,;;;^-~>f=:;{>C*)-[-^-Q$/>e$u$$,%,(>&,@>*,=,^--,>;<>;,>,{>,,>*',),>*!,~,];{,/;>*],:;^,{,~>/,(,_,:,<,^>'>',:,_>>;),[,},_>_,>,,;|,{,|,)>1,';-,',:;:;];-;^>2,>,(>^,3,,,{*4,[-*;{;5,6,{>J*;>~-T#1#*#;$,&3-7,",
+"o#8,&%)#U@4@N@;@l#N@*@k$S@t#0#K@M@R@r#M@y#7#f#'#|#v@%#)#M#9,~#4@0,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,G;`, '.'+'@'#'$'%'&'*'/$a#m#*#E#e=}#]-/;e='-,;h$='*;E%-'-,/;;':;*;~;-;-,;',;>'),',',^->*2,)-)>>,4,_,,''>),,')>=%'')'!'~'{,<>{'];]'^'/,-,/'('<>,'_'';/'<,:'^,},]'<'['<>}','|'^,^'),]'1%1'/,^'3,'>,'<>'>2'1'-,^')'>*~'2,-,<,<,|'<,1%|'<,];[,>,2,;,'>',^-~>{;E*J*1-M#~-3-3'",
+"o#^$4's&M@[#N@;@@#L@%#'#)#M@%#S@b#k#7#a#:#]#]#w#T#<@C#+#N@>$5#,#U#m$5'6'7'8'9'0'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'`' ).)+)@)#)$)=$2#*;;;,-';;'%)-;/;,>';{>~;&)>;*)/,$,^>:'=)*,/,-)*,/,M*-,/,/'^,<,;)<>^,>)_',)')2,}'')~'))!)~){)')])^)/)M*()])M*{)])!),)_),'<,M*^':)<)^'[)})|)^,1)2)2,[)3)}):)4)5)))6)7)()|)$,{)3)<)()^'1%5)3)_)()/)8)}']),'<'})'']'_'$,_,),9)e&5,&;L#e=0)P ",
+"o#^$c$~*@#7$^#M@{$*$U@U@N@M@c@^#2@U@a#w@'#a#~#y#t@!#a)f#c@k#Y@t@)$W@b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)k)v)w)x)y)z)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)`) !.!+!@!#!$!%!&!*!=!-!;!O;>!>*~,*)=,->)>];>*)>{*>*)>2,,!'!<,,!$%)!<)/,_)M*:)_)!!<,~!{!]!^!4)~!_)3)/!])4)/)_)3)M*_)4)/)(!_!:!<!F@:!<!4)')[!4)}!<!|!1!2!/)3!5)|!0)4!|!3!/)5!1!])6!7!6!<!3!5!8!3!6!/!7!5!<!9!4)0!4)!)[!4)3)0!4):!4!2)2)<)4!>)^!}),'*,/,*;#>u$[-/$~-0)G ",
+"o#6%a![@;@&#K@b#0#K@w@'#)#M@'#}#@#M@^#;@!#)#6#%)b!c!d!e!f!g!h!i!j!;@k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O!k%P!Q!R!S!T!U!V!W!W$X!Y!Z!`!Z, ~.~+~@~#~$~%~&~*~=~g,-~;~>~,~'~)~!~~~{~]~{;',*,$,/,^~~'<,}','<,{,])!){)M*])/~!)(~5)|!')2!^'!!5!:!9!])0!_~/)D%9!:!:!:~|!|!<~0)(~[~}~|~1~0)2~3~4~n#[~4~/)7!9!|$5~[~4$$$[~*'F@5~/)6~1~|$4)<~6~F@1~n#)*1~/)|$7~3)3)1~3)n#9!3!/)[~9!|~5~w%4$9!8~D%5~7!/)4)2)~'/)2)<>9~];;>[-'>/#{;0~i ",
+"@@a~b~N@M@b#^#2@U@,# #-#L@Q@N$L@ #B#,#;@U@7#(#c~d~e~f~g~h~i~j~k~l~m~n~o~p~q~r~s~t~u~v~w~x~y~z~A~B~C~k>D~E~F~G~H~I~J~K~L~M~N~O~P~Q~R~S~T~U~V~W~X~h;Y~Z~`~ {.{+{@{#{${%{&{*{={-{;{>{,{'{){!{~{{{]{^{/{({_{:{b!{'^,>)})<{^'/){)!)])[{|!}{0!|!_!(!|$F@|!}~}~F@|{7!|$4~1{3!|$1~7!4~2{8~3{4{0~5{2{7!4~6{[~h=6{<~)*7~7{<~7~<~[~1~8{0~3~7~7{9{2{<~[~0{h=$$a{3-b{3~5~5~0{5~3-0{0~3-c{7{<~7~7{1~7~7{0~6{1~5~[~1~d{e{1~|~f{2{g{5~5~|!(~3!h{1)$,*)_,],/-/>b{~ ",
+"H@v$&%r#d#f#}#Z@~#N@Q@;@^# #R@Y#]#R@N@!#!#a$l$i{j{k{l{m{n{o{p{q{r{s{t{u{v{w{x{y{z{A{B{C{D{E{F{G{H{I{J{K{L{M{N{O{P{Q{R{S{T{U{V{W{X{Y{Z{`{7& ].]+]@]#]$]%]&]*]=]-];]>],]'])]!]~]{]]]^]/](]_]:]<][]}]|]1]2]3]4]5]])3)!)5)2)|{8!4)|!|!}!7!g{6]1~|~5~[~5~[~[~7!1~2{4~1~0{1~1~6{7{7]8]1~9]0]c{a]Z&7]e{0]e{a]b]c{c]a{8]7~a{d]e{a{8][~a{Z&0{8]d]7]0{a{7]e]f]7]e]8]7]d]0]g]e]f]e]h]i]j]7~0]e{7~k]j]7]k]8]l]a{e{7]8]8]g]j]m]0~e{8{4)5~_!^!5!|)[,*,*;#;n]o]^ ",
+"H@p]a!S@*@'#]#;@ #K@;@P@$#*@b#a#Z@*@)#f#Q@)#t&#)q]r]s]t]u]v]w]x]y]z]A]B]C]D]E]F]G]H]I]J]K]L]M]N]O]P]Q]R]S]T]U]V]W]X]Y]Z]`] ^.^+^@^#^$^%^&^*^=^-^;^>^,^'^)^!^~^~^{^]^^^/^(^_^:^<^[^}^x>|^1^2^3^4^5^f%6^7^8^9^0^a^b^(~0)4~w%4)[~<~4~3~1~c^6]a{0~d^0{[~3~8]e{e{a{[~7]Z&7~e^b]d]d]a{d]0{k]f^c{g^8]c{h^i^j^g^h^e]k^0]8]i]k]8]k^b]l^m^k]i^i]g^8]k^n^i^i^i]a{a{h^8]n^h^o^p^q^m]e]i]0]8]h^a{8]m]0]l^m]a{8]g^m]0{i]i^8]a{0]7~8]8]r^s^t^(!_)u^'>_,=;e$*;9]t ",
+"@@v^w^)#~#U@,#;@%#,#4@Q@$#f#w@N@!#R@,#;@w@N@;@-,x^y^z^A^B^C^D^E^F^G^H^I^J^K^L^M^N^O^P^Q^R^S^T^U^V^W^X^Y^Z^`^ /./+/@/#/$/%/&/*/=/-/;/>/,/'/)/!/~/{/]/^///(/_/:/</[/}/|/1/2/3/4/5/6/7/8/9/0/a/b/c/d/e/f/g/h/i/j/k/k^9!_~3~[~3-6{e{1~8]0{8{j]a{d]i^0]8]8]m]a{i^b]i^l/b]i^o^h^i]i^m/i]i]n/n^o/q^k^m]%&p/m^q/r/m]q^%&b]%&p/%&m/q^s/m/%&t/s/q^p/s/q^p/m/q^m^k]n/m]m/q^b]m^r/q^u/r/%&m]%&p/p/%&q^t/q^p/m^n/q^s/q/p/p/m/b]o^k]i^e{7~[~j$6!')>;'>',e=n]0~v/",
+"o#6%w/r#M@b#L@t@-#,#p@H#N@M@'#8#P@R@}#M@k#}#a#U#;@x/y/z/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/`/ (.(+(@(#($(%(&(*(=(-(;(>(,('()(!(~({((%](^(/(((_(:(<([(}(|(1(2(3(4(5(6(7(8(w!9(0(9(a(b(c(d(e(f(g(h(7{g]0]0{a]k]0{i(k]b]e]n^j(k(b]h^n^k]l(n^u/m(u/p/n(o(p(q(r(s(t(u(v(w(x(y(z(A(B(C(D(E(F(G(H(I(J(K(t(L(M(N(F(K(F(O(G(N(F(v(v(F(M(P(O(M(P(I(M(v(Q(K(H(R(K(M(S(D(K(F(D(M(F(G(u(S(I(K(F(D(u(N(D(M(t(D(T(U(V(W(X(Y(Z(c]d^`((!6!:,_) _i ",
+"o#1$4'r#Q@T@^# #M@)#@#'#;#!#R@]#w@M@S@t@N#a#)#P#i#._+_@_#_$_%_&_l%*_=_-_;_>_,_'_)_!_~_{_]_^_/_(___:_<_u![_}_|_1_2_B'3_4_5_6_7_8_9_0_a_b_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z_A_B_C_D_E_F_G_H_I_J_K_L_M_d]e]k^k^0{p/h^N_k]r/l/k]r/O_P_r(P_Q_R_S_T_U_V_W_r/4{X_Y_Z_`_ :.:+:@:@:#:$:$:%:&:*:=:-:-:;:-:-:=:>:,:=:':,:):':,:>:-:,:):):,:=:!:,:):):~:):{:,:,:{:,:):{:,:>:=:-:-:{:,:>:=:>:,:):,:,:=:-:-:{:>:*:{:]:':^:^:/:(:_:::<:[:}:|:<:1:2:",
+"o#3:J@Q#w@;@,#U@[#,#%#l#Y#t#t@a#'#;@^#~#>#]#Z@C#/#4:R-5:6:7:8:9:0:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:Z)v:w:x:y:z:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:`: <.<+<@<#<$<%<&<*<=<-<;<><<+,<'<)<!<m]g^p/u/b]r/~<u/{<K(]<V_^</<K((<_<:<<<[<}<|<1<2<3<4<5<6<7<8<9<0<a<b<c<d<e<f<g<h<d<i<d<d<i<d<d<i<d<d<i<i<d<i<i<d<i<d<d<i<i<d<i<i<d<i<i<d<i<i<d<d<i<d<i<i<d<d<i<d<d<i<d<d<i<d<d<i<d<d<i<d<d<i<i<d<i<i<d<i<i<i<i<j<k<j<l<b<c<m<n<o<",
+"o#3:5-S@r@P@*$!###8#M@O@L@b#-#=$'#6#^#~#u#N@ #:#$#p<q<r<s<)_t<u<v<w<x<y<z<A<B<C<D<E<F<G<H<I<J<K<L<M<N<O<P<Q<R<S<T<U<V<W<X<Y<Z<`< [.[p_+[@[R&#[$[%[&[*[=[-[;[>[,['[)[![~[{[][^[/[([_[:[<[[[}[|[1[2[3[<+4[5[6[7[8[9[q/g^0[E(G(a[b[H(c[d[`_e[f[,:g[h[i[j[6<k[h<b<b<l[m[n[o[p[p[p[q[r[s[t[u[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[t[s[v[w[x[y[z[",
+"o#^$'&b$U@[#,#;@-#K@{@)$K@*@R@S@P@'#2#a#f$}#@#:#G#3#A[B[C[r;D[E[F[G[H[I[J[K[L[M[N[O[P[Q[R[S[T[U[V[W[X[Y[Z[`[ }.}+}@}#}$}%}&}*}=}-};}>},}'})}!}~}{}]}^}/}(}_}:}<}[}}}|}1}2}3}4}4}5}Y~6}7}8}9}0}a}b}c}P;i]g^<+d}e}f}g}h}i}j}k}l}m}n}o}p}q}r}d<s}t}u}v}w}x}y}r[t[u[y}x}p[v}z}A}A}B}C}D}E}F}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}F}F}D}H}v}I}/:z[",
+"o#p#1;2$*@@#a#%#-#K@!#U@r#~#:#,#;@U@}$ #:#)#,#>#]#d#J}K}L}M}N}_%O}P}Q}R}S}T}U}O}V}W}X}Y}Z}`} |.|+|@|#|$|%|&|*|=|-|;|>|,|'|)|!|~|{|]|^|/|(|_|:|<|[|}|||1|2|3|4|5|6|7|8|9|0|a|b|c|d|e|f|g|h|i|j|k|M_l|q(u(m|n|o|p|q|r|s|o}p}j[t|u|l[v|q[w|y}u[u[x|y|z|B}A|C}D}F}G}B|C|D|E|F|G|G|G|H|I|J|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|I|u}L|H}s[t}z[",
+"H@v$'&K@Q@@$9#'#'#:@b#O@)#b#:#}#p@~#v@ #R@D#:@:#N@p@M|N|O|P|Q|P|R|S|T|U|V|W|X|Y|Z|`| 1.1+1@1#1$1%1&1*1=1-1;1>1,1'1)1!1~1{1]1^1/1(1_1:1<1[1}1*=|111%{213141516171819101a1b1c1d1e1f1g1h1i1j1k1l1n|m1m|n1o1p1q1r1s1j[t1u1v1A|r[r[r[y}x}z|A|H}D}w1n[L|E|G|x1y1v|K|z1A1B1v1C1C1C1D1D1E1~:F1G1/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:G1/:H1I1J1H|D}t[t}z[",
+"H@I@w^Q#O@O@r#t#>#S@M@R@L@*@R#N@@#g#)# $>#$#c@'#a#t@K1L1M1N1O1P1Q1W!R1S1T1U1V1W1X1Y1Z1`1 2.2+2@2#2$2%2&2*2=2-2;2>2,2'2)2!2~2F^{2]2^2/2(2_2:2<2[2}2|212223242526272829202J:a2b2c2d2e2f2g2h2i2j2 :k2n}l2m2n2o2p2o[t[u[r[q2q[r2s2F}B|L|F|G|y1v|K|A1J1C1D1y[~:H1F1/:t}o2t2u2u2u2v2v2c<c<w2i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<b<x2o2y[v|F}u[t}z[",
+"o#^$&$r#%#Q@S@U@y#-$k#k$J#;@:#,#M@C#G*G#z#N@-#U@)#*@y2z2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2`2 3.3+3@3#3$3%3&3*3=3-3;3>3,3'3)3!3~3{3]3^3/3(3_3:3<3[3}3|313233343536373<+<+8393m203a3F|b3v[r[q2q[A|s2F}n[E|G|y1J|z1B1v1D1I1c3d3t}o2t2u2e3c<b<k<d<h<f3g3h3i3j3j3k3l3m3k[n3t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1t1k[l3f3x2F1K|o3u[t}z[",
+"o#3:5-S@'#b#L@'#H#m#M@R#^#'#T@K@*@R#)#]#%#$#-#%#L@;@8$p3q3r3s3t3u3v3w3x3y3z3A3B3C3D3E3F3G3H3I3J3K3L3#!M3N3O3P3Q3R3S3T3U3V3W3X3Y3Z3`3 4.4+4@4#4$4%4&4*4=4-4;4>4,4'42])4!4~4{4]4^4/4(4_4:4<4[4}4|4q214y|B}C}F}n[E|G|y1K|A1v1D1~:F1/:24t2v2c<b<i<h<f334j3l3m3k[t10344545<t|t|r}r}n2n264m2m26<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<m2n2i[l3w2/:K|G}u[t}z[",
+"H@M$74,#'#i#)#k#F#L@*@b#^#:#M@K@!#:#,#t@M@N@t@C#!$4@w#849404a4b4c4d4e4f4g4h4i4j4k4.}l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4A4B4C4D4E4F4~[G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z4`4 5.5+5@5#5$5%5&5*5=5-5;5s2y1G|H|K|A1v1D1~:F1t}t2u2c<b<d<f3g3k3l3k[n34454>5r}n264n<m26<,5,5j[7<q}q}q}q}8<'5)5!5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5'5j[n2k[i</:K|G}u[t}z[",
+"H@M$N$r#M@&#*${@B#K@Q@@#^#'#M@^#6#Q@N@ #!#^#~#'#Z@Z@{5]5^5/5(5_5:5<5[5}5|515'{253545556575859505a5b5=^c5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5A5B5C5D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V5W5X5/:Y5F1Z5t2v2c<k<h<`5j3m3k[03 6p}r}.6n<m26<+6j[q}8<@6)5!5~5#6939<9<$6$6$6$6$6%6%6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6$6'5m203i</:K|G}u[t}z[",
+"H@5$N$J#M@M@K@w@%#8#b#b#)#!#'#N@f#b#S@;@d#N@i$*6[;=6-6;6<+>6,6'6)6!6~6{6]6^6/6(6_6:6<6E,r-[6t4}6|6162636465666768696a:06a6b6c6d6e6f6w!g6h6i6j6k636l6m6n6o6p6:6q6r6s6t6u6v6w6x6y6z6A6B6C6D6E6F6G6H6I6<+J6h<d<d<`5j3K6n344L6t|64n<6<+6M6q}8<'5~5#6#69<$6$6%6%6%6&6&6N6O6O6P6P6P6P6P6Q6Q6R6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6S6P6%6~5T6t1d</:K|G}u[t}z[",
+"H@6%c$]@'#l#N@2@Q@N@]#!#.#<@>#a#6#i$Z@;@-#B%U6V6W6X6Y6Z6`6 7.7+7@7#7$7%7&7*7=7-7;7>7,7'7)7!7~7{7]7^7/7(7_7Y;:7<7[7}7|71727374757677787C_97k)07a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7A7B7<+C703t|L6t|64n<6<j[q}@6D7E793F7$6G7%6&6H7O6O6P6P6Q6S6Q6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"H@p]a!J#-#%#N@p@*@Z@6#M@,#Z@*64@a#[;I7J7K7L7M7N7O7P7Q72(R7S7T7U7V7W7X7Y7Z7`7 8.8+8@8#8$8%8&8*8=8-8v';8>8,8'8)8!8~8{8]8^8/8$[(8_8:8<8[8}8|818283848586878889808a8b8c8d8e8f8g8X>h8i8j8k8l8m8V<n8o8p8q8r8s8t8u864~57<@6)5E79<$6G7%6&6H7O6O6P6Q6S6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"H@v$v8J#M@k$L@6#M@K@b#O@N@_@)>w8M_x8y8z8A8B8C8D8E8F8G8&~y_H8I8J8K8L8M8N8O8P8Q8R8S8T8U8V8W8X8Y8Z8`8 9.9+9@9#9$9%9&9*9=9-9;9>9,9'9)9!9~9{9]9^9/958(9_9:9<9[9}9|919293949596979899909a9b9c9d9e9f9g9h9i9Y:j9k9l9m9.6n9G7%6&6O6o9P6Q6S6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"H@v$J@~*%#B#S@;@R@S@@#k#$#<#p9q9r9s9t9u9v9w9x9y9z9A9F<B9C9D9E9F9G9H9I9J9K9L9M9T{N9O961P9Q9R9S9T9U9V9W9X9Y9Z9`9 0.0+0@0#0$0%0S9&0*0=0-0;0>0,0'0)0!0~0{0]0^0/0(0_0:0<0[0}0|0102030+~40506070809000a0b0c0d0e0f0g0h0i0j0k0Q6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"o#8,'&~*Q@[#N@!#O@*$ #0#}#Q@l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0`0 a.{.a+a@a#a$a%a&a*a=a(1-a;a:5>a,a'a)a!a~a{a]a^a/a(a_a:aD~<a[a}a|a1a2a3a4a5a6a7a8a9a0aaabacadaeafagahaiajaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"o#K*'&K@!#-#^#M@>#)#f#%#S@w@P#kalamanaoapaqarasatauavawaxayazaAaBaCaDaEaFaGaHaIaJaKaLaMaNaOaPaQaRaSaTaUaVaWaXaYaZa`a b.b+b@b#b$b%b&b*b=b-b;b>b,bw-'b)b!b~b-a{b]b^b/b(bc9_b:b<b[b}b|b1b2b3b4b5b6b7b8b9b0babbbcbdbebfbgbhbjaibR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"H@9$W#K@Q@U@S@M@%#S@%#k$K@w@jbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb`b c.c+c@c#c$c%c&cJ8*c=c-c;c>c,c'c)c!cH>~c{c]c^c/c(c_c:c<c*a[c}c|cE51c2c3c4c5c6c7c8c9c0cacbcN8ccdcecfcgcF1hcR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"o#%$J@K@U@##*$%#>#m#%#w#}#*@'#L@icjckclcmcncocpcqcrcsctcucvcwc.9xcyczcAcBcCcDcEcFcGcHcIcJcKc$3LcMcNcOcPcQcRcScTcUcVcWcXcYcZc`c d.d+d@d#d$d%d&d*d=d-d;d>d,d'd)d!d~d{d]d^d/d(d_d:d<d[d}d|d1d2d3d4d5d6d7d8d9d0dadbdcdddedfdgdhdz[jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"o#3:v8S@M@M@K@O@0#-$!#R#^#O@ #~#_,<+idjdkdldmdndodpdqdrdsdtdudF9vdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNd21OdPdQdRdSdTdUdVdWdXdYdZd`d eF9.e+e@e#e$e%e&e*e=e-e;e>e,e'e)e!e~e{e]e^e/e(e_e:e<e[e}e|e6*1e2e3e4e5e1e6e7e8e9e0eaebecez[jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"H@v$N$Z@*@ #*#*@%#K@f#z#A#!#R@,#i$deeefegeheiejekeX/lemeC^neoepeqereseteuevevesewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeD'NeOePeQeCaReSeTeR)UeVeWeXeYeZe`e f.f+f@f#f$f%f&f*f=f!]-f;fu0>f,f'f)f!f~f{f]f^f/f(f_f:f<f!^[f}f|f1f2f3f4fz[jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"o#p#5fK@'#W@N@w@-#.#M@{$S@w@>#8#M@:#6f7f8f9f0fafbfcfdfefffgfhfifjf*0kflfmfnfofpfqfd/rfsftfufvfwfxfyf#(zfAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfQf85RfSfTfUfVfWfXfYfZf`f g.g+g@g#g$g%g&g*g=g-gzb;g>g,g'g)g!g]%~g{g]g^g/g(gl%_g:g<gQ6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"o#^$[g~*!#O@N@!#P@9#%#T@)#U@'#Y#t#%#D#}g|g1g2g3g4g5g6g~f7gj'8gn69g@~L,0gagbgcgdgegfggg-{hgigA'7}jgkglgmgngogpgqgrgsgtg98ugvgwgxgygzgAgBgCgc*^{DgEgFgGgHgIgJgKgLgMgNgOgPge|NeQgCgRgSgTgUgVgWgXgYgZg`g h.h+h@h#h$h%h&h*h.6=hk0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"o#-ha!s& #'#)#M@0#r#Q@'#N@Q@c@)#Z@-#]#@#;h>h,h'h)h!h~h{h]h^h/h|5(h_h:h<h[h}h|h1h2h3h4h5h6h7h8h9h0hah)fbhchdhehfhghhhihjhkhlhmhnhs4}doh_fphqhrhshthuhvhwhUbxhyhzhAhBhwbChDhEhFhGhHhIhJhKhLhGfMhNhOhPhQhRhShThUhVhWhXhYhZhR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"H@v$0$:@;@P@L@w@>#L@6#U@=$U@I#*$ #M@K@G#c@^'M_`h i.i+i@i#i$i%i&i*i=iih-i;i>i,i'i)iZ:!i~i{i]i^i/i(i&a_i:i80<i[i}i|i`d1i2i3i4i5i6i7i8i9id00iaibicidieifigihiiijikiliminioipi'0qirisitiuiviiewixiyiziAiBiCiDiEiFiGih3HiIiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"@@v^Ji,#'#i#)#2@-#N@w@b#K@b#Ji9#Z@R#L@E#L#=$)-KiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi`i j.j+j@j#j$j%j&j*j=j0g-j;j>j,j'j)j!j~j{jr6]j^j/j(j_j:j<j[jdd}j|j1j2j h3j4j5j6j7j8j9jgf0jajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrj<+sjibk0jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"H@i=0$r#M@i#)#Z@W@N@Q@-#,#f#l#}#)#-#9#j#1#c=0='-tjujvjwjxjyjzjAjBjCj|bDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjDfSjTjUjVj}dWjXjYjZj`j k.k+k@k#k$k_9wb%k&k*k=k-k'3;k>k,k'k)k!k~k{k]k^k/k(k_k:k<k[k}k|k1k2k3k4k5k6k7k8k9ki<IijaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"@@0k0$)#c@O@]#*@b#8#f#@#N@;@f#2#|#h#e=}#7#,;B%5,-;1%n#akbkckdkekfkgkhkikjkkklkmknkokpkqkrksktk[hukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk`k l.l+l<+@l#l$l%l&l*l=l-l;l>l,l'l)l!ld<93z[z[jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"H@p]0$S@6#-#)#w@%#<@4@ $*#Z@G#9#h#|-A*7#G*';-,,,>;,'^!/)9!m]O;~lc}{l0i]l,e^l/l(l_l:l<l[l}l|l1l2l3l4l5l6l7l8l9l0lalblcldlelflglI;hliljlklllmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlHlIlFlJlKlIiz[iaz[haR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"o#8,q#r#M@Q@L@Z@-#)#t@%#)#;$8$-$/-b=,;Ll]>('('),])>)Ml}~<~6~7{NlOlPlQlRlSlTlUlVlWlXlYlZl`l m.mxk+m@m#m$m%m&m<+*m=m-m;m>m42,m'm)m!m~m4l{m]m/f^mS^25/m(m_m:m<m[m}m|m1m2m3m4m5mF1j0haIi6m6mIihak0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"o#1$'&K@*@M@,#b#U@)#b#-#A*/#/$L@/-7#{;)-7m>;1%8m/)4)(!<~s^a]8]9m0mambmcmdmemfmgmhmimjmkmlmmmnm2lkhompmqmrmsmtm<+umvmwmxmymzmAmBmCmDmEmFmGmHmImnmJmKmLm;aMmNmOmPmQmRmSmTmUmVmWmN6XmR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"o#%$5-v#;@;@)#M@M@}#[#&#H*$#}#}-,-e$/>=;[,<)~'[)}~|{Yme{e{Zmk]`m n.n+n@n#n$n%n&n*n=n-n;nBc>n,nxd'n2i)n!n~n{n]n^n/n(n_n:n<n[n}n|n1n2n3n4nOk2lAc5n6n7n8n9n0nanbncndnenfngnhninjnknlnR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"o#p#'&S@M@&#*$@#Q@*$@#6$e=1#{-=>f=->];9~mnM*4!0!9!1~5~a{i^e]g^~<nnonpnqnrnsntnunvn:9wnxnzdynznAnBnCnDnEnFnGnk0IiHnInJnKnLnMnNnOnPnQnRnSnTnUn}dVnWn7cXnYnZn`n o.o+o@o!dK[#o$o%o&o6mjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"o#^$W#*$M@U@,#;@5#*$@###c=2#a=';^-~>*o,!{)|{3)D%6]d^=om]g^O_p/-os/5[;o>o,o'o)o1iCc!o~owkCb{o]o^o/o(o_o:o<o[o6mR6j0}o|o1o2o3o4o5o6o7o8o9o0oaobocodoteeofogohoiojokolomonooopoqoro54hcR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"o#3:q#J#;@f#7#O@;$m#Z@L#)-G*]>{;)-)>1%so1)7!toj$0{uoj^m/h^u/vowoP_xoyozoAoBoCoDom'EoBbFoGoHoIoJoKoLoMoNoOoPoz[R6R6j0Qo8kRoSoToUoVoWoXoYoZo`o p.p+p@p#p$p%p&pzk*p=p-p;pjo>p,p'p)p!piaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"H@p]J@Q# $M@-$b#8$9#j#'-)-#;~p];>*&,^'^'/!9!2{o]i^j(l^p/~<k]won({p]p^p/p(p_p:p<p[p}p|p@a1p2p3p4p5p6p7p8p<+C|z[R6R6R6iar}9p0papbpcpdpepfpgphpipjp11)/kp1llpmpnpopppqprpsptpupvpwpxphajaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"o#6%|>r#'#M@*$~#$-B%~$a=/>^-K$('3,,!7!:!g{3~e]e{i]p/o/q^ypg^r(b[zpO6ApBpCpDpEpFpGpKbHpIpJpKpLpMpNpOpPpQpRpjaR6R6R6R6R6z[)5SpTpUpVpWpXpYpZp!bD!`p qp5.q+q-c@q#q$q%q&q*q=q{%-q;q>q,q03ibR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"'q-h)qr#'#O#m#-#!q{;L#<;{>)>^>~q^!()9!9!n#0{{qo^q^p/t/]qn(wo^<^qG7c3/q(q_q:q<q[q}q|q1q2q3qe14q5q6q7q8q9qZhjaR6R6R6R6R6R6ibQ60qaqbqcqdqeqfqgqhqiqjqsbkqlqmqnqoqpqqqrqsq4otquqvqwqxq<glnR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"'q5$&$K@Q@E#m#M#O#=;f=^;-;yq'>')<)0!:~[~5~a{i^zqr/q^Aqr(BqCqDq#6F|x}EqFqGqHqIqJqKqLqMqNqjpOqPq9fQqRq<+y|z[R6R6R6R6R6R6R6R6ln54InSqTq<+UqVqWqXqYq-=Zq`q r.r+r@r#r$r%r&r*r=r-r;r>r,r83z[R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"o#0k#$S@M@j#}-@$@,-;#;[-,!'!^,4)/)g{1~7~j]b]g^l/won(u/'r)r!r@6A|~rn[{r]r^r/r(r_r:r<r[r}r|r1r2r3r4r<+5r&6XmR6R6R6R6R6R6R6R66r7rC|8r9r0rarbrcrdrerfrgrhrirjrkrlrEpmrnror,bprqrrrsrtrur9<k0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"'qvr#$J#3#~$c=/-wr-;e$<>{'3,)!4)4)7!0{j]0{%&p/g^woypxra[yrzrArw|BrJ|CrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrIiR6R6R6R6R6R6R6R6R6R6jaibibibHiv1TrUrVrWrXrYrZr`r s.s+s@s#s$s%s&s*s=s-s;s>s,sm3ibR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"'s)s!s~*@#E#~s9#f=>;-,'>M*~'<!9!9!<~0]i^i^r/g^p/0[{sm|]szrx}q2s2F|y[^s/s(sqk_s:s<s[s}s|s1s2s3s4s5sz[k0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Ii5sF16s7s8s9s0sasbscsdsesfsgs'=hsisjskslsmsnsD1z[R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"osvr|>psO#b=9=C*J*{;{>3,!)2)Ym<~[~7]n^m]n^i}q^u/qsQ(rsq}14q2D}F|B1t2sstsusvsws-pxsyszsAsBs<+Csj0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Iiz[DsEsFsGsHsIsJsKsLsMsNsOsPsQsRsSsTsUsVsWsDlR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"XsYsZs`s<-L#~-A*[-=,>*9~1!1!|$2{6{d]g^k]g^voypwo)ryrq}x}q2D}G|J1F1i< t.t+t@t#t$t%t&t*t<+=tsj-tjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Q6IilnDlDlz[;t;t>t;t;tz[z[DlDlDs,t't'tD|)tR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!t~tZs{th#]t/>B%|,^'<,^!3!_!0~a{8]i^r/s/r/n(^t/t(t@6x}q2D}G|J1F1x2k3_t:t<t[t^=}t|t1t2tz16<ibjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Q67rj0j0ibS6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"3tYs4t5t,-:-n]/;*,|)~'0!<~b{8{i^i^b]~<p/q^n(z(6t)5z}b37tG|8tF1x2g3549t0tatbtctdtetm2ftia6mjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"gthtitjtf=;>>*:;]'2)!)kt2{[~=og^m]b]wor/ltz(mt9<B|r[s2<gB1F1x2h303m2~5ntotptqtrtstIijaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"ttutvtwt#;E%&,/,()!!|!j$4{j]xtp/k]ytn(o(y(zt9<p2s[C}F|AtF1x2340364q}&6BtCtDtEtJ|IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"FtGtHtItJ**,2'Jt^!_~D%)*0]e^p^wop/Kt0[S(LtMtNtOtA|Ptp2H1e3Qt4464q}9<&6n9ibibftIiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"RtStTtUt~>^~{!3,`(2{8~Vtm]Wtm]r/Y(p/L(-oXtf<I}B}L|&:~:v2g303647<93&6Q6R6jajajajaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"YtZt`t/>Q$'>')_)kt4{8{9]g^zqp/i}p/ u.uq1+uu[q[B|@uI1}of3t1647<#u&6P6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"$u%u&u-;-,,!')/)4$l]7~*uq^g^u/ypo(=u-u~5x}x}F}y1C1;uh<>ul2M6#u&6P6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+",u'u)u['/,_)1!2)5~Z&e]o^q^g^s/0[S(!u~5G|X5BrG|~uZ5k<m3t|{u~5%6P6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"]u^u/u(u2,~!|{3)f{m]e]i^wog^q^_uc[5<:uRrH}F|A1/:c<k3>56<!5<uO6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"[u}u|u1u~'/![~7!b{h^n^m^i}Y(]q2u3un<s[o[n[K|Y5v2h3 6m2@6$6O6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"4u5u6u''~'|!7us^=oh^m]s/n(q^y(8u$6q[x}F}I|y[}of303n<8<9<9uQ6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"0uaubu6)8)}~0{3~0{g^i]Y(0[P(cuduD1t[s2<gv124d<k[n27<93&6Q6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"eufugu3!/)4~0{8]k^q^b]Y(n(g}huiuv[B}C|p2d3c<Qop},5~5%6P6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"j juku}!F@3-8]0{m^wom(q^w(lu$6mux}G}I|y[v2g3 66<)5G7o9R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"nuoupuqu7!6]0]m]Ktwor/Q_-oi[ruv[C}G|v1o2d<t164q}9<suR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"tuuupu7u5~vuh^g^g^n(wowuxuzru[v}L|p2/:b<yur}M6#u&6S6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"zuAuBu2{[~j]h^k]k]i}v(Cu)5y1y}Duy1I1u2g3 66<!5%6P6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"EuFuGu4{7]8]m(s/g^HuIuhu54Otr2F|J1Z5i<k[64q}9<O6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"JuKuLuZ&e{o^r/%&p/MuNu93C}14B|J|Y5c<j3>5j[#u&6S6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"OuPuQu(<j]m^%&p/woMus|0<RrRux1C1a<f303m2)5G7P6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"SuTuUui]8]Vur/s/m|WuXuYuArn[z1F1b<yur}7<9<9uR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"Zu`u vi]o/Kt.v]qG(+vf<RrC}x1C1}of3 66<)5%6P6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"@v#v$vq^o/s/.vD(%v#6YuArn[z1d3b<m3n2q}9<N6S6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"&v*v=v%&i^g^0[F({:0<v[Rux1C1}o`5546<D7%6Q6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"-v;v>v%&u/q^O(,v8<C}y|n[z1F1b<m3'v8<9<N6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+")v!v~vr/k]o({v]v 6RrH}x1C1}o`5546<~5%6S6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"D.^v/v-og^W_(vm2I|w|B|K|H1_vm3n2q}$6O6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+":v<v*uypg^[v}v+6r[A}E|v1;uf3446<~5%6Q6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"|v1v2vn(p/P(3vo2t[D}I|~:c<Qor}7<9<O6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"4v5v6v.vD(7vq}r2p[L|A1/:h<t1m2)5%6Q6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"8v9v0v0[Iuaviuv[H}x1Yhu20<p}j[93O6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"bvcvdv@)r(r1v1b3o3K|F1Rp>u64@6$6P6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"ev9v0vQ(fv7<q[q[D|J1o2f3 66<E7&6Q6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"gvhvN_{vivjvkvH}u}y[lvi3t|7<9<O6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Ii7r)tmvhcR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"nvovpvR(QoI1b3o3K|F1b<k[64'5%6Q6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6IiqvrvXtsvb<IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"tvhvW(uv{uH}p[vvJ1o2f< 66<E7&6Q6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k0jak0hcja6mhaR6R6R6R6R6R6R6R6R6R6R6jajawvxvyv7 zvAvR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaIiXmhcjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"BvCvDvEvm2s[r2G|D1u20<p}M69<O6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k0~5$6FvGvk0HvIvhaR6R6R6R6R6R6R6R6R6R6jaJvKv;+LvT MvNvR6R6R6R6R6R6R6R6R6R6R6R6R6R6k0OvPvQvRvO6k0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"SvTvUvc3s}u[E}m[c3Rpm364@6$6P6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Xm$6VvWvXvYvZv`v w.wjaR6R6R6R6R6R6R6R6R6R6Iio}+wn<@w34IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6)t#w$w%w&wC1*wR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"=w-wxtt1K|q2;wA1/:d<t1m2~5%6Q6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jahap2>w,wx 'we )w!wIiR6R6jajaR6R6R6R6R6R6R66m*wIi*w6mR6R6R6R6R6R6jaR6R6R6R6R6R6R6)tm3-.~w{wN ]w^wR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"/w(w_w,514A}E|v1t2345<j[9<O6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Xm$6F}At:w5%<wx$[w}wjaR6ja&6$6jaR6R6R6ja@6G7ha+6&6ja|w1wjaR6R6R6ja2wO6R6R6R6R6R6R6k0!53wm[4wI*0<)tR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"/w5w6w7wr[H}u}y[u|Qor}q}$6o9R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6P6$6$6ja8wib9w0wawR6R6ja!5j[haR6jaR6ha6<9<Iin<%6ha)5bwhaR6jaR6ha6<XujaR6R6R6R6R6R6k0)tha}wcwhaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"/wdwewfwu[F}v|H1b<k[64'5%6Q6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Iik0haIijaIijaR6R6R6R6R6R6R6R6R6R6R6R6R6XmQ6q}k0R6k0jaR6R6R6ja!5M6haR62wR6ha,59<Iim2%6ha!5q}haR62wR6-t6<|wjaR6R6R6R6R6R6O6M6jajak0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k0IijaIik0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"6.gwhwiwb3n[A1/:d<03T6~5&6S6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jw|wkwlwIimw9uk0R6R6R6R6jaR6R6R6R6R6R6R6R6R6.6jaR6O6S6ja2w8<ha9<,5jaQ6n<jaha,59<Iim2%6ha!5q}haP6n<jaQ6m2O6k0q}N6R6Q6O6R6O664jaR6R6R6R6R6R6R6jajaR6R6R6R6R6R6R6ja#6r}n9nwowk0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"pwqwrwr2swD|8to2f35<+693O6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R67rt1C|twuwvwC|wwxwywjaR6R6R6%6O6R6R6jaR6R6R6R6jam2&6ha8<!5haXuT6IiIi,5hahaIlIi7r+69<6mm2&6Ii1wq}7rk06<zwQ6+6hcn9n<&6jaAw9<ha~5AwjaR6R6R6R6jaR6R6N6N6R6R6R6R6R6R6R6Iiv1E}BwCwDwJvjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"pw #zrb3YuG|C1u2i3t|7<9<O6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaN6u|EwFw! GwL HwIwjaR6R6haJw~5jaR6%6Q6jaKwO6haq}'5IiR6Kwib2w6<o9q}l<5<r}l<m3LwZ5c<h<t}c<h<lva<m3i3Mwn203d<)5Srm2NwIi,5ha-t7<1wha&6j[haQ6N6R6k08<q}k0R6R6R6R6R6R6ja'5J1Ow^ PwQwn9R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+":+RwSwy}H}TwI1c<l3.68<G7P6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Ii54UwVwRwWwXwYw:wZwR6R6jaja#uKwjak0Pv2wha,52wln#6q}N6`wc< xc<F1b<l30354`w.x+x@x#x$x%x&x$x%x$x*x=x-x;x`w 6t1k3u|/:h<qvc<64o9,5&6ln@6@6ha9<+6hajam2&6jajaR6R6R6R6R6Iio3u[>x,x'x)xjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"_+!x~xu[D}J|c3b<k[n<)5%6Q6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja&6~5$6{x]xib^x/xk0R6R6%6R6o9n<o9haj[(xib!503 6e<a3i<n3>5_x:x<x[x}x|x1x2x3x4x5x6x7x8x9x9x8x0xaxbxcxdxexib|x}x[x<xfxgxiuk3c<~:Qo54t19<z[93@6ha&6m2jaR69uR6R6jaR6R6R69<1wo9hxN6k0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"3.ixjxr[G}K|/:i<t1T6!5&6S6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jak0jaR6)5R6IiQ6N6R6R6n<R6haM6Srhaq}b<h3:ui<r}-xkxlx}xmxnxoxpxqxrxsxtxuxvxwxxxyxzxAxBxBxAxCxyxyxDxExFxGxHxIxJxKxLxMxIi>t<x&xNxiuc<u2k3l<#uIi93@6Ii%6,5jaR69uQ6jaO6@6hajahajaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"OxPxQxq2C|B1t}f< 66<#6&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja,5#6jaQ6m2R6haq}%6Iin2lvb<c<54RxSx>tTxUxVxWxXxuxYxZxAxBxBx`x yZx.yzx+y+y+yzxzxzxzx+y+y+y.yZxZx@y`xBx#yAxCxvx$y%y&y8x*y6mSx&xbwt1u2d<lv'5Ii!5!5ha(xJwk0haq}8<k0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"=y-yC}swD|8t;u`5L6+69<O6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaja2wm2jaXm,5&6ib,5c<c<u2>5;ySxIi>y,y'y)y!yAxAx@yZxzx+yZxBxAxAx@yzx ~xx~y~yDxux{y{y{yYx~y~y]y ~zx`xAxAx^yzx+yZx yBx/yZx(y_y:y<y[y}x}y|y`wc<c<l<!5z[)5@6k0o9n<Q6R6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"1y2yy|o[F|C1s}0<p}7<9<O6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaR6R6R6R6R6Q62wjaham22wz[#6i<c<c<>53y4ymx5y:y$y6yAxBx.y+y+y@yAxBx ~7ytx8y9yqx0yaybycyMx*y[ydyeyeyey*y*yfybxgyhyiyjykylymy7y ~nyAxZx+y.y yAx.y(y8yoypyqyry|yn3u2c<h<N6z[)5q}haR62wR6R6R6R6R6R6jaR6R6R6R6R6R6R6R6R6jaR6jajaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"sy8<y|B}F|C1u2j3r}q}XuP6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6S6IilnIi*w*wIi^wIiS6R6R6R6ja%6R6R6R6R6R6k0Jw%6IiN6r}k3;uh<=x}yTx5ytyuy+yAxZx+y+yvyAxCxDxwytyxygy*yyy7r4yzy&xAy@xByJlJl@x1wCyJl1w@xJlJl@x@x3ykxDyEyIiFyMxGyHyIyJyKyzxAx@y+yzxBxBxLysxMycx;tSxbwe3v203t|haIi!57<jajaQ6R6R6S6&6jaR6R6R6R6R6R6R6haR6R69w9whaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"g$)5w}B}G|D1v2k3r}q}$6P6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Ii44F|qvNyOyiuPym2IiR6R6R6jaj[#6k0ja7<O6k0Xu@61wc<t}>5:xQypyRySyzxAx.y+yZxAxZx(ylyJxTyUyIi4yVy|y-xWyh3Xyh<l<e<e<u|h3h<v2l3v2f3i3v2f3g3Rpg3h<i<h<i<LwIl+xYy}yEyZy*y<y`ywyYxBxBx.y+y^yny7y z.z+zDy@zm3F1h3~5M6Q6ja2wAwjak0Aw1wjaR6R6R6R6R6R6haAw#z$z%z&z*zhaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"=z-zw}B}G|D1v2k3r}q}$6P6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6lnv1sj;z>z,zb@l 'z)zR6R6R6R6O6m2o9ja!5q}z[)5u1lv!zSx~z{z]z!yAxZxCx.yAx^z/z(zay[y6m_z3yj[`ww2d<u2d<03n3@6#6>5R6Ii,5ibR6+6:z+6R6)t,5n9IiKw)t&6>59<q}n3n3k<e3k<d<iubw:xryIi<z[z'y}z@yBxzx+yBx`x|z1z2zEy<xiuc3}o9<z[,5$6k0&6m2jaR6R6R6R6R6R6R6ha9<Ar3z4zn 5zibR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"6z9uw}YuG|Yhv2Qon2q}$6P6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R67ru|v17z8z9z0zf az)zR6R6jajaja@6q}Iiib03c<hbbw}yexbzczZxBxCx+yBx@yuxtyLxmxSx&xdzHllvc<h3h3KwN6+6O6z[Pvo9XmWyQ6P6n<ja%6ezIim2%6jan<P6Q6n<ja9uPvIiG7,5z[Xu8<9u64h30<e3e3 6+x<xEyfzgzkyhzBxBx+y.yAx6yizLx}xSxn<v2;um2z[ha6<9<jajaR6R6R6R6R6R6k09ux}jz0#kzlzIiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"mznz14r2H|y[x2l3n28<2wP6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Iir}m[>5ozpz7wqzJwn9R6ja9<#6jaja7<#6h<t}IlrzszHyuxBxZx ~.yBxYxtzgzuzEy:xPvd<lvu|r}#6n<z[O66<Ii#u,5Iij[~5k0.6Q6P6n<ja(x,5Iim2%6jam2P6Q6n<ja%6n<Iij[!5han<N6jaPvIiIin29<n3}ou2h3vz&xEyUywzxzxxAxzxCx#y ~yzzzibAz54t}Qo#68<k0k0@6%6R6R6R6R6R6Xm)5k364BzCzn9R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"DzEzv[s2I|~:c<m364@6%6Q6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6S6IiftIi)t)t6m*whaQ6R6jaN6n<jaIih3D1jwSxszMy{ynyZx ~@yBxFzGzHzAzIzWyh<c<v26<6r+6R6jaWyQ6N664ha2wm2Ii$6@6k0#6R6R62wR6R6O6k0n<%6ja&6R6R62wja%69<haq}9uhan<N6Q664ja2wm2Ii9uq}R6Jzx2lvg3bwAz>tcy:yhzny.y ~BxzxKzLz|xMzk[v1547r&6T6R6jajaR6R6jajaja7rIin9IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"NzOzt[F}@uH1b<k[n<)5%6Q6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaP6KwR6R6O6Kwjaha&6 xl[j3$xqyPzFxAx.y ~Bx.y_yVxQz4y|y x;uc<03IiXu8<Ii@6q}Ii7<)5k0@6N6O6PvQ6jajaR6jaR6R6jaR6R6R6k02wP6;t7rR6R6jaR6R6jaR6jaja2wm2k02w!5Ii7<!5Ii6<|wIiKwP6ja0<c<o2k[Rz4yUyoySzBxZx ~Bx ~%yTzryRzl<Uz03awk0O6,5R6ja&6q}jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"VzWzu[F}K|/:i<t1m2!5%6Q6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja+xq}k0jaq}9<R6l<u1Cy4yLxXz`x.y]y^yzxYz8xZzSxj[c<u2g<Q6ha6<R69uPvjaXuq}k09u&6jajaR6haq}2wjaR6R6R6R6R6R6R6R6ja$6h3~5a3c<XmR6R6R6R6R6R6R6ja9<@6k0R6jaja&6O6ja+69uP6PvR69uKwhc9<c<a<k<`zry A.AtxvyZx ~Bx~y+A@A_zNxNtk3ha7<#6jak06<9<jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"#A$Au[G}K|/:d<t1T6~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k0Kw9<ha7r%Ad3`w&A*A=A ~Bx]yZx@y_y-A}xAzPvu2t}n<ibq}9<IiM6~5IiM6&6jaR6jahahcR6R6R6R6jaR6R6R6R6R6R6R6R6R6R67r0<;A54>AvvjaR6R6R6R6R6R6R6R6jajaR6R6R6R6k0n9R6jak0$68<Iiq})5Ii)5#uhc03Z5e3Nx}y,A.ASzBx+yCx/yEx.A'AAzk3)AL6z[k0q}@6k0jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6N6N6jaP6+6N6h<o2Yy;twz}zAxCx+yAxFzwz~ASxJzv1u2$6&6q}n99<m2k0G7m2k0R6R6k0#u$6{A]AjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6ja&6A|i3t}Ar64IiR6R6R6R6R6R6R6R6R6R6R6R6k01w,5.wlwo9jaR6R6n<P6R6n<N6k0+6R6@6s}m<NxrzQzMyvxAxCx.yBxly^ADy+xo2K6/Aj[jaja&6o9R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaja%66<jaz[,5Atk[_zdx(A`x.y ~BxKy_AFyrz:Ao2d<!5AwR6jaPv&6jaAwP6k06<2wjaXm2wsj<A[A}A$AibR6R6R6R6R6R6R6R6R6R6R6R6R6Iin3q[b<z1I1Q6R6R6R6R6R6R6R6R6R6R6R6R6R6o9v||A1A2A3Azwja#6j[haN67<ha#6,5IiN6q}!5k<l[q}4AdxtyxxBx ~Bx!y&y5A<xe<)A#uftN6JwO6jajaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jajaR6P62wjak0#6)554a36A7A8AhzAx ~.y y9A0ADy6Au|c<r}&67r@67<Ii1w~5XmjaR6jaO6Q6R6R6Iiy[aAbA0 n[*wR6R6R6R6R6R6R6R6R6R6R6R6R6R6haDlIiftibjaR6R6R6R6R6R6R6R6R6R6R6R6R6ja+6cAdAE O@eAjaP6O6R6R6jak0)5$6haJw9<ib#u>5u|j<AyfAgAwyBx+y+yAxhAiADy,5c3n<@62wjaQ62wjaR6jajaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja!5&6jajaq}1wIin9t}u2$x Aty.yZx ~AxjAwz>t:x0<o203z[Q6PvR6R6,5Q6R6R6R6R6R6R6jaR6R6Xm%6o[AtkAlAmA6mR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaz[IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6jaS6nAoA;upAqA)tR6R6R6R6R6R6R6R6ja&6+6ha&6n<IiIie<u1m3Az-trA7yBx ~BxwxsAEy]nF1l<ibIi7<!5jaja$6#6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaXuJwQ6jaR67<!5o2n3_ztAuAvACx.yBxiz*A_zn<D1qv6mAw9<Iiq}1wk0Q6R6R6R6R6R6R6R6R6R6R6ja&67<)5wAxAhaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k02wyAt|haR6R6R6R6R6R6R6R6R6R6R6R6R6R6P6!5q}O6Qw/xR6R6R6R6R6R6R6R6R6R6R6S6k0j[93Ii8<#uhah3F1bwDyzAYznyCx.y yAAQzAzi<e31w@6jaja%66<9uR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja9<Kwjaft+6p2m24ABA(yBx]yBxYxPzAzNwv2b<7<!5IiN6n<6rR69ujaR6R6R6R6R6R6R6R6R6R6R6R6R6hak0jaIihaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6lnI|CADAIiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6n9hajahajaR6R6R6R6R6R6R6R6R6R6R6R6R6&6ja&6m2jaha8<j[o2h<Izqy&yxx@y ~AxEAiA4A54FA9<7rN66<N6jaR6R6R6R6R6ja)zz[R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jak0!51wn<a3CyEyGA+y.y ~HA_yiADyPvl[3wIi-t6<9<ha@6q}k0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jawA#ujaR6R6R6R6R6R6R6R6R6R6R6R6R6R6^wIA[+#wywR6R6R6R6R6R6R6R6R6R6R6R6R6R66mJAIiQ6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaja,59<ha@67<7rR6c<c36ADy7x/zAx ~Bxvx8x4AKwa37<q}2wjajaR6R6R6R6jaH7KALAhajaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja!5#6Xmibl3DA;y1xAABxCx+y yMA A<xd<o2&69<q}Ii%66<jak0+6N6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ln%:NA:zR6R6R6R6R6R6R6R6R6R6R6R6R6R6Ii64OAPAQAR6R6R6R6R6R6R6R6R6R6R6R6R6)tRASAh[hcR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja2wq}haIi7<]nk0,5O6#ua3k34yTAUAnyCx.y]yVASxWAFAr}7rja@6$6jaR6R6)th<6 XAYAhaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jajaR6,5Q654F1$xszZAAx ~Zxyx`A4yElu1h3q}Iija6<#6XmR6R6&6@6N6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6hct|4. BywjaR6R6R6R6R6R6R6R6R6R6R6R6R6S6IiywQAR6R6R6R6R6R6R6R6R6R6R6R6R6R6;t.B_++B*wR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja9<6<R6m2@6n98<7<n9jaJwk<s}@B#B$Bzx+y+yvy`y%B]nI1m29<8<R6jajaR6)t&B<.*B=Bk0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jak0R6ja$6N6jahab<c<Az*A-B#y]yvyhz;B&APvA1m2z[)57<ha&6$6jajaN6w}7tO6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6haM6>By|NwjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6mv,BD.(t'BR6R6R6R6R6R6R6R6R6R6R6R6R6R6jahay[F}vv)B!Bib9<o9k0IlXuz[54D1`z_z~B!y y ~Ax{B]B#xo20<ibja&6%6jaR6Iit}e<n9R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6haL6q}Iija#u+u7rd<t}Ey^BJyny]y#y/B(Bryn3o28<q}k0jaj[2wjajaR6ja2wF}D}`wIiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6n9)t%6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k0jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6k0ez!B8<XmR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja@6_By1:Bn[o9k0ja#u@6haO6q}q}a3r}&ALxhzBx]y/y<BQz#xI1n3Xm6<%6R6Iim2zrDlR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Xm!5y[j[Iija&6i<o2Sx2z/zBx]yAx[B}BEyx2d3R6hc!5M6XmR6O6R6R6R6ja$6Atw}k[hcR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jak0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6q}%6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6Iiz[haR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaIiC|t[3wvvF}R6jaR6Q6jaS6Jw2wib#6y[l34y2ztxBx]yAxxzQz#xF10<jajaIit|a3$6XmR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaQ6&6jajaR6R6R6-t&6I164z[54u|Sx(B|B#y]yBx(A,A#xo2K6ja,5S6ja)5P6R6R6R6R6R6R6jan254haR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k0haR6R6R6R6R6R6R6R6R6R6R6R6R6Ii6<v}o3k0jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6@6+69<.62wXmR6R6R6ja&6~5Ii&6,5k0k<b<Az1B2BAx]yAx3BQz#xa<64Dln3F1jak0R6R6R6jaP6N6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaN6m2n<,5R6R6R6R6R6haQ6u2t}l[>t[y$y#y ~AxIx4B5Bt}b<IihaXu+6R6XmR6R6R6R6R6R6R6R6Ii6mS6IiiahaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k0@6,5haR6R6R6R6R6R6R6R6R6R6R6R6ja&6o2wvQ6jaR6R6R6R6R6R6R6R6R6R6R6k0z[R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6haR6IihcIijaIijaR6R6R6R6R6R6ha&66<P6haja6Bu|Az1BwyBx ~Ax7BQz@BI1Z5c<IijaR6R6R6ja2wn<64)5jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja,5|wIiq}@6XmR6R6R6R6Iijan3@BeyJyAx ~Ax8B9BRzv164R66<0Bha#6+6Q6R6R6R6R6R6R6R6R6R6R6IiK6z1q}haR6R6R6R6R6R6R6R6R6R6R6R6R6R6ja&6u}y}L6IiR6R6R6R6R6R6R6R6R6R6R6Ii03H}Wso9jaR6R6R6R6R6R6R6R6R6R6k0#6a<k0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k0@66raBbBcBR6R6R6R6R6R6R6R6jaN6Jw/Aha%6,5IiL6d3#x,A<BBx]yAxdBeBfBt19uIiR6R6R6R60BPvO6ha,59<jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Q664jaja&6Pvk0R6R6R6Ii,5@6QyQzgBAx ~AxIx#BhB;un3haha93q}jak0!5$6jaR6R6R6R6R6R6R6R6R6jah<C}v1lnR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja+6C}m2n9R6R6R6R6R6R6R6R6R6R6jajaja649<haR6R6R6R6R6R6R6R6R6R6R6ywiB=;jBR6R6R6R6R6R6R6R6R6R6R6R6R6R67rn3kBlBmBnBoBhaR6R6R6R6R6R6R6ja1w9<XmO6Kw&6hawAc<D19BQzwy/y]yAxkypB;t}om2IiR6R6ja#6+6hak0q}@6k0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Q6n<jaja%6m2k0R6R6IiAwYhXuqBrBvA]yAxUAqyRzo2q}o9,5O6jaO6R6R6jajaR6R6R6R6R6R6R6R6R6R6Ii>usBn2IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6ja&6tB#z)5haR6R6jahahaIiIiIi6mja%6%6&6Q6N6&6IiIiIiIiIihahajaR6R6n9uBk@2,nzhaR6R6R6R6R6R6R6R6R6R6R6R6R6ja2wvvvB|.^+wBhcR6R6R6R6R6R6R6R6R6jaR6Q6P6ja2wKwIik[v1#x1BEABx]yAx+AAzKw:uzrIiR6jaD7j[hak0q})5k0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jan<R6ja%6m2IiR6Ii7<j<jw>tqxBx]yAxlyeB5Bv1n3k0ha$6j[jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6IiJ1b3n2IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6O68<M6O6IiIiIi9<+6T6 xi<k<l<d<Rpe<b<e<f3k<k<b<k<i<03,5j[$6IiIiIik0xByB&6jaR6R6R6R6R6R6R6R6R6R6R6R6R6IiJzzBABSABBCBjaR6R6R6R6R6R6R6R6R6R6R6R6jaO6m2O6haR6e3Z5Ey@AFzvy ~BxVA&xm244+6IiKl9<Kwk0k07<!5IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja2wq}PvR6ja&6n2'5Xm+6n3&6@BhyAxCxBxcz}B:xo2646r6<o9jaQ6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Ii7rjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaIiibhcq}jwj<c<e3i<k<54PvAwr}@6m2G7n<2wq}8<m26<m2Kwk[h<c<c<e3e<n2@6ibDlIiR6R6R6R6R6R6R6R6R6R6R6R6R6R6ja2w93&6DBEBk0R6R6R6R6R6R6R6R6R6R6R6R6R6R6S6Q6ja$6,5Ii54u2lxiAEx.y^zFB.z[xjat1j[%6@6KwjaIi!5Kw1wjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja)5%6hak0n99<XuM6k[jaja#x2zSzGBHBIBSx9< xk0ha%67<6rR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaR6R6jak0R6R6R6R6R6R6R6R6R6R6haIiO6Pvg3u1d<b<6<.6%6@6Q67<%6M6$6q}1w!5,5O6Pv]nm2R6m2O6Kwhaq}&6.66<lvk<u1m3+6XmIihaR6R6R6R6R6R6R6R6R6R6R6R6jajajajajaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaN6IlQ6n9&6g39u4yJB~y.yKBMA#xk0R603n2jwq}~5!51wjwzrjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6%61w!5)5)5)5#uKwt1jajaR6R6$xLB3Box<xq}k0&66<%6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja$61wjaR6R6R6R6R6R6jaIiha+6f<o2}on<n2ja7<R6m2Q6n<P6.6S6n2O6PvN6j[,5N6m2O6n<P664O6n<N66<&6,59u)5N6n<>5s}lvh3@6IiIiR6R6R6R6R6R6R6jaz[IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja9<Kw7rJwMB&AVx yNB]BjaR6jaQ66<q}7<7<7<7<q}1wR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja2w7<q}q}q}q}q}q}jajaR6R6R6R6#xja#Bj3c<6mk0&6KwN6haOB6mS6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaIiw}Atz[R6R6R6R6ja6mO6iuu1Rpm39<)5N6+62w6<%6m2&6n<S6)5S6$6S6%6S6S6m2%6O6R6%6R6#6Q6!5&66<9<j[1w8<)5!5|w|wq}m3u|a<n2jaIiR6R6R6R6ja!5F1k3jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja&6,5R6Xm%6c3n2IiPBjaKlR6R6R6R6hahahahahahahak0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jahak0k0k0k0hak0R6R6R6R6R6R6R6IiL6hb9<jaR6jajak0)5avQBIiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R67ru|RBibR6R6ja7r2wm3u1f3j[1w&6M6$6Kw$6+6%6!5N6R67<1whaR6jaR6jaR6ham2%6jaR6jaR6jaR6Iij[1wN6O6@6P6m2O6PvO6Jwja7<j[b<t}54Q6IiR6R67rn3SBz1hajaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jajaja6mJvhajaR6R6ha,50<.6>tjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ha 6.6!5R6R6R6R6R6z[)Ao TB9wjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaQ6AtAr1wha7rN6m3)Ah<%6M6ja64S6n<O67<ja%6jaR6jak0~5@6haR6R6R6R6R6R69uQ6R6R6R6R6R6R6haM6Xujajajaja&6R6q}%66<N6m2ja7<2wc<a<03R6IiIip}c3y|8<haR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaN6F|7t':-#UB)tR6R6R6R6ja>5r}IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaha44n<IijaR6R6R6R6R6z[yAy JiIwjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Q6$69<jan903t}e39uq}&6M69<!5Xuzr1whaR6jaR6R6R6R6Q6Q6R6R6R6R6R6R6R6z[haR6R6R6R6R6R6R6Q6R6R6R6R6R6jaR6IiM69<!59<7<#6#6#69<u|a<n2z[)5B|u1jajaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R66rR6i3VBQ#p WBXBjaR6R6R6jan9>5p}Q6N6N6N6N6N6N6N6N6N6N6N6Q6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Q6&6&6&6&6&6&6&6&6&6&6&6O654n<IiR6R6R6R6R6R6R6jaYBZBh[6mR6R6k0jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k0z[q}o2o2!5%68<%6,5&6@6k0R6%6m2jaR6R6R6R6R6R6R6R6R6R6R6R6R6jaQ6t}n2IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6Q6n<NwQ6R6@6o9m2Q6Jwk0Pvt}e39<5s7rR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaXuz1`B C<..C*wR6R6R6R6R6R6han2t|m2j[n<m2q}+6,5m2m26<n<n<9ujaR6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jajwn<PvPvPvPvPvPvPvPvPvPvn<q}haR6R6R6R6R6R6R6R6R6k0*whcS6R6haxA0Bk0R6R6R6R6R6R6R6R6R6R6R6R6R6R6-tjah<u1`whcm2jam29u#6S6jaR6R6R69<jaR6R6R6R6R6R6R6R6R6R6R6R6R6ha!5+Cj<z[R6R6R6R6R6R6R6R6R6R6R6R6R6R6R62wR6R6R6XmN6939<AwN6,57rK6a3 xIik0R6R6R6R6R6R6R6R6R6R6R6R6R6jaIija7rIiR6n3n32w@C2wk0R6R6R6R6R6R6R6hak0jaJzIiN6d3L66<Q69<M6ibj[1wjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6n<k0k0k0k0k0k0k0k0k0k0k0k0k0R6R6R6R6R6R6R6R6R6R6R6R6R6R6Ii#C|u$C0wjaR6R6R6R6R6R6R6R6R6R6R6R6hc'5o2s}k0q}9<1w8<9u&6XmR6R6R6R6R6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6hcJ1c37rR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaR6R6R6R6jaha$6R6Jw9u8<9<$6u1}o$6IiR6R6R6R6R6R6R6R6R6R6R6ja&6L6O6g3 6jaIi6mk0ibjaR6R6R6R6R6R6R6R6R6hc54%CAwz}D}r[Vv>uD1&Ciaj[#6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6n<R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6DlQx! *C=Ck0R6R6R6R6R6R6R6R6R6R6ja7r`wQxn<R6+6Q6Jwjam2(xjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Xm1wiwt}R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6haibR6R6XmR6Xm#6M6N6JwR66<Iit1Yh64hcjaR6R6R6R6R6R6R6R6R67r0<-C64I1b3'5k0R6R6R6R6R6R6R6R6R6R6R6R6R6:z;CW.>C,Cz[Q6:u'Cz}!5Iij[#6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6n<R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6hcMB)C=z!CjaR6R6R6R6R6R6R6R6R6k0k0w2F1o9IlS6Aw#6O6R6Xuj[6m*wIiQ6ibz[jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaz[z[R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6haJwH|$6jaH|C|9<JwO6&6O6q}~52wq}2w)Al3IijaR6R6R6R6R6R6R6R6ja|wo[!5d3D}R6jaR6R6R6R6R6R6R6R6R6R6R6R6haN6~C{C]C#z 6J1m2^Cz}lnIiAw#6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6n<jajajajajajajajajajajajajajaR6R6R6R6R6R6R6R6R6R6R6R6R6R6Xm/CFvk0R6R6R6haR6R6R6R6R6Ii&6a3n3#693&6,5R69<jaR6R6Xm+6(C.6z[d3At#uXmR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Ii x_C9<Ii:Cx}64haR6R6ja%6O6m2R68<9<h<}ojahaR6R6R6R6R6jaR6Iin3'CRpt[a<o9jaR6R6R6R6R6R6R6R6R6R6R6S6G7L6YhR6<Cy[[CD}2wC|c<&69<.6#6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja.6.6n<n<n<n<n<n<n<n<n<n<n<649<jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6IihaR6R6R6ha}CQAR6R6R66m!5c303@6ha6<9<2wQ6jaR6R6R6^w|Cu 1C2Cv[nA,5IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja!53Cl3k[u1A|c<ftR6R6R6ja&6&6)58<ja8<n3t}2whaR6R6R6n9Q6jajaO6R6P6jaN6R6R6R6R6R6R6R6R6R6R6R6R6R6Q6q}+6q}M68<)57<)5j[)5q}+6Kw7<P6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6N6N6N6N6N6N6N6N6N6N6N6N6N6Q6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ib4C2-2<6mR6Ii@6t}t1Ii!58<o99<k0R6R6R6R6R65C6C} 7C8Co2o3F1z[R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k0n<F1m344l3u|P6jaR6R6R6R6jaja9<R6,52wR6h3d3%6haR6Iin<9C0ChajajaR6jajaR6R6R6R6R6R6R6R6R6R6R6R6R6R6k0hahahahahan9hahahahahahahaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6)zaCG bCcChc+6E|7<jaJw6rq})5haR6R6R6R6R6R6ha6<dCl3e<l<p2~5k0R6R6R6R6R6R6R6R6R6R6R6R6jak0IiIiIiIiIiIik0R6R6R6R6R6R6R6R6R6R6R6R6R6R6Iiln6mIi7rz[jaR6R6R6R6R6R6R6haj[#6%6,5Iir}F1&6haj0eCfCgCjajaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6)thCiCjC^wq}kC#6@6XuG7@6ja,52wjaR6R6R6R6R6R6n9)tIihaIi6mk0R6R6R6R6R6R6R6R6k06mIiR6R6&68<64iuiuiuL6m2)5O6Q6jaIi6mjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja1w7<ja7<Q6@69<7<F1&6:zm<_.u%lCk0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja&6mCo91wo2n<#6jaKw&6jajaP6N6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6IiIiQ68<k[h3lvu1o2k<f<l3i<m3l3d<b<o2F1Uzl3t1~5R66mhaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja&6Q6R6ja93q}ja@6Pvd3G7ja&BnChaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja7rIi7<>5Ii@6@6R6N6R6R6R6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k0hcN6iuj<o2o2h3K6m2j[m2!5q})5n<#6)5q}!5n2q}64l30<ruo2h<6<Q6hcjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaR6R6R6&6R6j[$6ja 69<jaz[IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaib)tk0R66m6mR6R6ja7rIiR6haIiR6R6R6R6R6R6R6S66m2w+uO6#uP6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6IiIiq}h<a3v2l3Kw8<q}|wPv%6#6N6N6Q66<G7O6O6N6!59<m29<j[q}m2Lwx2y[h3!5IihaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6haN6$6&6m2%6IiR6R6R6R6R6haIihaR6k0IijaR6R6haIijaR6n9R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaH7oCpCqC7rl3K6jajaR6g303ibzr+6haR6R6R6R6R6R6IiM6~52w@6haR6XmIijaR6R6R6R6R6R6R6R6R6R6R6R6R6R6haIi.6a<Ntl3j[@6!5#6&6%6R6@6jajajajajaP6hajajajajaR6@6ja%6%6@6!5@6Jwh3y[j<@67rk0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k0$6k0ha7<Q6a<q}IiR6R6R6k08<rChxsC9<03N6jahaq}44R6ja@6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6IitCuCvCwCxC_Cx|b<ZhF1yCt[n3w|xviaR6R6R6R6R6Ii!5y[)5n9jaR6k0zCACjaR6R6R6R6R6R6R6R6R6R6R6R6ja7rq}F1a3L6@6@6~5,5Q6jajajaR6jaR6R6R6R6R6ha8<O6R6R6R6R6jaR6jajajaN66<!51w8< xt}e3~5ibjaR6R6R6R6R6R6R6R6R6R6R6R6Ii03y|Atk0jaIin2:u!5IiR6R65sBCCCDCEC3Cw|B}ft)5_Cx}E|m2FCq}haR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6IiGCHC. ICJCt|6m@6ha#6Iib3KCLCMCNChaR6R6R6Ii@6l< 6IiR6R6jaywOCPCo2z[R6R6R6R6R6R6R6R6R6R6IiO6l<D1r}@6@6%6S6R6&6jajaR6R6R6R6R6R6R6R6Iit|QC$6jaR6R6R6R6R6R6R6jaO62wjaN6938<q}n3I1g3jaIiR6R6R6R6R6R6R6R6R6R6R6ja!5l<C}XmjajaN664m3@6IiR6^wRC' r SCy|Zh>5Q69<9<0<TCUC@+o2DlR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6IiVCWCJ XCYCd3d<d<z[)5ZCI|g<`C Du1z[R6R6Ii8<m39<&6k0R6R6k0.D+DP @D#DR6R6R6R6R6R6R6R6jahcn2F1h<)58<#uja0w$DhajaR6O6R6R6R6R6R6R6R6R6jak0FA$6jaR6R6R6R6R6R6R6R6Ii7rS6k07rha~5q}@6e3)Aj[ibR6R6R6R6R6R6R6R6R6R67rl3%Dt}IiR6R6jajaQ6l38<Ii&D*Dg > =D3C&6/:Q6Iic<sBn<-Dw@_ChcR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ha1w^q;D>D@6b3t[6<j0}oQCJ1K|Iv#Ct}z[jaIi8<K6o9hajaR6R6R6R6Zw,DnBt1hcR6R6R6R6R6R6R6hahaj<c3n<9<9<j[O6)x'D)Dnz)5q[h<n9R6R6R6R6R6R6R6n9+6y|u2jaR6R6R6R6R6R6R6k0n<k[Ii~5v203&6q}WA#uiuD1l3hck0R6R6R6R6R6R6R6R6n9n<c< 6jaR6R6R6R6jaQ6K68<Hi!D,-~D#6{D]DB1ln1w^Dy|A1a3/Dn[9<haR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6G79<Qv&6Xu#6#69<!5#u9<'5#69<9<9<!5#uAwm3Q6jaR6R6R6R6R6R6R6.w(Dn9R6R6R6R6R6R6R6Ii2wa3k<!5#6%6jaR6ja_D:Db m<Qv<DE|&6jaR6R6R6R6R6R6ja&6Xu9<R6R6R6R6R6R6R6jak0:BA|Zht|~CI1k0jaja%6)5!5ru}oR6haR6R6R6R6R6R6R6R6haz[IiR6R6R6R6R6R6jaP6>564m2[DaBj[6< 6,5n<6464iuL6m26<m264Jwo9R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja#6j[7<7<M67<7<M6M67<7<7<7<7<7<7<M6j[7<o9jaR6R6R6R6R6R6R6R6R6jaR6R6R6R6R6R6R6hc'5D1 x93|wO6jaR6R6jaIwk#XAyA}DD1q2'5XmR6R6R6R6R6R6R6R6jajaR6R6R6R6R6R6R6R6haL67t$6m3a3q[q}haR6jaO6!5Xu3wNt9<n9R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jajaN6O6Q6P6N6O6Q6O6N6O6P6Q6P6O6N6O6N6O6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jahahahahahahahahahahahahahahahahahahaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R67rm2D1n2#68<R6jaR6R6R6R6ha|D1Dq}m2g3r}haR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jajau|<gd<h<v1e3jaR6R6R6jaP6j[G7m3u1$6haR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Iin<H|64|w$6@6Q6R6R6R6R6R6R6Ii)thahaibIiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaIijaIiIiIiR6R6R6R6ja&6+x9<Xu>5ruXuk0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja#6,tjwXu2wjajaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6IihaXu#6`wo2R6k0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaz[R6halnz[R6S6IiDlibS6z[n9R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaha9<Jw9<Xu6mywhaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Iii<o[n3&6#6Pv54&6k0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaz[R6IiibibR6S66mibibR6ibhaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R66r&6jxjaq}n[o2jaIin2n[i<ibg3|DhaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k0o9c<9<R69<ib2D3Dm2haR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Xmn<v1@uln!5IiQoc<Q6k0R6R6R6R6R6R6R6R6R6R6R6R6R6R6Xm#u4Dn9 6p[y[R6Iif3q[:uhc5Dt|IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6)t6Dt(mA14)Ap[r}Dlo3c<~C7D8D9D5sR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jao9h<i<IiR6ha0DB#r aD^wR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Iiv2Lv03Iijaja9uh<k[N6jaR6R6R6R6R6R6R6R6R6R6R6R6R6;tbDcD 6dDw2D}m2IiF|l3>An2eDqz:zR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6:zfDgDr[VvIik0$6R6ib`wo[EzR.a@.wjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6ja9ut154~5k0R6jaJvhDS iDlnR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jahad<D1r}haR6R6ja9<8<m3N6XmR6R6R6R6R6R6R6R6R6R6R6R6jDkDR.w|I}=hN6$6jaiac<C}ABlDmDQAjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaG7#znDoDwvt}H}n2iay[pDn3C}DqqDl37rR6R6R6R6R6R6R6R6R6R6R6R6R6XmN6m3)5haR6R6R6R6Ii7wYh2wk0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R66mz[n9R6R6R6R6jaIi)5m3&6Iik0k0k0k0k0k0k0k0k0k0hc~5t[)AQCRrv1t[6<j0F|rD xr2DAsD03z[jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja!5l3tDe<L6n[F1haz[C1E|J1c<5st| 67rk0k0k0k0k0k0k0k0k0k0k0k0n9&6m3)5n9R6R6R6R6R6S6Iiz[jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6-t)5m3Pvm2m2m2m2m2m2m2m2m2m26<t1c<9<o2i<z}D1Kw6<E|C}_BF1)5k<h<,5j[R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ja9<j[n<q}j[!5@6Pvn<@61w)5q}Pvj[+6n<PvPvPvPvPvPvPvPvPvPvPvPvm2L6!5n9R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k09u%6%6%6%6%6%6%6%6%6%6%6%69uR6%6jaQ6Iija%6%6haIihaja%6R6P6%6&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6P6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6Q6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k0hahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahak0R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6q},5+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6+6,5@6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6!5q}8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<q}~5jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6q}+6j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[j[Kw@6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R67<6<,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,56<8<jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6N6&69u9u9u9u9u9u9u9u9u9u9u9u9u9u9u9u9u9u9u9u9u9u9u9u9u9u9u9u9u9u&6N6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6j[T66<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<m2q}jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6)5q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}1wjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6@67<q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}7<!5jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6q},5KwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKwKw,5@6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6'57<q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}7<!5jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R69<~5#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6~59<R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6)5q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}q}!5jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6)5q}8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<8<q}~5jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6j[T66<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<m2q}jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jak0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k0R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k0k0R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6IiDliaDlIiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6haz[M6}od3}o6<z[IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6n99uRruD<+<+<+vDQC9<IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaIiwD<+<+<+<+<+<+<+pDS6haj05s5s5sk0Iiz[R6R6Iiia5s5sz[k0R6R6R6R6Ii5s5sIiha5s5s5sDlR6R6R6Iiia5s5sDlhaR6R6k05s5s5s5shaib5sj0haR6R6R6haDl5s5sDlIiR6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6z[xD<+<+<+yDzDAD<+<+<+:un9z1C|C|C|9<n2a<k0lnM6y[C|E|d<N6z[R6R6ftjwC|F|m2#6C|C|C|d3jajaz[7<I1C|C|t}!5z[ha8<:BC|C|G|)5k3C|v19<IiR6z[~5t}C|C|/:@6z[jaR6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Dl:B<+<+<+BDP6CD<+<+<+A|$6DD<+<+<+G|EDFDlnn[GD<+<+<+HDIDm3ibz[`5JD<+<+GD$w<+<+<+KDIiz[u}uD<+<+<+<+LDF1Zhm3<+<+<+<+5ryD<+<+MD9<iac<BD<+<+<+<+NDp2ftR6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Dls2<+<+<+OD2wPD<+<+<+w|$6QD<+<+RDvD<+>Alv<+<+<+RDSD<+<+TD7<j0oD<+<+<+c}<+<+<+<+UDj0o2<+<+<+VDHD<+<+RDn<>5WD<+<+x8yD<+<+<+<+d38<XD<+<+YDZD<+<+x8c<z[R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Dl:C<+<+<+`D$6^C<+<+<+v[$6QD<+<+<+<+<+Uw E<+<+<+)Ar[<+<+<+H|ia.E<+<+<+E|A|<+<+<++Ez[ E<+<+@E`5+E<+<+<+z164WD<+<+SDc<%D<+<+<+F|J|<+<+<+Otv1<+<+<+#Ez[R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Dl:C<+<+<+`D$6^C<+<+<+v[$6QD<+<+<+<+<+$E.E<+<+<+%Ez1<+<+<+#zDl`D<+<+<+s}&E<+<+<+*Eha=E<+<+DD2w-E<+<+<+D}n<WD<+<+;Eq}xv<+<+<+_Bv[<+<+<+s2Qo<+<+<+>ER6jaR6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Dl:C<+<+<+`D$6^C<+<+<+v[$6QD<+<+<+,E'Cx2'E<+<+<++EKD<+<+<+^DIiOD<+<+<+Z5v|<+<+<+*Eja)E<+<+WD2w E<+<+<+!En<WD<+<+;EKw~E<+<+<+q[J6<+<+<+A|`5<+<+<+{EO6jaR6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Dl:C<+<+<+`D$6^C<+<+<+v[$6QD<+<+<+G|]EhaBD<+<+<+<+<+<+<+<+^Eja/E<+<+<+Z5v|<+<+<+(Ek0u|o2o2n[u[DD<+<+<+w|n<WD<+<+;EKw~E<+<+<+q[x[<+<+<+A|`5<+<+<+{EO6jaR6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Dl:C<+<+<+`D$6^C<+<+<+v[$6QD<+<+<+c<j02wBD<+<+<+_E:E+E+E+E<Eja/E<+<+<+Z5v|<+<+<+UDIiHi0<sD[E<+<+<+<+<+w|n<WD<+<+;EKw~E<+<+<+q[x[<+<+<+A|`5<+<+<+{EO6jaR6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Dl:C<+<+<+`D$6^C<+<+<+v[$6QD<+<+<+Rpj02wBD<+<+<+v2k0f3f3f3p}O6OD<+<+<+Z5v|<+<+<+UDiaF|<+<+<+}E|E<+<+<+w|n<WD<+<+;EKw~E<+<+<+q[x[<+<+<+A|`5<+<+<+{EO6jaR6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6DlRu<+<+<+1E2wPD<+<+<+y}$6QD<+<+<+c<j02w2E<+<+<+c<s}<+<+<+3Eja4E<+<+<+c<FA<+<+<++EIi5E<+<+YDL66E<+<+<+w|n<WD<+<+;EKw~E<+<+<+q[7E<+<+<+A|`5<+<+<+{EO6jaR6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6DlE|<+<+<+8ER6gb<+<+<+v}2wQD<+<+<+c<ia&69E<+<+<+b<b<<+<+<+0EDl:E<+<+<+#zaE<+<+<+*Eja>E<+<+DD2wxv<+<+<+w|n<WD<+<+;EKw~E<+<+<+v}Vv<+<+<+C}j3<+<+<+`Dk0jaR6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6z[u|<+<+<+bEq[cE<+<+<+I1%6)E<+<+<+c<lnIipD<+<+<+D1B1<+<+<+dEeEx}<+<+<+<+<+<+<+<+*Eja`D<+<+fE`w^D<+<+<+w|n<WD<+<+;EKw~E<+<+<+B}s2<+<+<+t[I1<+<+<+gEz[R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6k0P6^C<+<+<+<+<+<+<+OD&6)5)E<+<+<+c<z[Dld3<+<+<+DDAD<+<+;Et1lnhay}hEGDpDv[<+<+<++E7riE<+<+<+jESD<+<+<+w|n<WD<+<+;EKw~E<+<+<+'C 6x8<+<+RDjE<+<+<+o2z[R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R67rj[kElE<+<+<+c}mEn2ia7<nE<+<+<+u2z[ja)ts2oE<+<+<+<+TDd3iaQ6iwn[t[I}$6u2<+<+<+pEtD)AqE<+<+GDrE<+<+<+Ot64<+<+<+<+,5sE<+<+<+_CtDB|bE<+<+<+<+bEn[ibR6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6S66mk00<Bry|z}d<Q6ibja9<F}y|y|y|n2IiR6jaz[m2J1y|y|z1j[z[jaIi.E<+<+<+tEUD<+<+<+b3j07r>uv}q[Pvd<y|y|y|c<!5:Cy|y|B}#6H1y|y|y|u|7rz[n2I|y|y|H|n2z[jaR6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaft5suEvEz[k0R6R6ja=huEuEuEIiS6R6R6R6IiiauEuEiaIiR6R6z[y[<+<+<+<+<+<+<+=E@6IiR6ibvEuEIiz[uEuEuEftjavEuEuEvEjaz[uEuEuEz[Q6R66mj0uEuEj06mR6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6IilvJ6_EQDQDwEE|9<IiR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaz[ibQ6O6O6Iiian9R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jajajajajaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6S6IiDlDlDlDl)tja*wjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6haDlDlDlDl)tjaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaz[haR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6haxEyEzEAE!:BE&64C93jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6S6haibR6R6R6R6R6R6R6R6R6haCE^:DEAEEEBEP6)tR6R6R6R6R6R6R6R6R6R6R6R6R6Xmz[jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6jaS6FE'5haR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Xmz[jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6DlGEHEY Y IEJE!5KELE6mR6R6R6R6R6R6R6R6R6R6R6R6XmXmR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6haduFER6jaR6R6R6R6R6R6R6ibMEIEY Y Y NEOEPEibR6R6R6R6R6R6R6R6R6R6R6haQEg[&6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6)tREIESE:zR6R6R6R6R6R6R6R6R6R6haR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6hajaXm!54C%6jaR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6*wTEUEVEduWED7XEYE5<6mR6XmhajaR6R6R6jahaXmR6ha&693IiR6XmjajahaR6R6jahahaR6R6R6hajaXmhaR6*wZE`EO6jajahahajaR6R6R6ibQB F.F{udu(:+F FWE6mR6jahaXmR6R6R6jahajaib@F-)#FhajahahahajaXmjaXmhaR6R6R6R6R6R6R6DlIA$F%F$6haR6jahaR6R6jaXmR6IiCEn9jaR6R6XmhajaR6R6jaXmjahajaR6jahajaR6R6jahajaR6R66m!5O6z[&F*F=FhaR6XmhajaR6R6jahajahaXmR6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6*w]s-FZh;F>FvExEYE5<6m;t%6D7IihaQ6)tja!5$6Ii&6,Fn}&6Q6$6jaO6$6Xm)tja!5$6ibXmS6$6Xm$6$6)tja$6'FR6ha)t|w~5R6R6R6R6ib)F!FCEln6m=h$6~F{F*wha)tE7$6)tR6Iio9!5P6Xm%6{uQ6IihaD79393&6$6Xm$6$6)tR6R6R6R6R6ha!5}{]F*F^FDlR6P6$6Q6ja&6$6ib}:/FG7$6jaz[&6!5P6;tjao9%6Xm~5P6Dlsu~56mjaIio9!5R6Ii)t(F/F{u%6&6_FQ6jaz[H7!5O6ibjao9$6ha93o96mR6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6*w:F<F[F}F|F1F7<YE5<2FyE+F3F4F%6z[5F6F~F7F5F8FY }{9FCE0FavaFbF5<cFdF-)-FeFIi<ufFgFhF')yEZhiFjFjaR6kF*FbFkF)tR6R6ib)F!F_FIiR6R6^w;C-)Q6o9lFbFmFiD=hnFoF-)jF~5pFqF%6{urF-)f{sFtFuFgFhFvF{:)tR6R6R6R6Dl:F*Fz[wFxFhaibXt%F_F5syFzFAFBFCF['DF2CEF7F-)7FFF5s54GFHFIF6FiDJF7!]wibcFKF~FLFMF93NFOF!)IAPFQFD7z[EFRF-)SF(:vE(FTFUFmFRFnFQAR6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6*w4wVFWFXFYFZF!5YEWE54vFBEha`F GO6sF.G935FWExE!)+G%6k0@G#G6<$GXtbF%G%6.F&G*GS6=G-G93;G>Gja,GxF;t'GbFnF{u)FXmR6R6ib)F!F_FIiR6R6*w:FbFNwavdFo9rwOE_F[F}~!5&F$6)F%F%6)G!GIiUFlF%6*FJF93~G{G#un9R6R6jajaxF]GO6pF^G1F2C.F/G2yvE(GxFIi]wqF%6R64C/G2D$6_G:GcFrwXFEEE7QF<GAFBE^GcF)FyEXm[G)G5s}G|G7<S6$GYE$6FE<F1G%6:F2GPE5<3GBw%64G5G)tR6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6*w}G*F|w(x$6k0duYE{u6Gf{7G8GOE9G.F}{$6ibhc)t~50Go}DlIiaG;CvEDsbGcGIihcdGeGKF%6sF^:fGPE&GE7gG6FQ6|GhGiGIi)tR6R6R6ib)F!F_FIiR6IivE/FdFDlfF@GjG{FkG:F'F-)QF5<dGFEmF&6lGmG!5nG)GR6sFAEfGoG&GduIiR6R6ibXtpGpGqGVFIE,FdG4<rG6<vE;G#GvEfDsGvEz[rFtG>F}wvEuFuGrw-)93ZhjGvGdGja7FwGZhXmg[NFxG;FyEyGR6ln.FvFP6zGAGBGn95s-GuGl2rG'F>FCG7FIiR6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6*wDG-F:zZh2CvEduYE_FEGvF:F_GbGBE@FrG!55sz[;tQEbF(FdGz[aGFGz[:zgG3FNwDlDswFGG%6sFHG2C&F_!93gGoFjaQF'G>FibibR6R6R6ib)FIGE7JG5sNwKGLG^:5sdF5GgG_GgGVEib%6MG Fl2NGGF$6OGOE2)[GPGN6*FwG2CXt_!6<IiR6R6Dl,FKFQG:FQGRG2GOG5FSGTGUGVGGG5s}FWGXG2CYGvGXGz[ZG6FuGMFsFOG:z{F`FDlO6QFDEdudF`G9G H.HgG`EIiJG4<vFP6gF+H2C;t:z@H#Hl2rG2y$H~GxFIiR6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6*wTENE`FrF4GwFdu FMF'5OE%:WE1FEE&67F9GXtyE.FR6sF%H::&HxF*Gz[n91wmF+HcF*H7]yEQ6}~QGZhpF^G93,GRFz[=H-HbGNG4w%6jaR6ibQB;H>HvGrF-)IE%G6mz[ZEOEbDAF':,H'H%:1FCFFF)H3F%6l2!HFEibdG$6}{EFZhBE^GduIiR6Iidu~H{HfG:zvEha*FIA$6 F}F$G+FSF5sbG7!1F1G{H&G;GcFkF]HducFYE'F=htG^HDlO6+F(:;G3FcF/H|GPGME-H2<yEn}&GF7r1 FfD5<(H]HAF(FXFAF$H'GOEIiR6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6ib4CRF+F+F*F_HOGjFWEln5<jF:H[G1G*w'F+:|G<HxE*w}:@G9Frw[Hs|)tR66m{utG}HWG(:*w%6rFFE=h5<JFF7n}4FR66m,GKFKFiFhaR6R6hcPEfFmF+F<GrF+G6mjajaIi^FQF|H1H{uPE2H}H8FIi3H/F&6*H2G|HqFhG%64H{H=hMFJFOGIiR6ibzE5H%6XmR6R6z[wGrFk04C|H!G]w7G6m%66HmF%Ghc.F7H:H8H&H=hrwxG!5z[;G]w;to9tG)FCEuFzG9H@H&Fn90HmF_H5F0F~5*w.F4G:H+H5<5s&HuF'F=hwGgFhaR6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Xm)thchc)tIija6mjaS66mib6m)t)tQ6Ii;t6mibhaS6hc)t)thaIihaR6R6R6Iiib6m)t)tR6R66mXmS6ja6mR6XmIiR6jaib)t)t)tR6R6R6R6jahc)thchcibibjaR6R6jaib)t6mibhaIiib6mibjaja#DPF&GXt9uFEKE)F5sXmS6ja6mjaR6R6R6jahcjaR6R6R6R6IiIiR6hc)t)tibIiS6Xmibhc6mR6)tib6mib6mS6ja6mjaR6IiIiR6R6Iijan9)t)tib)tIijaibhc)tXm6mR6R6)t)t6mib6mS6ja6mjaS6haIiR6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"!A$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Ii{u!HaHbHwF}~nFhcR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"cH$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Ii5<4FmD H4<6mR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"dH$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R66mDl:z:z)tR6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"eH$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"fH$Au[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"gHhHu[G}K|/:d<036<~5&6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6&6~56<03d</:K|G}u[t}z[",
+"iHjHu[G}K|/:d<t1T6~5&6Q6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6R6Q6&6~5T6t1d</:K|G}u[t}z[",
+"kHjHu[G}K|/:i<03m2'5$6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6&6$6'5m203i</:K|G}u[t}z[",
+"lHABu[G}K|/:i<mHn2M6'5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5~5'5M6n2mHi</:K|G}u[t}z[",
+"nHABu[G}K|/:w2K6L6n2m26<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<6<m2n2L6K6w2/:K|G}u[t}z[",
+"oHABu[o3K|F1c<f3l3n3t1t103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303t1t1n3l3f3c<F1K|o3u[t}z[",
+"pHqHu[F}v|I1o2x2w2i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<i<w2x2o2I1v|F}u[t}z[",
+"rHqHt[D}H|J1I1F1/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:F1I1J1H|D}t[t}z[",
+"sHtHs[H}L|H|v|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|K|v|H|L|H}s[t}z[",
+"uHvHI}v}H}D}F}o3G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}G}o3F}D}H}v}I}/:z[",
+"wHxH-EI}s[t[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[u[t[s[I}-Ey[z[",
+"yHzHAHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHCHCHCHCHCHCHBHBHDHEHFHGH",
+"HHIHJHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHKHLHLHLHLHLHLHMHMHMHMHNHNHOHOHOHPHQHRH"};
diff --git a/data/glade/textbox-properties-dialog.glade b/data/glade/textbox-properties-dialog.glade
new file mode 100644
index 0000000..0b75460
--- /dev/null
+++ b/data/glade/textbox-properties-dialog.glade
@@ -0,0 +1,161 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkDialog" id="textbox-properties-dialog">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Text Properties</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_CENTER</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">True</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox2">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area2">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="okbutton1">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-7</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="label_yalign">0.5</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"> </property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Text&lt;/b&gt;</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">6</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkFontSelection" id="font_selector">
+ <property name="border_width">6</property>
+ <property name="visible">True</property>
+ <property name="preview_text">ABCDEFGHIJK abcdefghi</property>
+ </widget>
+ <packing>
+ <property name="padding">6</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/data/glade/view-netlist.glade b/data/glade/view-netlist.glade
new file mode 100644
index 0000000..9d63f22
--- /dev/null
+++ b/data/glade/view-netlist.glade
@@ -0,0 +1,173 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkWindow" id="toplevel">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Netlist View</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="netlist-scrolled-window">
+ <property name="border_width">8</property>
+ <property name="width_request">500</property>
+ <property name="height_request">600</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHButtonBox" id="hbuttonbox1">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <property name="spacing">5</property>
+
+ <child>
+ <widget class="GtkButton" id="btn_print">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-print</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="btn_sim">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">0</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child>
+ <widget class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="stock">gtk-execute</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Simulate</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="btn_save">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-save</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="btn_close">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/data/libraries/Makefile.am b/data/libraries/Makefile.am
new file mode 100644
index 0000000..27fa0f5
--- /dev/null
+++ b/data/libraries/Makefile.am
@@ -0,0 +1,17 @@
+oreganolibdir = $(datadir)/oregano/libraries
+
+oreganolib_DATA = \
+ cmos.oreglib \
+ cpu.oreglib \
+ linear.oreglib \
+ opamplib.oreglib \
+ ttl.oreglib \
+ default.oreglib \
+ memory.oreglib \
+ miscellaneous.oreglib \
+ power.oreglib \
+ peripheral.oreglib \
+ interface.oreglib
+
+EXTRA_DIST = $(oreganolib_DATA)
+
diff --git a/data/libraries/cmos.oreglib b/data/libraries/cmos.oreglib
new file mode 100644
index 0000000..e0f13bd
--- /dev/null
+++ b/data/libraries/cmos.oreglib
@@ -0,0 +1,21291 @@
+<?xml version="1.0"?>
+<ogo:library xmlns:ogo="http://www.dtek.chalmers.se/~d4hult/oregano/v1">
+ <ogo:name>CMOS</ogo:name>
+ <ogo:description>CMOS Library</ogo:description>
+ <ogo:version>0.94</ogo:version>
+ <ogo:author>Hector Bellesi</ogo:author>
+ <ogo:last-updated>3-dec-2001</ogo:last-updated>
+
+ <ogo:symbols>
+
+ <ogo:symbol>
+ <ogo:name>4011a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 60)(20 40)</ogo:line>
+ <ogo:line>(56 20)(70 20)</ogo:line>
+ <ogo:arc>(50 17)(56 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 1)</ogo:connection>
+ <ogo:connection>(-20 30 2)</ogo:connection>
+ <ogo:connection>(20 -20 14)</ogo:connection>
+ <ogo:connection>(20 60 7)</ogo:connection>
+ <ogo:connection>(70 20 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4011b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(56 20)(70 20)</ogo:line>
+ <ogo:arc>(50 17)(56 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 6)</ogo:connection>
+ <ogo:connection>(-20 30 5)</ogo:connection>
+ <ogo:connection>(70 20 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4011c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(56 20)(70 20)</ogo:line>
+ <ogo:arc>(50 17)(56 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 9)</ogo:connection>
+ <ogo:connection>(-20 30 8)</ogo:connection>
+ <ogo:connection>(70 20 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4011d</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(56 20)(70 20)</ogo:line>
+ <ogo:arc>(50 17)(56 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 12)</ogo:connection>
+ <ogo:connection>(-20 30 13)</ogo:connection>
+ <ogo:connection>(70 20 11)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4001a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(4 10)</ogo:line>
+ <ogo:line>(-20 30)(4 30)</ogo:line>
+ <ogo:line>(10 -20)(10 0)</ogo:line>
+ <ogo:line>(10 60)(10 40)</ogo:line>
+ <ogo:line>(51 20)(70 20)</ogo:line>
+ <ogo:arc>(45 17)(51 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 1)</ogo:connection>
+ <ogo:connection>(-20 30 2)</ogo:connection>
+ <ogo:connection>(10 -20 14)</ogo:connection>
+ <ogo:connection>(10 60 7)</ogo:connection>
+ <ogo:connection>(70 20 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4001b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(4 10)</ogo:line>
+ <ogo:line>(-20 30)(4 30)</ogo:line>
+ <ogo:line>(51 20)(70 20)</ogo:line>
+ <ogo:arc>(45 17)(51 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 5)</ogo:connection>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(70 20 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4001c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(4 10)</ogo:line>
+ <ogo:line>(-20 30)(4 30)</ogo:line>
+ <ogo:line>(51 20)(70 20)</ogo:line>
+ <ogo:arc>(45 17)(51 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 8)</ogo:connection>
+ <ogo:connection>(-20 30 9)</ogo:connection>
+ <ogo:connection>(70 20 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4001d</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(4 10)</ogo:line>
+ <ogo:line>(-20 30)(4 30)</ogo:line>
+ <ogo:line>(51 20)(70 20)</ogo:line>
+ <ogo:arc>(45 17)(51 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 13)</ogo:connection>
+ <ogo:connection>(-20 30 12)</ogo:connection>
+ <ogo:connection>(70 20 11)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4025a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(4 10)</ogo:line>
+ <ogo:line>(-20 20)(6 20)</ogo:line>
+ <ogo:line>(-20 30)(4 30)</ogo:line>
+ <ogo:line>(10 -20)(10 0)</ogo:line>
+ <ogo:line>(10 60)(10 40)</ogo:line>
+ <ogo:line>(51 20)(70 20)</ogo:line>
+ <ogo:arc>(45 17)(51 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 20 4)</ogo:connection>
+ <ogo:connection>(-20 30 5)</ogo:connection>
+ <ogo:connection>(10 -20 14)</ogo:connection>
+ <ogo:connection>(10 60 7)</ogo:connection>
+ <ogo:connection>(70 20 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4025b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(4 10)</ogo:line>
+ <ogo:line>(-20 20)(6 20)</ogo:line>
+ <ogo:line>(-20 30)(4 30)</ogo:line>
+ <ogo:line>(51 20)(70 20)</ogo:line>
+ <ogo:arc>(45 17)(51 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 13)</ogo:connection>
+ <ogo:connection>(-20 20 12)</ogo:connection>
+ <ogo:connection>(-20 30 11)</ogo:connection>
+ <ogo:connection>(70 20 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4025c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(4 10)</ogo:line>
+ <ogo:line>(-20 20)(6 20)</ogo:line>
+ <ogo:line>(-20 30)(4 30)</ogo:line>
+ <ogo:line>(51 20)(70 20)</ogo:line>
+ <ogo:arc>(45 17)(51 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 1)</ogo:connection>
+ <ogo:connection>(-20 20 2)</ogo:connection>
+ <ogo:connection>(-20 30 8)</ogo:connection>
+ <ogo:connection>(70 20 9)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4069a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(20 -10)(20 10)</ogo:line>
+ <ogo:line>(20 50)(20 30)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 1)</ogo:connection>
+ <ogo:connection>(20 -10 14)</ogo:connection>
+ <ogo:connection>(20 50 7)</ogo:connection>
+ <ogo:connection>(60 20 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4009a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(20 -10)(20 10)</ogo:line>
+ <ogo:line>(20 50)(20 30)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 3)</ogo:connection>
+ <ogo:connection>(20 -10 1)</ogo:connection>
+ <ogo:connection>(20 50 8)</ogo:connection>
+ <ogo:connection>(60 20 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4009b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(20 -10)(20 10)</ogo:line>
+ <ogo:line>(20 50)(20 30)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(20 -10 16)</ogo:connection>
+ <ogo:connection>(20 50 13)</ogo:connection>
+ <ogo:connection>(60 20 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4000c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 8)</ogo:connection>
+ <ogo:connection>(60 20 9)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4009c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 7)</ogo:connection>
+ <ogo:connection>(60 20 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4009d</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 9)</ogo:connection>
+ <ogo:connection>(60 20 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4009e</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 11)</ogo:connection>
+ <ogo:connection>(60 20 12)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4009f</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 14)</ogo:connection>
+ <ogo:connection>(60 20 15)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4049b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(60 20 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4069b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 3)</ogo:connection>
+ <ogo:connection>(60 20 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4069c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(60 20 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4069d</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 9)</ogo:connection>
+ <ogo:connection>(60 20 8)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4069e</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 11)</ogo:connection>
+ <ogo:connection>(60 20 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4069f</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 13)</ogo:connection>
+ <ogo:connection>(60 20 12)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4002a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(5 10)(7 15)(8 20)(9 25)(8 30)(7 35)(5 40)(3 45)(0 50)</ogo:line>
+ <ogo:line>(0 0)(15 0)</ogo:line>
+ <ogo:line>(0 50)(15 50)</ogo:line>
+ <ogo:line>(15 0)(20 0)(25 1)(30 2)(35 3)(40 5)(45 7)(50 11)(55 16)(60 22)(63 25)</ogo:line>
+ <ogo:line>(15 50)(20 50)(25 49)(30 48)(35 47)(40 45)(45 43)(50 39)(55 34)(60 28)(63 25)</ogo:line>
+ <ogo:line>(-20 10)(5 10)</ogo:line>
+ <ogo:line>(-20 20)(8 20)</ogo:line>
+ <ogo:line>(-20 30)(8 30)</ogo:line>
+ <ogo:line>(-20 40)(5 40)</ogo:line>
+ <ogo:line>(10 -20)(10 0)</ogo:line>
+ <ogo:line>(10 50)(10 70)</ogo:line>
+ <ogo:line>(69 25)(75 20)(80 20)</ogo:line>
+ <ogo:arc>(63 22)(69 28)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(-20 20 3)</ogo:connection>
+ <ogo:connection>(-20 30 4)</ogo:connection>
+ <ogo:connection>(-20 40 5)</ogo:connection>
+ <ogo:connection>(10 -20 14)</ogo:connection>
+ <ogo:connection>(10 70 7)</ogo:connection>
+ <ogo:connection>(80 20 1)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4002b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(5 10)(7 15)(8 20)(9 25)(8 30)(7 35)(5 40)(3 45)(0 50)</ogo:line>
+ <ogo:line>(0 0)(15 0)</ogo:line>
+ <ogo:line>(0 50)(15 50)</ogo:line>
+ <ogo:line>(15 0)(20 0)(25 1)(30 2)(35 3)(40 5)(45 7)(50 11)(55 16)(60 22)(63 25)</ogo:line>
+ <ogo:line>(15 50)(20 50)(25 49)(30 48)(35 47)(40 45)(45 43)(50 39)(55 34)(60 28)(63 25)</ogo:line>
+ <ogo:line>(-20 10)(5 10)</ogo:line>
+ <ogo:line>(-20 20)(8 20)</ogo:line>
+ <ogo:line>(-20 30)(8 30)</ogo:line>
+ <ogo:line>(-20 40)(5 40)</ogo:line>
+ <ogo:line>(69 25)(75 20)(80 20)</ogo:line>
+ <ogo:arc>(63 22)(69 28)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 12)</ogo:connection>
+ <ogo:connection>(-20 20 11)</ogo:connection>
+ <ogo:connection>(-20 30 10)</ogo:connection>
+ <ogo:connection>(-20 40 9)</ogo:connection>
+ <ogo:connection>(80 20 13)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4012a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 50)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 50)(40 50)</ogo:line>
+ <ogo:line>(40 0)(45 1)(50 3)(55 6)(57 9)(60 12)(64 20)(65 25)</ogo:line>
+ <ogo:line>(40 50)(45 49)(50 47)(55 44)(57 41)(60 38)(64 30)(65 25)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 70)(20 50)</ogo:line>
+ <ogo:line>(71 25)(78 20)(90 20)</ogo:line>
+ <ogo:arc>(65 22)(71 28)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(-20 20 3)</ogo:connection>
+ <ogo:connection>(-20 30 4)</ogo:connection>
+ <ogo:connection>(-20 40 5)</ogo:connection>
+ <ogo:connection>(20 -20 14)</ogo:connection>
+ <ogo:connection>(20 70 7)</ogo:connection>
+ <ogo:connection>(90 20 1)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4012b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 50)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 50)(40 50)</ogo:line>
+ <ogo:line>(40 0)(45 1)(50 3)(55 6)(57 9)(60 12)(64 20)(65 25)</ogo:line>
+ <ogo:line>(40 50)(45 49)(50 47)(55 44)(57 41)(60 38)(64 30)(65 25)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(71 25)(78 20)(90 20)</ogo:line>
+ <ogo:arc>(65 22)(71 28)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 9)</ogo:connection>
+ <ogo:connection>(-20 20 10)</ogo:connection>
+ <ogo:connection>(-20 30 11)</ogo:connection>
+ <ogo:connection>(-20 40 12)</ogo:connection>
+ <ogo:connection>(90 20 13)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4006</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 70)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 70)(40 70)</ogo:line>
+ <ogo:line>(40 0)(40 70)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 90)(20 70)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 1)</ogo:connection>
+ <ogo:connection>(-20 20 4)</ogo:connection>
+ <ogo:connection>(-20 30 5)</ogo:connection>
+ <ogo:connection>(-20 40 6)</ogo:connection>
+ <ogo:connection>(-20 60 3)</ogo:connection>
+ <ogo:connection>(20 -20 14)</ogo:connection>
+ <ogo:connection>(20 90 7)</ogo:connection>
+ <ogo:connection>(60 10 13)</ogo:connection>
+ <ogo:connection>(60 20 11)</ogo:connection>
+ <ogo:connection>(60 30 12)</ogo:connection>
+ <ogo:connection>(60 40 10)</ogo:connection>
+ <ogo:connection>(60 50 8)</ogo:connection>
+ <ogo:connection>(60 60 9)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4007a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 20)(15 20)</ogo:line>
+ <ogo:line>(15 10)(15 30)</ogo:line>
+ <ogo:line>(20 30)(30 30)(30 40)(50 40)</ogo:line>
+ <ogo:line>(20 10)(30 10)(30 -10)</ogo:line>
+ <ogo:line>(30 20)(25 24)</ogo:line>
+ <ogo:line>(25 16)(30 20)</ogo:line>
+ <ogo:line>(20 20)(30 20)</ogo:line>
+ <ogo:line>(20 7)(20 13)</ogo:line>
+ <ogo:line>(20 17)(20 23)</ogo:line>
+ <ogo:line>(20 27)(20 33)</ogo:line>
+ <ogo:line>(0 70)(15 70)</ogo:line>
+ <ogo:line>(15 60)(15 80)</ogo:line>
+ <ogo:line>(20 80)(30 80)(30 100)</ogo:line>
+ <ogo:line>(20 60)(30 60)(30 50)(50 50)</ogo:line>
+ <ogo:line>(20 70)(25 74)</ogo:line>
+ <ogo:line>(25 66)(20 70)</ogo:line>
+ <ogo:line>(20 70)(30 70)</ogo:line>
+ <ogo:line>(20 57)(20 63)</ogo:line>
+ <ogo:line>(20 67)(20 73)</ogo:line>
+ <ogo:line>(20 77)(20 83)</ogo:line>
+ <ogo:line>(0 20)(0 70)</ogo:line>
+ <ogo:line>(0 20)(-20 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(30 -10 14)</ogo:connection>
+ <ogo:connection>(-20 20 6)</ogo:connection>
+ <ogo:connection>(50 40 13)</ogo:connection>
+ <ogo:connection>(50 50 8)</ogo:connection>
+ <ogo:connection>(30 100 7)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4007b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 20)(15 20)</ogo:line>
+ <ogo:line>(15 10)(15 30)</ogo:line>
+ <ogo:line>(20 30)(30 30)(30 40)(50 40)</ogo:line>
+ <ogo:line>(20 10)(30 10)(30 -10)</ogo:line>
+ <ogo:line>(30 20)(25 24)</ogo:line>
+ <ogo:line>(25 16)(30 20)</ogo:line>
+ <ogo:line>(20 20)(30 20)</ogo:line>
+ <ogo:line>(20 7)(20 13)</ogo:line>
+ <ogo:line>(20 17)(20 23)</ogo:line>
+ <ogo:line>(20 27)(20 33)</ogo:line>
+ <ogo:line>(0 70)(15 70)</ogo:line>
+ <ogo:line>(15 60)(15 80)</ogo:line>
+ <ogo:line>(20 80)(30 80)(30 100)</ogo:line>
+ <ogo:line>(20 60)(30 60)(30 50)(50 50)</ogo:line>
+ <ogo:line>(20 70)(25 74)</ogo:line>
+ <ogo:line>(25 66)(20 70)</ogo:line>
+ <ogo:line>(20 70)(30 70)</ogo:line>
+ <ogo:line>(20 57)(20 63)</ogo:line>
+ <ogo:line>(20 67)(20 73)</ogo:line>
+ <ogo:line>(20 77)(20 83)</ogo:line>
+ <ogo:line>(0 20)(0 70)</ogo:line>
+ <ogo:line>(0 20)(-20 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(30 -10 2)</ogo:connection>
+ <ogo:connection>(-20 20 3)</ogo:connection>
+ <ogo:connection>(50 40 1)</ogo:connection>
+ <ogo:connection>(50 50 5)</ogo:connection>
+ <ogo:connection>(30 100 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4007c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 20)(15 20)</ogo:line>
+ <ogo:line>(15 10)(15 30)</ogo:line>
+ <ogo:line>(20 30)(30 30)(30 40)(50 40)</ogo:line>
+ <ogo:line>(20 10)(30 10)(30 -10)</ogo:line>
+ <ogo:line>(30 20)(25 24)</ogo:line>
+ <ogo:line>(25 16)(30 20)</ogo:line>
+ <ogo:line>(20 20)(30 20)</ogo:line>
+ <ogo:line>(20 7)(20 13)</ogo:line>
+ <ogo:line>(20 17)(20 23)</ogo:line>
+ <ogo:line>(20 27)(20 33)</ogo:line>
+
+ <ogo:line>(0 70)(15 70)</ogo:line>
+ <ogo:line>(15 60)(15 80)</ogo:line>
+ <ogo:line>(20 80)(30 80)(30 100)</ogo:line>
+ <ogo:line>(20 60)(30 60)(30 50)(30 40)</ogo:line>
+ <ogo:line>(20 70)(25 74)</ogo:line>
+ <ogo:line>(25 66)(20 70)</ogo:line>
+ <ogo:line>(20 70)(30 70)</ogo:line>
+ <ogo:line>(20 57)(20 63)</ogo:line>
+ <ogo:line>(20 67)(20 73)</ogo:line>
+ <ogo:line>(20 77)(20 83)</ogo:line>
+ <ogo:line>(0 20)(0 70)</ogo:line>
+ <ogo:line>(0 20)(-20 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(30 -10 11)</ogo:connection>
+ <ogo:connection>(-20 20 10)</ogo:connection>
+ <ogo:connection>(50 40 12)</ogo:connection>
+ <ogo:connection>(50 100 9)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4008</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 100)(0 100)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 7)</ogo:connection>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(-20 30 3)</ogo:connection>
+ <ogo:connection>(-20 40 1)</ogo:connection>
+ <ogo:connection>(-20 60 6)</ogo:connection>
+ <ogo:connection>(-20 70 4)</ogo:connection>
+ <ogo:connection>(-20 80 2)</ogo:connection>
+ <ogo:connection>(-20 90 15)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 120 8)</ogo:connection>
+ <ogo:connection>(60 10 10)</ogo:connection>
+ <ogo:connection>(60 20 11)</ogo:connection>
+ <ogo:connection>(60 30 12)</ogo:connection>
+ <ogo:connection>(60 40 13)</ogo:connection>
+ <ogo:connection>(60 60 14)</ogo:connection>
+ <ogo:connection>(60 80 9)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4029</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 100)(0 100)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(-20 20 3)</ogo:connection>
+ <ogo:connection>(-20 30 4)</ogo:connection>
+ <ogo:connection>(-20 40 5)</ogo:connection>
+ <ogo:connection>(-20 60 14)</ogo:connection>
+ <ogo:connection>(-20 70 13)</ogo:connection>
+ <ogo:connection>(-20 80 12)</ogo:connection>
+ <ogo:connection>(-20 90 11)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 120 8)</ogo:connection>
+ <ogo:connection>(60 10 1)</ogo:connection>
+ <ogo:connection>(60 20 15)</ogo:connection>
+ <ogo:connection>(60 30 6)</ogo:connection>
+ <ogo:connection>(60 40 7)</ogo:connection>
+ <ogo:connection>(60 60 9)</ogo:connection>
+ <ogo:connection>(60 80 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4035</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 100)(0 100)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 9)</ogo:connection>
+ <ogo:connection>(-20 20 10)</ogo:connection>
+ <ogo:connection>(-20 30 11)</ogo:connection>
+ <ogo:connection>(-20 40 12)</ogo:connection>
+ <ogo:connection>(-20 60 6)</ogo:connection>
+ <ogo:connection>(-20 70 4)</ogo:connection>
+ <ogo:connection>(-20 80 2)</ogo:connection>
+ <ogo:connection>(-20 90 3)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 120 8)</ogo:connection>
+ <ogo:connection>(60 10 1)</ogo:connection>
+ <ogo:connection>(60 20 15)</ogo:connection>
+ <ogo:connection>(60 30 14)</ogo:connection>
+ <ogo:connection>(60 40 13)</ogo:connection>
+ <ogo:connection>(60 60 7)</ogo:connection>
+ <ogo:connection>(60 80 5)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4052</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 100)(0 100)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 12)</ogo:connection>
+ <ogo:connection>(-20 20 14)</ogo:connection>
+ <ogo:connection>(-20 30 15)</ogo:connection>
+ <ogo:connection>(-20 40 11)</ogo:connection>
+ <ogo:connection>(-20 60 1)</ogo:connection>
+ <ogo:connection>(-20 70 5)</ogo:connection>
+ <ogo:connection>(-20 80 2)</ogo:connection>
+ <ogo:connection>(-20 90 4)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 120 8)</ogo:connection>
+ <ogo:connection>(60 10 7)</ogo:connection>
+ <ogo:connection>(60 20 6)</ogo:connection>
+ <ogo:connection>(60 30 10)</ogo:connection>
+ <ogo:connection>(60 40 9)</ogo:connection>
+ <ogo:connection>(60 60 13)</ogo:connection>
+ <ogo:connection>(60 80 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4089</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 100)(0 100)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 14)</ogo:connection>
+ <ogo:connection>(-20 20 15)</ogo:connection>
+ <ogo:connection>(-20 30 2)</ogo:connection>
+ <ogo:connection>(-20 40 3)</ogo:connection>
+ <ogo:connection>(-20 60 9)</ogo:connection>
+ <ogo:connection>(-20 70 12)</ogo:connection>
+ <ogo:connection>(-20 80 11)</ogo:connection>
+ <ogo:connection>(-20 90 10)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 120 8)</ogo:connection>
+ <ogo:connection>(60 10 6)</ogo:connection>
+ <ogo:connection>(60 20 5)</ogo:connection>
+ <ogo:connection>(60 30 7)</ogo:connection>
+ <ogo:connection>(60 40 1)</ogo:connection>
+ <ogo:connection>(60 60 4)</ogo:connection>
+ <ogo:connection>(60 80 13)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4510</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 100)(0 100)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 4)</ogo:connection>
+ <ogo:connection>(-20 20 12)</ogo:connection>
+ <ogo:connection>(-20 30 13)</ogo:connection>
+ <ogo:connection>(-20 40 3)</ogo:connection>
+ <ogo:connection>(-20 60 1)</ogo:connection>
+ <ogo:connection>(-20 70 15)</ogo:connection>
+ <ogo:connection>(-20 80 10)</ogo:connection>
+ <ogo:connection>(-20 90 5)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 120 8)</ogo:connection>
+ <ogo:connection>(60 10 6)</ogo:connection>
+ <ogo:connection>(60 20 11)</ogo:connection>
+ <ogo:connection>(60 30 14)</ogo:connection>
+ <ogo:connection>(60 40 2)</ogo:connection>
+ <ogo:connection>(60 60 9)</ogo:connection>
+ <ogo:connection>(60 80 7)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4522</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 100)(0 100)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 5)</ogo:connection>
+ <ogo:connection>(-20 20 11)</ogo:connection>
+ <ogo:connection>(-20 30 14)</ogo:connection>
+ <ogo:connection>(-20 40 2)</ogo:connection>
+ <ogo:connection>(-20 60 3)</ogo:connection>
+ <ogo:connection>(-20 70 6)</ogo:connection>
+ <ogo:connection>(-20 80 4)</ogo:connection>
+ <ogo:connection>(-20 90 13)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 120 8)</ogo:connection>
+ <ogo:connection>(60 10 7)</ogo:connection>
+ <ogo:connection>(60 20 9)</ogo:connection>
+ <ogo:connection>(60 30 15)</ogo:connection>
+ <ogo:connection>(60 40 1)</ogo:connection>
+ <ogo:connection>(60 60 10)</ogo:connection>
+ <ogo:connection>(60 80 12)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4529</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 100)(0 100)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(-20 20 3)</ogo:connection>
+ <ogo:connection>(-20 30 4)</ogo:connection>
+ <ogo:connection>(-20 40 5)</ogo:connection>
+ <ogo:connection>(-20 60 14)</ogo:connection>
+ <ogo:connection>(-20 70 13)</ogo:connection>
+ <ogo:connection>(-20 80 12)</ogo:connection>
+ <ogo:connection>(-20 90 11)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 120 8)</ogo:connection>
+ <ogo:connection>(60 10 1)</ogo:connection>
+ <ogo:connection>(60 20 15)</ogo:connection>
+ <ogo:connection>(60 30 6)</ogo:connection>
+ <ogo:connection>(60 40 7)</ogo:connection>
+ <ogo:connection>(60 60 9)</ogo:connection>
+ <ogo:connection>(60 80 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ <ogo:symbol>
+ <ogo:name>4013a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(20 -10)(60 -10)(60 50)(20 50)(20 -10)</ogo:line>
+ <ogo:line>(0 0)(20 0)</ogo:line>
+ <ogo:line>(0 20)(20 20)</ogo:line>
+ <ogo:line>(0 40)(20 40)</ogo:line>
+ <ogo:line>(40 -30)(40 -10)</ogo:line>
+ <ogo:line>(40 50)(40 70)</ogo:line>
+ <ogo:line>(60 0)(80 0)</ogo:line>
+ <ogo:line>(66 40)(80 40)</ogo:line>
+ <ogo:arc>(60 37)(66 43)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0 5)</ogo:connection>
+ <ogo:connection>(0 20 3)</ogo:connection>
+ <ogo:connection>(0 40 7)</ogo:connection>
+ <ogo:connection>(40 -30 6)</ogo:connection>
+ <ogo:connection>(40 70 4)</ogo:connection>
+ <ogo:connection>(80 0 1)</ogo:connection>
+ <ogo:connection>(80 40 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4013b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(20 -10)(60 -10)(60 50)(20 50)(20 -10)</ogo:line>
+ <ogo:line>(0 0)(20 0)</ogo:line>
+ <ogo:line>(0 20)(20 20)</ogo:line>
+ <ogo:line>(0 40)(20 40)</ogo:line>
+ <ogo:line>(40 -30)(40 -10)</ogo:line>
+ <ogo:line>(40 50)(40 70)</ogo:line>
+ <ogo:line>(60 0)(80 0)</ogo:line>
+ <ogo:line>(66 40)(80 40)</ogo:line>
+ <ogo:arc>(60 37)(66 43)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0 9)</ogo:connection>
+ <ogo:connection>(0 20 11)</ogo:connection>
+ <ogo:connection>(0 40 14)</ogo:connection>
+ <ogo:connection>(40 -30 8)</ogo:connection>
+ <ogo:connection>(40 70 10)</ogo:connection>
+ <ogo:connection>(80 0 13)</ogo:connection>
+ <ogo:connection>(80 40 12)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4014</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 90)(0 90)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 70)(40 70)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 7)</ogo:connection>
+ <ogo:connection>(-20 20 6)</ogo:connection>
+ <ogo:connection>(-20 30 5)</ogo:connection>
+ <ogo:connection>(-20 40 4)</ogo:connection>
+ <ogo:connection>(-20 50 13)</ogo:connection>
+ <ogo:connection>(-20 60 14)</ogo:connection>
+ <ogo:connection>(-20 70 15)</ogo:connection>
+ <ogo:connection>(-20 80 1)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 120 8)</ogo:connection>
+ <ogo:connection>(60 10 2)</ogo:connection>
+ <ogo:connection>(60 20 12)</ogo:connection>
+ <ogo:connection>(60 30 3)</ogo:connection>
+ <ogo:connection>(60 60 9)</ogo:connection>
+ <ogo:connection>(60 70 11)</ogo:connection>
+ <ogo:connection>(60 80 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>eq</ogo:name>
+ <ogo:objects>
+ </ogo:objects>
+ <ogo:connections>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4015a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 50)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 50)(40 50)</ogo:line>
+ <ogo:line>(40 0)(40 50)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 70)(20 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 7)</ogo:connection>
+ <ogo:connection>(-20 30 9)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 70 6)</ogo:connection>
+ <ogo:connection>(60 10 5)</ogo:connection>
+ <ogo:connection>(60 20 4)</ogo:connection>
+ <ogo:connection>(60 30 3)</ogo:connection>
+ <ogo:connection>(60 40 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4015b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 50)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 50)(40 50)</ogo:line>
+ <ogo:line>(40 0)(40 50)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 70)(20 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 15)</ogo:connection>
+ <ogo:connection>(-20 30 1)</ogo:connection>
+ <ogo:connection>(20 -20 8)</ogo:connection>
+ <ogo:connection>(20 70 14)</ogo:connection>
+ <ogo:connection>(60 10 13)</ogo:connection>
+ <ogo:connection>(60 20 12)</ogo:connection>
+ <ogo:connection>(60 30 11)</ogo:connection>
+ <ogo:connection>(60 40 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4518a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 50)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 50)(40 50)</ogo:line>
+ <ogo:line>(40 0)(40 50)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 70)(20 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(-20 30 1)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 70 7)</ogo:connection>
+ <ogo:connection>(60 10 3)</ogo:connection>
+ <ogo:connection>(60 20 4)</ogo:connection>
+ <ogo:connection>(60 30 5)</ogo:connection>
+ <ogo:connection>(60 40 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4518b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 50)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 50)(40 50)</ogo:line>
+ <ogo:line>(40 0)(40 50)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 70)(20 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 10)</ogo:connection>
+ <ogo:connection>(-20 30 9)</ogo:connection>
+ <ogo:connection>(20 -20 8)</ogo:connection>
+ <ogo:connection>(20 70 15)</ogo:connection>
+ <ogo:connection>(60 10 11)</ogo:connection>
+ <ogo:connection>(60 20 12)</ogo:connection>
+ <ogo:connection>(60 30 13)</ogo:connection>
+ <ogo:connection>(60 40 14)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4016a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 40)(40 40)</ogo:line>
+ <ogo:line>(40 0)(40 40)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(0 20)(20 10)</ogo:line>
+ <ogo:line>(16 10)(20 10)</ogo:line>
+ <ogo:line>(20 10)(20 14)</ogo:line>
+ <ogo:line>(20 20)(60 20)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 60)(20 40)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 1)</ogo:connection>
+ <ogo:connection>(20 -20 14)</ogo:connection>
+ <ogo:connection>(20 60 13)</ogo:connection>
+ <ogo:connection>(60 20 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4016b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 40)(40 40)</ogo:line>
+ <ogo:line>(40 0)(40 40)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(0 20)(20 10)</ogo:line>
+ <ogo:line>(16 10)(20 10)</ogo:line>
+ <ogo:line>(20 10)(20 14)</ogo:line>
+ <ogo:line>(20 20)(60 20)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 60)(20 40)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 4)</ogo:connection>
+ <ogo:connection>(20 -20 7)</ogo:connection>
+ <ogo:connection>(20 60 5)</ogo:connection>
+ <ogo:connection>(60 20 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+
+ <ogo:symbol>
+ <ogo:name>4016c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 40)(40 40)</ogo:line>
+ <ogo:line>(40 0)(40 40)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(0 20)(20 10)</ogo:line>
+ <ogo:line>(16 10)(20 10)</ogo:line>
+ <ogo:line>(20 10)(20 14)</ogo:line>
+ <ogo:line>(20 20)(60 20)</ogo:line>
+ <ogo:line>(20 60)(20 40)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 8)</ogo:connection>
+ <ogo:connection>(20 60 6)</ogo:connection>
+ <ogo:connection>(60 20 9)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4016d</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 40)(40 40)</ogo:line>
+ <ogo:line>(40 0)(40 40)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(0 20)(20 10)</ogo:line>
+ <ogo:line>(16 10)(20 10)</ogo:line>
+ <ogo:line>(20 10)(20 14)</ogo:line>
+ <ogo:line>(20 20)(60 20)</ogo:line>
+ <ogo:line>(20 60)(20 40)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 11)</ogo:connection>
+ <ogo:connection>(20 60 12)</ogo:connection>
+ <ogo:connection>(60 20 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4017</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 120)(0 120)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 70)(40 70)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(60 90)(40 90)</ogo:line>
+ <ogo:line>(60 100)(40 100)</ogo:line>
+ <ogo:line>(60 110)(40 110)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 140)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 15)</ogo:connection>
+ <ogo:connection>(-20 60 14)</ogo:connection>
+ <ogo:connection>(-20 100 13)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 140 8)</ogo:connection>
+ <ogo:connection>(60 10 3)</ogo:connection>
+ <ogo:connection>(60 20 2)</ogo:connection>
+ <ogo:connection>(60 30 4)</ogo:connection>
+ <ogo:connection>(60 40 7)</ogo:connection>
+ <ogo:connection>(60 50 10)</ogo:connection>
+ <ogo:connection>(60 60 1)</ogo:connection>
+ <ogo:connection>(60 70 5)</ogo:connection>
+ <ogo:connection>(60 80 6)</ogo:connection>
+ <ogo:connection>(60 90 9)</ogo:connection>
+ <ogo:connection>(60 100 11)</ogo:connection>
+ <ogo:connection>(60 110 12)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4018</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 110)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 110)(40 110)</ogo:line>
+ <ogo:line>(40 0)(40 110)</ogo:line>
+ <ogo:line>(60 10)(46 10)</ogo:line>
+ <ogo:line>(60 20)(46 20)</ogo:line>
+ <ogo:line>(60 30)(46 30)</ogo:line>
+ <ogo:line>(60 40)(46 40)</ogo:line>
+ <ogo:line>(60 50)(46 50)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 130)(20 110)</ogo:line>
+ <ogo:arc>(40 7)(46 13)</ogo:arc>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 27)(46 33)</ogo:arc>
+ <ogo:arc>(40 37)(46 43)</ogo:arc>
+ <ogo:arc>(40 47)(46 53)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(-20 20 3)</ogo:connection>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(-20 40 9)</ogo:connection>
+ <ogo:connection>(-20 50 12)</ogo:connection>
+ <ogo:connection>(-20 70 14)</ogo:connection>
+ <ogo:connection>(-20 80 1)</ogo:connection>
+ <ogo:connection>(-20 90 15)</ogo:connection>
+ <ogo:connection>(-20 100 10)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 130 8)</ogo:connection>
+ <ogo:connection>(60 10 5)</ogo:connection>
+ <ogo:connection>(60 20 4)</ogo:connection>
+ <ogo:connection>(60 30 6)</ogo:connection>
+ <ogo:connection>(60 40 11)</ogo:connection>
+ <ogo:connection>(60 50 13)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4534</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 190)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 190)(40 190)</ogo:line>
+ <ogo:line>(40 0)(40 190)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(60 90)(40 90)</ogo:line>
+ <ogo:line>(60 100)(40 100)</ogo:line>
+ <ogo:line>(60 110)(40 110)</ogo:line>
+ <ogo:line>(60 120)(40 120)</ogo:line>
+ <ogo:line>(60 140)(40 140)</ogo:line>
+ <ogo:line>(60 160)(40 160)</ogo:line>
+ <ogo:line>(60 180)(40 180)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(-20 170)(0 170)</ogo:line>
+ <ogo:line>(-20 180)(0 180)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 210)(20 190)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 1)</ogo:connection>
+ <ogo:connection>(-20 60 22)</ogo:connection>
+ <ogo:connection>(-20 80 23)</ogo:connection>
+ <ogo:connection>(-20 90 4)</ogo:connection>
+ <ogo:connection>(-20 110 2)</ogo:connection>
+ <ogo:connection>(-20 130 9)</ogo:connection>
+ <ogo:connection>(-20 150 10)</ogo:connection>
+ <ogo:connection>(-20 170 5)</ogo:connection>
+ <ogo:connection>(-20 180 6)</ogo:connection>
+ <ogo:connection>(20 -20 24)</ogo:connection>
+ <ogo:connection>(20 210 12)</ogo:connection>
+ <ogo:connection>(60 10 20)</ogo:connection>
+ <ogo:connection>(60 20 19)</ogo:connection>
+ <ogo:connection>(60 30 18)</ogo:connection>
+ <ogo:connection>(60 40 17)</ogo:connection>
+ <ogo:connection>(60 60 21)</ogo:connection>
+ <ogo:connection>(60 80 7)</ogo:connection>
+ <ogo:connection>(60 90 8)</ogo:connection>
+ <ogo:connection>(60 100 14)</ogo:connection>
+ <ogo:connection>(60 110 16)</ogo:connection>
+ <ogo:connection>(60 120 11)</ogo:connection>
+ <ogo:connection>(60 140 15)</ogo:connection>
+ <ogo:connection>(60 160 13)</ogo:connection>
+ <ogo:connection>(60 180 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4028</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 110)(0 110)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 70)(40 70)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(60 90)(40 90)</ogo:line>
+ <ogo:line>(60 100)(40 100)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 130)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 10)</ogo:connection>
+ <ogo:connection>(-20 40 13)</ogo:connection>
+ <ogo:connection>(-20 70 12)</ogo:connection>
+ <ogo:connection>(-20 100 11)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 130 8)</ogo:connection>
+ <ogo:connection>(60 10 3)</ogo:connection>
+ <ogo:connection>(60 20 14)</ogo:connection>
+ <ogo:connection>(60 30 2)</ogo:connection>
+ <ogo:connection>(60 40 15)</ogo:connection>
+ <ogo:connection>(60 50 1)</ogo:connection>
+ <ogo:connection>(60 60 6)</ogo:connection>
+ <ogo:connection>(60 70 7)</ogo:connection>
+ <ogo:connection>(60 80 4)</ogo:connection>
+ <ogo:connection>(60 90 9)</ogo:connection>
+ <ogo:connection>(60 100 5)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4060</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 110)(0 110)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 70)(40 70)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(60 90)(40 90)</ogo:line>
+ <ogo:line>(60 100)(40 100)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 130)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 11)</ogo:connection>
+ <ogo:connection>(-20 40 10)</ogo:connection>
+ <ogo:connection>(-20 70 9)</ogo:connection>
+ <ogo:connection>(-20 100 12)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 130 8)</ogo:connection>
+ <ogo:connection>(60 10 7)</ogo:connection>
+ <ogo:connection>(60 20 5)</ogo:connection>
+ <ogo:connection>(60 30 4)</ogo:connection>
+ <ogo:connection>(60 40 6)</ogo:connection>
+ <ogo:connection>(60 50 14)</ogo:connection>
+ <ogo:connection>(60 60 13)</ogo:connection>
+ <ogo:connection>(60 70 15)</ogo:connection>
+ <ogo:connection>(60 80 1)</ogo:connection>
+ <ogo:connection>(60 90 2)</ogo:connection>
+ <ogo:connection>(60 100 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4094</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 110)(0 110)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 70)(40 70)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(60 90)(40 90)</ogo:line>
+ <ogo:line>(60 100)(40 100)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 130)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 40 2)</ogo:connection>
+ <ogo:connection>(-20 70 1)</ogo:connection>
+ <ogo:connection>(-20 100 15)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 130 8)</ogo:connection>
+ <ogo:connection>(60 10 4)</ogo:connection>
+ <ogo:connection>(60 20 5)</ogo:connection>
+ <ogo:connection>(60 30 6)</ogo:connection>
+ <ogo:connection>(60 40 7)</ogo:connection>
+ <ogo:connection>(60 50 14)</ogo:connection>
+ <ogo:connection>(60 60 13)</ogo:connection>
+ <ogo:connection>(60 70 12)</ogo:connection>
+ <ogo:connection>(60 80 11)</ogo:connection>
+ <ogo:connection>(60 90 9)</ogo:connection>
+ <ogo:connection>(60 100 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4020</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 130)(0 130)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 70)(40 70)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(60 90)(40 90)</ogo:line>
+ <ogo:line>(60 100)(40 100)</ogo:line>
+ <ogo:line>(60 110)(40 110)</ogo:line>
+ <ogo:line>(60 120)(40 120)</ogo:line>
+ <ogo:line>(-20 20)(-6 20)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 130)(20 150)</ogo:line>
+ <ogo:arc>(-6 17)(0 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 10)</ogo:connection>
+ <ogo:connection>(-20 100 11)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 150 8)</ogo:connection>
+ <ogo:connection>(60 10 9)</ogo:connection>
+ <ogo:connection>(60 20 7)</ogo:connection>
+ <ogo:connection>(60 30 5)</ogo:connection>
+ <ogo:connection>(60 40 4)</ogo:connection>
+ <ogo:connection>(60 50 6)</ogo:connection>
+ <ogo:connection>(60 60 13)</ogo:connection>
+ <ogo:connection>(60 70 12)</ogo:connection>
+ <ogo:connection>(60 80 14)</ogo:connection>
+ <ogo:connection>(60 90 15)</ogo:connection>
+ <ogo:connection>(60 100 1)</ogo:connection>
+ <ogo:connection>(60 110 2)</ogo:connection>
+ <ogo:connection>(60 120 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4040</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 130)(0 130)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 70)(40 70)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(60 90)(40 90)</ogo:line>
+ <ogo:line>(60 100)(40 100)</ogo:line>
+ <ogo:line>(60 110)(40 110)</ogo:line>
+ <ogo:line>(60 120)(40 120)</ogo:line>
+ <ogo:line>(-20 20)(-6 20)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 130)(20 150)</ogo:line>
+ <ogo:arc>(-6 17)(0 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 10)</ogo:connection>
+ <ogo:connection>(-20 100 11)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 150 8)</ogo:connection>
+ <ogo:connection>(60 10 9)</ogo:connection>
+ <ogo:connection>(60 20 7)</ogo:connection>
+ <ogo:connection>(60 30 6)</ogo:connection>
+ <ogo:connection>(60 40 5)</ogo:connection>
+ <ogo:connection>(60 50 3)</ogo:connection>
+ <ogo:connection>(60 60 2)</ogo:connection>
+ <ogo:connection>(60 70 4)</ogo:connection>
+ <ogo:connection>(60 80 13)</ogo:connection>
+ <ogo:connection>(60 90 12)</ogo:connection>
+ <ogo:connection>(60 100 14)</ogo:connection>
+ <ogo:connection>(60 110 15)</ogo:connection>
+ <ogo:connection>(60 120 1)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4022</ogo:name>
+ <ogo:objects>
+ <ogo:line>(-20 0)(20 0)(20 100)(-20 100)(-20 0)</ogo:line>
+ <ogo:line>(40 10)(20 10)</ogo:line>
+ <ogo:line>(40 20)(20 20)</ogo:line>
+ <ogo:line>(40 30)(20 30)</ogo:line>
+ <ogo:line>(40 40)(20 40)</ogo:line>
+ <ogo:line>(40 50)(20 50)</ogo:line>
+ <ogo:line>(40 60)(20 60)</ogo:line>
+ <ogo:line>(40 70)(20 70)</ogo:line>
+ <ogo:line>(40 80)(20 80)</ogo:line>
+ <ogo:line>(40 90)(20 90)</ogo:line>
+ <ogo:line>(-40 20)(-20 20)</ogo:line>
+ <ogo:line>(-40 50)(-26 50)</ogo:line>
+ <ogo:line>(-40 80)(-20 80)</ogo:line>
+ <ogo:line>(0 -20)(0 0)</ogo:line>
+ <ogo:line>(0 100)(0 120)</ogo:line>
+ <ogo:arc>(-26 47)(-20 53)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-40 20 15)</ogo:connection>
+ <ogo:connection>(-40 50 13)</ogo:connection>
+ <ogo:connection>(-40 80 14)</ogo:connection>
+ <ogo:connection>(0 -20 16)</ogo:connection>
+ <ogo:connection>(0 120 8)</ogo:connection>
+ <ogo:connection>(40 10 2)</ogo:connection>
+ <ogo:connection>(40 20 1)</ogo:connection>
+ <ogo:connection>(40 30 3)</ogo:connection>
+ <ogo:connection>(40 40 7)</ogo:connection>
+ <ogo:connection>(40 50 11)</ogo:connection>
+ <ogo:connection>(40 60 4)</ogo:connection>
+ <ogo:connection>(40 70 5)</ogo:connection>
+ <ogo:connection>(40 80 10)</ogo:connection>
+ <ogo:connection>(40 90 12)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4023a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 60)(20 40)</ogo:line>
+ <ogo:line>(56 20)(70 20)</ogo:line>
+ <ogo:arc>(50 17)(56 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 1)</ogo:connection>
+ <ogo:connection>(-20 20 2)</ogo:connection>
+ <ogo:connection>(-20 30 8)</ogo:connection>
+ <ogo:connection>(20 -20 14)</ogo:connection>
+ <ogo:connection>(20 60 7)</ogo:connection>
+ <ogo:connection>(70 20 9)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4023b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(56 20)(70 20)</ogo:line>
+ <ogo:arc>(50 17)(56 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 10 3)</ogo:connection>
+ <ogo:connection>(-10 20 4)</ogo:connection>
+ <ogo:connection>(-10 30 5)</ogo:connection>
+ <ogo:connection>(60 20 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4023c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(56 20)(70 20)</ogo:line>
+ <ogo:arc>(50 17)(56 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 10 11)</ogo:connection>
+ <ogo:connection>(-10 20 12)</ogo:connection>
+ <ogo:connection>(-10 30 13)</ogo:connection>
+ <ogo:connection>(60 20 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4024</ogo:name>
+ <ogo:objects>
+ <ogo:line>(-20 0)(20 0)(20 80)(-20 80)(-20 0)</ogo:line>
+ <ogo:line>(40 10)(20 10)</ogo:line>
+ <ogo:line>(40 20)(20 20)</ogo:line>
+ <ogo:line>(40 30)(20 30)</ogo:line>
+ <ogo:line>(40 40)(20 40)</ogo:line>
+ <ogo:line>(40 50)(20 50)</ogo:line>
+ <ogo:line>(40 60)(20 60)</ogo:line>
+ <ogo:line>(40 70)(20 70)</ogo:line>
+ <ogo:line>(-40 20)(-26 20)</ogo:line>
+ <ogo:line>(-40 60)(-20 60)</ogo:line>
+ <ogo:line>(0 -20)(0 0)</ogo:line>
+ <ogo:line>(0 80)(0 100)</ogo:line>
+ <ogo:arc>(-26 17)(-20 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-40 20 1)</ogo:connection>
+ <ogo:connection>(-40 60 2)</ogo:connection>
+ <ogo:connection>(0 -20 14)</ogo:connection>
+ <ogo:connection>(0 100 7)</ogo:connection>
+ <ogo:connection>(40 10 12)</ogo:connection>
+ <ogo:connection>(40 20 11)</ogo:connection>
+ <ogo:connection>(40 30 9)</ogo:connection>
+ <ogo:connection>(40 40 6)</ogo:connection>
+ <ogo:connection>(40 50 5)</ogo:connection>
+ <ogo:connection>(40 60 4)</ogo:connection>
+ <ogo:connection>(40 70 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4027a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(20 -10)(60 -10)(60 50)(20 50)(20 -10)</ogo:line>
+ <ogo:line>(0 0)(20 0)</ogo:line>
+ <ogo:line>(0 20)(20 20)</ogo:line>
+ <ogo:line>(0 40)(20 40)</ogo:line>
+ <ogo:line>(40 -30)(40 -10)</ogo:line>
+ <ogo:line>(40 50)(40 70)</ogo:line>
+ <ogo:line>(60 0)(80 0)</ogo:line>
+ <ogo:line>(66 20)(80 20)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:arc>(60 17)(66 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0 6)</ogo:connection>
+ <ogo:connection>(0 20 3)</ogo:connection>
+ <ogo:connection>(0 40 5)</ogo:connection>
+ <ogo:connection>(40 -30 7)</ogo:connection>
+ <ogo:connection>(40 70 4)</ogo:connection>
+ <ogo:connection>(80 0 1)</ogo:connection>
+ <ogo:connection>(80 20 2)</ogo:connection>
+ <ogo:connection>(80 40 8)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4027b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(20 -10)(60 -10)(60 50)(20 50)(20 -10)</ogo:line>
+ <ogo:line>(0 0)(20 0)</ogo:line>
+ <ogo:line>(0 20)(20 20)</ogo:line>
+ <ogo:line>(0 40)(20 40)</ogo:line>
+ <ogo:line>(40 -30)(40 -10)</ogo:line>
+ <ogo:line>(40 50)(40 70)</ogo:line>
+ <ogo:line>(60 0)(80 0)</ogo:line>
+ <ogo:line>(66 20)(80 20)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:arc>(60 17)(66 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0 10)</ogo:connection>
+ <ogo:connection>(0 20 13)</ogo:connection>
+ <ogo:connection>(0 40 11)</ogo:connection>
+ <ogo:connection>(40 -30 9)</ogo:connection>
+ <ogo:connection>(40 70 12)</ogo:connection>
+ <ogo:connection>(80 0 15)</ogo:connection>
+ <ogo:connection>(80 20 14)</ogo:connection>
+ <ogo:connection>(80 40 16)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4029</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 100)(40 100)(40 0)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(60 90)(46 90)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(-6 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ <ogo:arc>(40 87)(46 93)</ogo:arc>
+ <ogo:arc>(-6 87)(0 93)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 15)</ogo:connection>
+ <ogo:connection>(-20 30 4)</ogo:connection>
+ <ogo:connection>(-20 40 12)</ogo:connection>
+ <ogo:connection>(-20 50 13)</ogo:connection>
+ <ogo:connection>(-20 60 3)</ogo:connection>
+ <ogo:connection>(-20 80 1)</ogo:connection>
+ <ogo:connection>(-20 90 5)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 120 8)</ogo:connection>
+ <ogo:connection>(60 10 10)</ogo:connection>
+ <ogo:connection>(60 30 6)</ogo:connection>
+ <ogo:connection>(60 40 11)</ogo:connection>
+ <ogo:connection>(60 50 14)</ogo:connection>
+ <ogo:connection>(60 60 2)</ogo:connection>
+ <ogo:connection>(60 80 9)</ogo:connection>
+ <ogo:connection>(60 90 7)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>40160</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 100)(40 100)(40 0)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(60 90)(46 90)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(-6 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ <ogo:arc>(40 87)(46 93)</ogo:arc>
+ <ogo:arc>(-6 87)(0 93)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(-20 30 3)</ogo:connection>
+ <ogo:connection>(-20 40 4)</ogo:connection>
+ <ogo:connection>(-20 50 5)</ogo:connection>
+ <ogo:connection>(-20 60 6)</ogo:connection>
+ <ogo:connection>(-20 80 7)</ogo:connection>
+ <ogo:connection>(-20 90 9)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 120 8)</ogo:connection>
+ <ogo:connection>(60 10 15)</ogo:connection>
+ <ogo:connection>(60 30 14)</ogo:connection>
+ <ogo:connection>(60 40 13)</ogo:connection>
+ <ogo:connection>(60 50 12)</ogo:connection>
+ <ogo:connection>(60 60 11)</ogo:connection>
+ <ogo:connection>(60 80 10)</ogo:connection>
+ <ogo:connection>(60 90 1)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4030a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(-1 10)</ogo:line>
+ <ogo:line>(-20 30)(-1 30)</ogo:line>
+ <ogo:line>(10 -20)(10 0)</ogo:line>
+ <ogo:line>(10 60)(10 40)</ogo:line>
+ <ogo:line>(45 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 1)</ogo:connection>
+ <ogo:connection>(-20 30 2)</ogo:connection>
+ <ogo:connection>(10 -20 14)</ogo:connection>
+ <ogo:connection>(10 60 7)</ogo:connection>
+ <ogo:connection>(60 20 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4030b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(-1 10)</ogo:line>
+ <ogo:line>(-20 30)(-1 30)</ogo:line>
+ <ogo:line>(45 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 6)</ogo:connection>
+ <ogo:connection>(-20 30 5)</ogo:connection>
+ <ogo:connection>(60 20 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4030c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(-1 10)</ogo:line>
+ <ogo:line>(-20 30)(-1 30)</ogo:line>
+ <ogo:line>(45 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 8)</ogo:connection>
+ <ogo:connection>(-20 30 9)</ogo:connection>
+ <ogo:connection>(60 20 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4030d</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(-1 10)</ogo:line>
+ <ogo:line>(-20 30)(-1 30)</ogo:line>
+ <ogo:line>(45 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 13)</ogo:connection>
+ <ogo:connection>(-20 30 12)</ogo:connection>
+ <ogo:connection>(60 20 11)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4032</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 150)(0 150)(0 0)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 100)(40 100)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 150)(20 170)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 10)</ogo:connection>
+ <ogo:connection>(-20 20 11)</ogo:connection>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(-20 50 13)</ogo:connection>
+ <ogo:connection>(-20 60 12)</ogo:connection>
+ <ogo:connection>(-20 70 5)</ogo:connection>
+ <ogo:connection>(-20 90 15)</ogo:connection>
+ <ogo:connection>(-20 100 14)</ogo:connection>
+ <ogo:connection>(-20 110 2)</ogo:connection>
+ <ogo:connection>(-20 130 3)</ogo:connection>
+ <ogo:connection>(-20 140 6)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 170 8)</ogo:connection>
+ <ogo:connection>(60 20 9)</ogo:connection>
+ <ogo:connection>(60 60 4)</ogo:connection>
+ <ogo:connection>(60 100 1)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4038</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 150)(0 150)(0 0)</ogo:line>
+ <ogo:line>(60 20)(46 20)</ogo:line>
+ <ogo:line>(60 60)(46 60)</ogo:line>
+ <ogo:line>(60 100)(46 100)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 130)(-6 130)</ogo:line>
+ <ogo:line>(-20 140)(-6 140)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 150)(20 170)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 57)(46 63)</ogo:arc>
+ <ogo:arc>(40 97)(46 103)</ogo:arc>
+ <ogo:arc>(-6 127)(0 133)</ogo:arc>
+ <ogo:arc>(-6 137)(0 143)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 10)</ogo:connection>
+ <ogo:connection>(-20 20 11)</ogo:connection>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(-20 50 13)</ogo:connection>
+ <ogo:connection>(-20 60 12)</ogo:connection>
+ <ogo:connection>(-20 70 5)</ogo:connection>
+ <ogo:connection>(-20 90 15)</ogo:connection>
+ <ogo:connection>(-20 100 14)</ogo:connection>
+ <ogo:connection>(-20 110 2)</ogo:connection>
+ <ogo:connection>(-20 130 3)</ogo:connection>
+ <ogo:connection>(-20 140 6)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 170 8)</ogo:connection>
+ <ogo:connection>(60 20 9)</ogo:connection>
+ <ogo:connection>(60 60 4)</ogo:connection>
+ <ogo:connection>(60 100 1)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4034</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 130)(0 130)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 70)(40 70)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(60 100)(40 100)</ogo:line>
+ <ogo:line>(60 110)(40 110)</ogo:line>
+ <ogo:line>(60 120)(40 120)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 150)(20 130)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 16)</ogo:connection>
+ <ogo:connection>(-20 20 17)</ogo:connection>
+ <ogo:connection>(-20 30 18)</ogo:connection>
+ <ogo:connection>(-20 40 19)</ogo:connection>
+ <ogo:connection>(-20 50 20)</ogo:connection>
+ <ogo:connection>(-20 60 21)</ogo:connection>
+ <ogo:connection>(-20 70 22)</ogo:connection>
+ <ogo:connection>(-20 80 23)</ogo:connection>
+ <ogo:connection>(-20 100 9)</ogo:connection>
+ <ogo:connection>(-20 110 10)</ogo:connection>
+ <ogo:connection>(-20 120 11)</ogo:connection>
+ <ogo:connection>(20 -20 24)</ogo:connection>
+ <ogo:connection>(20 150 12)</ogo:connection>
+ <ogo:connection>(60 10 8)</ogo:connection>
+ <ogo:connection>(60 20 7)</ogo:connection>
+ <ogo:connection>(60 30 6)</ogo:connection>
+ <ogo:connection>(60 40 5)</ogo:connection>
+ <ogo:connection>(60 50 4)</ogo:connection>
+ <ogo:connection>(60 60 3)</ogo:connection>
+ <ogo:connection>(60 70 2)</ogo:connection>
+ <ogo:connection>(60 80 1)</ogo:connection>
+ <ogo:connection>(60 100 14)</ogo:connection>
+ <ogo:connection>(60 110 13)</ogo:connection>
+ <ogo:connection>(60 120 15)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4042</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(46 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(46 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(46 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 37)(46 43)</ogo:arc>
+ <ogo:arc>(40 57)(46 63)</ogo:arc>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 4)</ogo:connection>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(-20 40 13)</ogo:connection>
+ <ogo:connection>(-20 50 14)</ogo:connection>
+ <ogo:connection>(-20 70 5)</ogo:connection>
+ <ogo:connection>(-20 80 6)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 110 8)</ogo:connection>
+ <ogo:connection>(60 10 2)</ogo:connection>
+ <ogo:connection>(60 20 3)</ogo:connection>
+ <ogo:connection>(60 30 10)</ogo:connection>
+ <ogo:connection>(60 40 9)</ogo:connection>
+ <ogo:connection>(60 50 11)</ogo:connection>
+ <ogo:connection>(60 60 12)</ogo:connection>
+ <ogo:connection>(60 70 1)</ogo:connection>
+ <ogo:connection>(60 80 15)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>40175</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(46 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(46 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(46 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 37)(46 43)</ogo:arc>
+ <ogo:arc>(40 57)(46 63)</ogo:arc>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 4)</ogo:connection>
+ <ogo:connection>(-20 30 5)</ogo:connection>
+ <ogo:connection>(-20 40 12)</ogo:connection>
+ <ogo:connection>(-20 50 13)</ogo:connection>
+ <ogo:connection>(-20 70 9)</ogo:connection>
+ <ogo:connection>(-20 80 1)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 110 8)</ogo:connection>
+ <ogo:connection>(60 10 2)</ogo:connection>
+ <ogo:connection>(60 20 3)</ogo:connection>
+ <ogo:connection>(60 30 7)</ogo:connection>
+ <ogo:connection>(60 40 6)</ogo:connection>
+ <ogo:connection>(60 50 10)</ogo:connection>
+ <ogo:connection>(60 60 11)</ogo:connection>
+ <ogo:connection>(60 70 15)</ogo:connection>
+ <ogo:connection>(60 80 14)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4043</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 120)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 120)(40 120)</ogo:line>
+ <ogo:line>(40 0)(40 120)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 100)(60 100)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 140)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 4)</ogo:connection>
+ <ogo:connection>(-20 20 3)</ogo:connection>
+ <ogo:connection>(-20 40 6)</ogo:connection>
+ <ogo:connection>(-20 50 7)</ogo:connection>
+ <ogo:connection>(-20 70 12)</ogo:connection>
+ <ogo:connection>(-20 80 11)</ogo:connection>
+ <ogo:connection>(-20 100 14)</ogo:connection>
+ <ogo:connection>(-20 110 15)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 140 8)</ogo:connection>
+ <ogo:connection>(60 10 2)</ogo:connection>
+ <ogo:connection>(60 30 9)</ogo:connection>
+ <ogo:connection>(60 50 10)</ogo:connection>
+ <ogo:connection>(60 70 1)</ogo:connection>
+ <ogo:connection>(60 100 5)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4044</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 120)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 120)(40 120)</ogo:line>
+ <ogo:line>(40 0)(40 120)</ogo:line>
+ <ogo:line>(-20 10)(-6 10)</ogo:line>
+ <ogo:line>(-20 20)(-6 20)</ogo:line>
+ <ogo:line>(-20 40)(-6 40)</ogo:line>
+ <ogo:line>(-20 50)(-6 50)</ogo:line>
+ <ogo:line>(-20 70)(-6 70)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(-20 100)(-6 100)</ogo:line>
+ <ogo:line>(-20 110)(-6 110)</ogo:line>
+ <ogo:line>(46 10)(60 10)</ogo:line>
+ <ogo:line>(46 30)(60 30)</ogo:line>
+ <ogo:line>(46 50)(60 50)</ogo:line>
+ <ogo:line>(46 70)(60 70)</ogo:line>
+ <ogo:line>(40 100)(60 100)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 140)</ogo:line>
+ <ogo:arc>(-6 7)(0 13)</ogo:arc>
+ <ogo:arc>(-6 17)(0 23)</ogo:arc>
+ <ogo:arc>(-6 37)(0 43)</ogo:arc>
+ <ogo:arc>(-6 47)(0 53)</ogo:arc>
+ <ogo:arc>(-6 67)(0 73)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ <ogo:arc>(-6 97)(0 103)</ogo:arc>
+ <ogo:arc>(-6 107)(0 113)</ogo:arc>
+ <ogo:arc>(40 7)(46 13)</ogo:arc>
+ <ogo:arc>(40 27)(46 33)</ogo:arc>
+ <ogo:arc>(40 47)(46 53)</ogo:arc>
+ <ogo:arc>(40 67)(46 73)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 20 4)</ogo:connection>
+ <ogo:connection>(-20 40 7)</ogo:connection>
+ <ogo:connection>(-20 50 6)</ogo:connection>
+ <ogo:connection>(-20 70 11)</ogo:connection>
+ <ogo:connection>(-20 80 12)</ogo:connection>
+ <ogo:connection>(-20 100 15)</ogo:connection>
+ <ogo:connection>(-20 110 14)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 140 8)</ogo:connection>
+ <ogo:connection>(60 10 13)</ogo:connection>
+ <ogo:connection>(60 30 9)</ogo:connection>
+ <ogo:connection>(60 50 10)</ogo:connection>
+ <ogo:connection>(60 70 1)</ogo:connection>
+ <ogo:connection>(60 100 5)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4046</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 100)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 100)(40 100)</ogo:line>
+ <ogo:line>(40 0)(40 100)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(40 90)(60 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 14)</ogo:connection>
+ <ogo:connection>(-20 20 3)</ogo:connection>
+ <ogo:connection>(-20 30 4)</ogo:connection>
+ <ogo:connection>(-20 40 6)</ogo:connection>
+ <ogo:connection>(-20 70 7)</ogo:connection>
+ <ogo:connection>(-20 80 11)</ogo:connection>
+ <ogo:connection>(-20 90 12)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 120 8)</ogo:connection>
+ <ogo:connection>(60 10 2)</ogo:connection>
+ <ogo:connection>(60 20 13)</ogo:connection>
+ <ogo:connection>(60 30 1)</ogo:connection>
+ <ogo:connection>(60 60 9)</ogo:connection>
+ <ogo:connection>(60 70 10)</ogo:connection>
+ <ogo:connection>(60 80 15)</ogo:connection>
+ <ogo:connection>(60 90 5)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4010a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(20 -10)(20 10)</ogo:line>
+ <ogo:line>(20 50)(20 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 3)</ogo:connection>
+ <ogo:connection>(20 -10 1)</ogo:connection>
+ <ogo:connection>(20 50 8)</ogo:connection>
+ <ogo:connection>(60 20 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4010b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(20 -10)(20 10)</ogo:line>
+ <ogo:line>(20 50)(20 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(20 -10 16)</ogo:connection>
+ <ogo:connection>(20 50 13)</ogo:connection>
+ <ogo:connection>(60 20 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4050b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(60 20 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4010c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 7)</ogo:connection>
+ <ogo:connection>(60 20 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4010d</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 9)</ogo:connection>
+ <ogo:connection>(60 20 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4010e</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 11)</ogo:connection>
+ <ogo:connection>(60 20 12)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4010f</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 14)</ogo:connection>
+ <ogo:connection>(60 20 15)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4041</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(46 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(46 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(46 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 37)(46 43)</ogo:arc>
+ <ogo:arc>(40 57)(46 63)</ogo:arc>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 30 6)</ogo:connection>
+ <ogo:connection>(-20 50 10)</ogo:connection>
+ <ogo:connection>(-20 70 13)</ogo:connection>
+ <ogo:connection>(20 -20 14)</ogo:connection>
+ <ogo:connection>(20 110 7)</ogo:connection>
+ <ogo:connection>(60 10 1)</ogo:connection>
+ <ogo:connection>(60 20 2)</ogo:connection>
+ <ogo:connection>(60 30 4)</ogo:connection>
+ <ogo:connection>(60 40 5)</ogo:connection>
+ <ogo:connection>(60 50 8)</ogo:connection>
+ <ogo:connection>(60 60 9)</ogo:connection>
+ <ogo:connection>(60 70 11)</ogo:connection>
+ <ogo:connection>(60 80 12)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4047</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(-6 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(-6 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(46 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(-6 17)(0 23)</ogo:arc>
+ <ogo:arc>(-6 37)(0 43)</ogo:arc>
+ <ogo:arc>(40 67)(46 73)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 5)</ogo:connection>
+ <ogo:connection>(-20 20 4)</ogo:connection>
+ <ogo:connection>(-20 30 8)</ogo:connection>
+ <ogo:connection>(-20 40 6)</ogo:connection>
+ <ogo:connection>(-20 60 9)</ogo:connection>
+ <ogo:connection>(-20 80 12)</ogo:connection>
+ <ogo:connection>(20 -20 14)</ogo:connection>
+ <ogo:connection>(20 110 7)</ogo:connection>
+ <ogo:connection>(60 10 3)</ogo:connection>
+ <ogo:connection>(60 40 1)</ogo:connection>
+ <ogo:connection>(60 50 2)</ogo:connection>
+ <ogo:connection>(60 60 10)</ogo:connection>
+ <ogo:connection>(60 70 11)</ogo:connection>
+ <ogo:connection>(60 80 13)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4048</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 14)</ogo:connection>
+ <ogo:connection>(-20 20 13)</ogo:connection>
+ <ogo:connection>(-20 30 12)</ogo:connection>
+ <ogo:connection>(-20 40 11)</ogo:connection>
+ <ogo:connection>(-20 50 6)</ogo:connection>
+ <ogo:connection>(-20 60 5)</ogo:connection>
+ <ogo:connection>(-20 70 4)</ogo:connection>
+ <ogo:connection>(-20 80 3)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 110 8)</ogo:connection>
+ <ogo:connection>(60 10 15)</ogo:connection>
+ <ogo:connection>(60 30 1)</ogo:connection>
+ <ogo:connection>(60 50 2)</ogo:connection>
+ <ogo:connection>(60 60 10)</ogo:connection>
+ <ogo:connection>(60 70 7)</ogo:connection>
+ <ogo:connection>(60 80 9)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4051</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 13)</ogo:connection>
+ <ogo:connection>(-20 20 14)</ogo:connection>
+ <ogo:connection>(-20 30 15)</ogo:connection>
+ <ogo:connection>(-20 40 12)</ogo:connection>
+ <ogo:connection>(-20 50 1)</ogo:connection>
+ <ogo:connection>(-20 60 5)</ogo:connection>
+ <ogo:connection>(-20 70 2)</ogo:connection>
+ <ogo:connection>(-20 80 4)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 110 8)</ogo:connection>
+ <ogo:connection>(60 10 7)</ogo:connection>
+ <ogo:connection>(60 30 3)</ogo:connection>
+ <ogo:connection>(60 50 11)</ogo:connection>
+ <ogo:connection>(60 60 10)</ogo:connection>
+ <ogo:connection>(60 70 9)</ogo:connection>
+ <ogo:connection>(60 80 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4512</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 1)</ogo:connection>
+ <ogo:connection>(-20 20 2)</ogo:connection>
+ <ogo:connection>(-20 30 3)</ogo:connection>
+ <ogo:connection>(-20 40 4)</ogo:connection>
+ <ogo:connection>(-20 50 5)</ogo:connection>
+ <ogo:connection>(-20 60 6)</ogo:connection>
+ <ogo:connection>(-20 70 7)</ogo:connection>
+ <ogo:connection>(-20 80 9)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 110 8)</ogo:connection>
+ <ogo:connection>(60 10 15)</ogo:connection>
+ <ogo:connection>(60 30 14)</ogo:connection>
+ <ogo:connection>(60 50 11)</ogo:connection>
+ <ogo:connection>(60 60 12)</ogo:connection>
+ <ogo:connection>(60 70 13)</ogo:connection>
+ <ogo:connection>(60 80 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4519</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 6)</ogo:connection>
+ <ogo:connection>(-20 20 7)</ogo:connection>
+ <ogo:connection>(-20 30 4)</ogo:connection>
+ <ogo:connection>(-20 40 5)</ogo:connection>
+ <ogo:connection>(-20 50 2)</ogo:connection>
+ <ogo:connection>(-20 60 3)</ogo:connection>
+ <ogo:connection>(-20 70 15)</ogo:connection>
+ <ogo:connection>(-20 80 1)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 110 8)</ogo:connection>
+ <ogo:connection>(60 10 9)</ogo:connection>
+ <ogo:connection>(60 30 14)</ogo:connection>
+ <ogo:connection>(60 50 10)</ogo:connection>
+ <ogo:connection>(60 60 11)</ogo:connection>
+ <ogo:connection>(60 70 12)</ogo:connection>
+ <ogo:connection>(60 80 13)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4053</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 110)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 110)(40 110)</ogo:line>
+ <ogo:line>(40 0)(40 110)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(40 90)(60 90)</ogo:line>
+ <ogo:line>(40 100)(60 100)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 130)(20 110)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 12)</ogo:connection>
+ <ogo:connection>(-20 20 13)</ogo:connection>
+ <ogo:connection>(-20 40 2)</ogo:connection>
+ <ogo:connection>(-20 50 1)</ogo:connection>
+ <ogo:connection>(-20 70 5)</ogo:connection>
+ <ogo:connection>(-20 80 3)</ogo:connection>
+ <ogo:connection>(-20 100 7)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 130 8)</ogo:connection>
+ <ogo:connection>(60 10 14)</ogo:connection>
+ <ogo:connection>(60 30 15)</ogo:connection>
+ <ogo:connection>(60 50 4)</ogo:connection>
+ <ogo:connection>(60 70 11)</ogo:connection>
+ <ogo:connection>(60 80 10)</ogo:connection>
+ <ogo:connection>(60 90 9)</ogo:connection>
+ <ogo:connection>(60 100 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4071a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(4 10)</ogo:line>
+ <ogo:line>(-20 30)(4 30)</ogo:line>
+ <ogo:line>(10 -20)(10 0)</ogo:line>
+ <ogo:line>(10 60)(10 40)</ogo:line>
+ <ogo:line>(45 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 1)</ogo:connection>
+ <ogo:connection>(-20 30 2)</ogo:connection>
+ <ogo:connection>(10 -20 14)</ogo:connection>
+ <ogo:connection>(10 60 7)</ogo:connection>
+ <ogo:connection>(60 20 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4071b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(4 10)</ogo:line>
+ <ogo:line>(-20 30)(4 30)</ogo:line>
+ <ogo:line>(45 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 6)</ogo:connection>
+ <ogo:connection>(-20 30 5)</ogo:connection>
+ <ogo:connection>(60 20 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4071c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(4 10)</ogo:line>
+ <ogo:line>(-20 30)(4 30)</ogo:line>
+ <ogo:line>(45 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 8)</ogo:connection>
+ <ogo:connection>(-20 30 9)</ogo:connection>
+ <ogo:connection>(60 20 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4071d</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(4 10)</ogo:line>
+ <ogo:line>(-20 30)(4 30)</ogo:line>
+ <ogo:line>(45 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 13)</ogo:connection>
+ <ogo:connection>(-20 30 12)</ogo:connection>
+ <ogo:connection>(60 20 11)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+
+<ogo:symbol>
+ <ogo:name>4081a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 60)(20 40)</ogo:line>
+ <ogo:line>(50 20)(70 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 1)</ogo:connection>
+ <ogo:connection>(-20 30 2)</ogo:connection>
+ <ogo:connection>(20 -20 14)</ogo:connection>
+ <ogo:connection>(20 60 7)</ogo:connection>
+ <ogo:connection>(70 20 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4081b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(50 20)(70 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 6)</ogo:connection>
+ <ogo:connection>(-20 30 5)</ogo:connection>
+ <ogo:connection>(70 20 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4081c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(50 20)(70 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 9)</ogo:connection>
+ <ogo:connection>(-20 30 8)</ogo:connection>
+ <ogo:connection>(70 20 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4081d</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(50 20)(70 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 12)</ogo:connection>
+ <ogo:connection>(-20 30 13)</ogo:connection>
+ <ogo:connection>(70 20 11)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4082a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 50)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 50)(40 50)</ogo:line>
+ <ogo:line>(40 0)(45 1)(50 3)(55 6)(57 9)(60 12)(64 20)(65 25)</ogo:line>
+ <ogo:line>(40 50)(45 49)(50 47)(55 44)(57 41)(60 38)(64 30)(65 25)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 70)(20 50)</ogo:line>
+ <ogo:line>(65 25)(78 20)(90 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(-20 20 3)</ogo:connection>
+ <ogo:connection>(-20 30 4)</ogo:connection>
+ <ogo:connection>(-20 40 5)</ogo:connection>
+ <ogo:connection>(20 -20 14)</ogo:connection>
+ <ogo:connection>(20 70 7)</ogo:connection>
+ <ogo:connection>(90 20 1)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4082b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 50)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 50)(40 50)</ogo:line>
+ <ogo:line>(40 0)(45 1)(50 3)(55 6)(57 9)(60 12)(64 20)(65 25)</ogo:line>
+ <ogo:line>(40 50)(45 49)(50 47)(55 44)(57 41)(60 38)(64 30)(65 25)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(65 25)(78 20)(90 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 9)</ogo:connection>
+ <ogo:connection>(-20 20 10)</ogo:connection>
+ <ogo:connection>(-20 30 11)</ogo:connection>
+ <ogo:connection>(-20 40 12)</ogo:connection>
+ <ogo:connection>(90 20 13)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4072a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(5 10)(7 15)(8 20)(9 25)(8 30)(7 35)(5 40)(3 45)(0 50)</ogo:line>
+ <ogo:line>(0 0)(15 0)</ogo:line>
+ <ogo:line>(0 50)(15 50)</ogo:line>
+ <ogo:line>(15 0)(20 0)(25 1)(30 2)(35 3)(40 5)(45 7)(50 11)(55 16)(60 22)(63 25)</ogo:line>
+ <ogo:line>(15 50)(20 50)(25 49)(30 48)(35 47)(40 45)(45 43)(50 39)(55 34)(60 28)(63 25)</ogo:line>
+ <ogo:line>(-20 10)(5 10)</ogo:line>
+ <ogo:line>(-20 20)(8 20)</ogo:line>
+ <ogo:line>(-20 30)(8 30)</ogo:line>
+ <ogo:line>(-20 40)(5 40)</ogo:line>
+ <ogo:line>(10 -20)(10 0)</ogo:line>
+ <ogo:line>(10 50)(10 70)</ogo:line>
+ <ogo:line>(63 25)(75 20)(80 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(-20 20 3)</ogo:connection>
+ <ogo:connection>(-20 30 4)</ogo:connection>
+ <ogo:connection>(-20 40 5)</ogo:connection>
+ <ogo:connection>(10 -20 14)</ogo:connection>
+ <ogo:connection>(10 70 7)</ogo:connection>
+ <ogo:connection>(80 20 1)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4072b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(5 10)(7 15)(8 20)(9 25)(8 30)(7 35)(5 40)(3 45)(0 50)</ogo:line>
+ <ogo:line>(0 0)(15 0)</ogo:line>
+ <ogo:line>(0 50)(15 50)</ogo:line>
+ <ogo:line>(15 0)(20 0)(25 1)(30 2)(35 3)(40 5)(45 7)(50 11)(55 16)(60 22)(63 25)</ogo:line>
+ <ogo:line>(15 50)(20 50)(25 49)(30 48)(35 47)(40 45)(45 43)(50 39)(55 34)(60 28)(63 25)</ogo:line>
+ <ogo:line>(-20 10)(5 10)</ogo:line>
+ <ogo:line>(-20 20)(8 20)</ogo:line>
+ <ogo:line>(-20 30)(8 30)</ogo:line>
+ <ogo:line>(-20 40)(5 40)</ogo:line>
+ <ogo:line>(63 25)(75 20)(80 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 12)</ogo:connection>
+ <ogo:connection>(-20 20 11)</ogo:connection>
+ <ogo:connection>(-20 30 10)</ogo:connection>
+ <ogo:connection>(-20 40 9)</ogo:connection>
+ <ogo:connection>(80 20 13)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4075a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(4 10)</ogo:line>
+ <ogo:line>(-20 20)(6 20)</ogo:line>
+ <ogo:line>(-20 30)(4 30)</ogo:line>
+ <ogo:line>(10 -20)(10 0)</ogo:line>
+ <ogo:line>(10 60)(10 40)</ogo:line>
+ <ogo:line>(45 20)(70 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 20 4)</ogo:connection>
+ <ogo:connection>(-20 30 5)</ogo:connection>
+ <ogo:connection>(10 -20 14)</ogo:connection>
+ <ogo:connection>(10 60 7)</ogo:connection>
+ <ogo:connection>(70 20 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4075b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(4 10)</ogo:line>
+ <ogo:line>(-20 20)(6 20)</ogo:line>
+ <ogo:line>(-20 30)(4 30)</ogo:line>
+ <ogo:line>(45 20)(70 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 13)</ogo:connection>
+ <ogo:connection>(-20 20 12)</ogo:connection>
+ <ogo:connection>(-20 30 11)</ogo:connection>
+ <ogo:connection>(70 20 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4075c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(4 10)</ogo:line>
+ <ogo:line>(-20 20)(6 20)</ogo:line>
+ <ogo:line>(-20 30)(4 30)</ogo:line>
+ <ogo:line>(45 20)(70 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 1)</ogo:connection>
+ <ogo:connection>(-20 20 2)</ogo:connection>
+ <ogo:connection>(-20 30 8)</ogo:connection>
+ <ogo:connection>(70 20 9)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4073a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 60)(20 40)</ogo:line>
+ <ogo:line>(50 20)(70 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 1)</ogo:connection>
+ <ogo:connection>(-20 20 2)</ogo:connection>
+ <ogo:connection>(-20 30 8)</ogo:connection>
+ <ogo:connection>(20 -20 14)</ogo:connection>
+ <ogo:connection>(20 60 7)</ogo:connection>
+ <ogo:connection>(70 20 9)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4073b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(50 20)(70 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 10 3)</ogo:connection>
+ <ogo:connection>(-10 20 4)</ogo:connection>
+ <ogo:connection>(-10 30 5)</ogo:connection>
+ <ogo:connection>(60 20 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4073c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(50 20)(70 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 10 11)</ogo:connection>
+ <ogo:connection>(-10 20 12)</ogo:connection>
+ <ogo:connection>(-10 30 13)</ogo:connection>
+ <ogo:connection>(60 20 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4076</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 100)(40 100)(40 0)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(46 80)</ogo:line>
+ <ogo:line>(60 90)(46 90)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(-20 90)(-6 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ <ogo:arc>(40 87)(46 93)</ogo:arc>
+ <ogo:arc>(-6 87)(0 93)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 7)</ogo:connection>
+ <ogo:connection>(-20 30 14)</ogo:connection>
+ <ogo:connection>(-20 40 13)</ogo:connection>
+ <ogo:connection>(-20 50 12)</ogo:connection>
+ <ogo:connection>(-20 60 11)</ogo:connection>
+ <ogo:connection>(-20 80 9)</ogo:connection>
+ <ogo:connection>(-20 90 10)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 120 8)</ogo:connection>
+ <ogo:connection>(60 10 15)</ogo:connection>
+ <ogo:connection>(60 30 3)</ogo:connection>
+ <ogo:connection>(60 40 4)</ogo:connection>
+ <ogo:connection>(60 50 5)</ogo:connection>
+ <ogo:connection>(60 60 6)</ogo:connection>
+ <ogo:connection>(60 80 1)</ogo:connection>
+ <ogo:connection>(60 90 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>40192</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 100)(40 100)(40 0)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(46 80)</ogo:line>
+ <ogo:line>(60 90)(46 90)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(-20 90)(-6 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ <ogo:arc>(40 87)(46 93)</ogo:arc>
+ <ogo:arc>(-6 87)(0 93)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 11)</ogo:connection>
+ <ogo:connection>(-20 30 15)</ogo:connection>
+ <ogo:connection>(-20 40 1)</ogo:connection>
+ <ogo:connection>(-20 50 10)</ogo:connection>
+ <ogo:connection>(-20 60 9)</ogo:connection>
+ <ogo:connection>(-20 80 5)</ogo:connection>
+ <ogo:connection>(-20 90 4)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 120 8)</ogo:connection>
+ <ogo:connection>(60 10 14)</ogo:connection>
+ <ogo:connection>(60 30 3)</ogo:connection>
+ <ogo:connection>(60 40 2)</ogo:connection>
+ <ogo:connection>(60 50 6)</ogo:connection>
+ <ogo:connection>(60 60 7)</ogo:connection>
+ <ogo:connection>(60 80 12)</ogo:connection>
+ <ogo:connection>(60 90 13)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4077a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(-1 10)</ogo:line>
+ <ogo:line>(-20 30)(-1 30)</ogo:line>
+ <ogo:line>(10 -20)(10 0)</ogo:line>
+ <ogo:line>(10 60)(10 40)</ogo:line>
+ <ogo:line>(51 20)(70 20)</ogo:line>
+ <ogo:arc>(45 17)(51 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 1)</ogo:connection>
+ <ogo:connection>(-20 30 2)</ogo:connection>
+ <ogo:connection>(10 -20 14)</ogo:connection>
+ <ogo:connection>(10 60 7)</ogo:connection>
+ <ogo:connection>(70 20 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4077b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(-1 10)</ogo:line>
+ <ogo:line>(-20 30)(-1 30)</ogo:line>
+ <ogo:line>(51 20)(70 20)</ogo:line>
+ <ogo:arc>(45 17)(51 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 6)</ogo:connection>
+ <ogo:connection>(-20 30 5)</ogo:connection>
+ <ogo:connection>(70 20 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4077c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(-1 10)</ogo:line>
+ <ogo:line>(-20 30)(-1 30)</ogo:line>
+ <ogo:line>(51 20)(70 20)</ogo:line>
+ <ogo:arc>(45 17)(51 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 8)</ogo:connection>
+ <ogo:connection>(-20 30 9)</ogo:connection>
+ <ogo:connection>(70 20 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4077d</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(-1 10)</ogo:line>
+ <ogo:line>(-20 30)(-1 30)</ogo:line>
+ <ogo:line>(51 20)(70 20)</ogo:line>
+ <ogo:arc>(45 17)(51 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 13)</ogo:connection>
+ <ogo:connection>(-20 30 12)</ogo:connection>
+ <ogo:connection>(70 20 11)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4099</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(-20 30 6)</ogo:connection>
+ <ogo:connection>(-20 40 7)</ogo:connection>
+ <ogo:connection>(-20 50 3)</ogo:connection>
+ <ogo:connection>(-20 70 2)</ogo:connection>
+ <ogo:connection>(-20 80 4)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 110 8)</ogo:connection>
+ <ogo:connection>(60 10 9)</ogo:connection>
+ <ogo:connection>(60 20 10)</ogo:connection>
+ <ogo:connection>(60 30 11)</ogo:connection>
+ <ogo:connection>(60 40 12)</ogo:connection>
+ <ogo:connection>(60 50 13)</ogo:connection>
+ <ogo:connection>(60 60 14)</ogo:connection>
+ <ogo:connection>(60 70 15)</ogo:connection>
+ <ogo:connection>(60 80 1)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4067</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 170)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 170)(40 170)</ogo:line>
+ <ogo:line>(40 0)(40 170)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 190)(20 170)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 9)</ogo:connection>
+ <ogo:connection>(-20 20 8)</ogo:connection>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(-20 40 6)</ogo:connection>
+ <ogo:connection>(-20 50 5)</ogo:connection>
+ <ogo:connection>(-20 60 4)</ogo:connection>
+ <ogo:connection>(-20 70 3)</ogo:connection>
+ <ogo:connection>(-20 80 2)</ogo:connection>
+ <ogo:connection>(-20 90 23)</ogo:connection>
+ <ogo:connection>(-20 100 22)</ogo:connection>
+ <ogo:connection>(-20 110 21)</ogo:connection>
+ <ogo:connection>(-20 120 20)</ogo:connection>
+ <ogo:connection>(-20 130 19)</ogo:connection>
+ <ogo:connection>(-20 140 18)</ogo:connection>
+ <ogo:connection>(-20 150 17)</ogo:connection>
+ <ogo:connection>(-20 160 16)</ogo:connection>
+ <ogo:connection>(20 -20 24)</ogo:connection>
+ <ogo:connection>(20 190 12)</ogo:connection>
+ <ogo:connection>(60 10 1)</ogo:connection>
+ <ogo:connection>(60 30 15)</ogo:connection>
+ <ogo:connection>(60 50 10)</ogo:connection>
+ <ogo:connection>(60 60 11)</ogo:connection>
+ <ogo:connection>(60 70 14)</ogo:connection>
+ <ogo:connection>(60 80 13)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4097</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 170)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 170)(40 170)</ogo:line>
+ <ogo:line>(40 0)(40 170)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 190)(20 170)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 9)</ogo:connection>
+ <ogo:connection>(-20 20 8)</ogo:connection>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(-20 40 6)</ogo:connection>
+ <ogo:connection>(-20 50 5)</ogo:connection>
+ <ogo:connection>(-20 60 4)</ogo:connection>
+ <ogo:connection>(-20 70 3)</ogo:connection>
+ <ogo:connection>(-20 80 2)</ogo:connection>
+ <ogo:connection>(-20 90 23)</ogo:connection>
+ <ogo:connection>(-20 100 22)</ogo:connection>
+ <ogo:connection>(-20 110 21)</ogo:connection>
+ <ogo:connection>(-20 120 20)</ogo:connection>
+ <ogo:connection>(-20 130 19)</ogo:connection>
+ <ogo:connection>(-20 140 18)</ogo:connection>
+ <ogo:connection>(-20 150 16)</ogo:connection>
+ <ogo:connection>(-20 160 15)</ogo:connection>
+ <ogo:connection>(20 -20 24)</ogo:connection>
+ <ogo:connection>(20 190 12)</ogo:connection>
+ <ogo:connection>(60 10 1)</ogo:connection>
+ <ogo:connection>(60 30 17)</ogo:connection>
+ <ogo:connection>(60 50 10)</ogo:connection>
+ <ogo:connection>(60 60 11)</ogo:connection>
+ <ogo:connection>(60 70 14)</ogo:connection>
+ <ogo:connection>(60 80 13)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ <ogo:symbol>
+ <ogo:name>40174</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(46 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 20 4)</ogo:connection>
+ <ogo:connection>(-20 30 6)</ogo:connection>
+ <ogo:connection>(-20 40 11)</ogo:connection>
+ <ogo:connection>(-20 50 13)</ogo:connection>
+ <ogo:connection>(-20 60 14)</ogo:connection>
+ <ogo:connection>(-20 80 9)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 110 8)</ogo:connection>
+ <ogo:connection>(60 10 2)</ogo:connection>
+ <ogo:connection>(60 20 5)</ogo:connection>
+ <ogo:connection>(60 30 7)</ogo:connection>
+ <ogo:connection>(60 40 10)</ogo:connection>
+ <ogo:connection>(60 50 12)</ogo:connection>
+ <ogo:connection>(60 60 15)</ogo:connection>
+ <ogo:connection>(60 80 1)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4503</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(46 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(-20 20 4)</ogo:connection>
+ <ogo:connection>(-20 30 6)</ogo:connection>
+ <ogo:connection>(-20 40 10)</ogo:connection>
+ <ogo:connection>(-20 50 12)</ogo:connection>
+ <ogo:connection>(-20 60 14)</ogo:connection>
+ <ogo:connection>(-20 80 1)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 110 8)</ogo:connection>
+ <ogo:connection>(60 10 3)</ogo:connection>
+ <ogo:connection>(60 20 5)</ogo:connection>
+ <ogo:connection>(60 30 7)</ogo:connection>
+ <ogo:connection>(60 40 9)</ogo:connection>
+ <ogo:connection>(60 50 11)</ogo:connection>
+ <ogo:connection>(60 60 13)</ogo:connection>
+ <ogo:connection>(60 80 15)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4511</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 70)(-6 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(46 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ <ogo:arc>(-6 67)(0 73)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 7)</ogo:connection>
+ <ogo:connection>(-20 30 1)</ogo:connection>
+ <ogo:connection>(-20 40 2)</ogo:connection>
+ <ogo:connection>(-20 50 6)</ogo:connection>
+ <ogo:connection>(-20 70 3)</ogo:connection>
+ <ogo:connection>(-20 80 5)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 110 8)</ogo:connection>
+ <ogo:connection>(60 10 13)</ogo:connection>
+ <ogo:connection>(60 20 12)</ogo:connection>
+ <ogo:connection>(60 30 11)</ogo:connection>
+ <ogo:connection>(60 40 10)</ogo:connection>
+ <ogo:connection>(60 50 9)</ogo:connection>
+ <ogo:connection>(60 60 15)</ogo:connection>
+ <ogo:connection>(60 70 14)</ogo:connection>
+ <ogo:connection>(60 80 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4543</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 70)(-6 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(46 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ <ogo:arc>(-6 67)(0 73)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(-20 30 3)</ogo:connection>
+ <ogo:connection>(-20 40 2)</ogo:connection>
+ <ogo:connection>(-20 50 4)</ogo:connection>
+ <ogo:connection>(-20 70 1)</ogo:connection>
+ <ogo:connection>(-20 80 7)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 110 8)</ogo:connection>
+ <ogo:connection>(60 10 9)</ogo:connection>
+ <ogo:connection>(60 20 10)</ogo:connection>
+ <ogo:connection>(60 30 11)</ogo:connection>
+ <ogo:connection>(60 40 12)</ogo:connection>
+ <ogo:connection>(60 50 13)</ogo:connection>
+ <ogo:connection>(60 60 15)</ogo:connection>
+ <ogo:connection>(60 70 14)</ogo:connection>
+ <ogo:connection>(60 80 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4514</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 170)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 170)(40 170)</ogo:line>
+ <ogo:line>(40 0)(40 170)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 70)(-6 70)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(40 90)(60 90)</ogo:line>
+ <ogo:line>(40 100)(60 100)</ogo:line>
+ <ogo:line>(40 110)(60 110)</ogo:line>
+ <ogo:line>(40 120)(60 120)</ogo:line>
+ <ogo:line>(40 130)(60 130)</ogo:line>
+ <ogo:line>(40 140)(60 140)</ogo:line>
+ <ogo:line>(40 150)(60 150)</ogo:line>
+ <ogo:line>(40 160)(60 160)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 190)(20 170)</ogo:line>
+ <ogo:arc>(-6 67)(0 73)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 2)</ogo:connection>
+ <ogo:connection>(-20 30 3)</ogo:connection>
+ <ogo:connection>(-20 40 21)</ogo:connection>
+ <ogo:connection>(-20 50 22)</ogo:connection>
+ <ogo:connection>(-20 70 1)</ogo:connection>
+ <ogo:connection>(-20 80 23)</ogo:connection>
+ <ogo:connection>(20 -20 24)</ogo:connection>
+ <ogo:connection>(20 190 12)</ogo:connection>
+ <ogo:connection>(60 10 11)</ogo:connection>
+ <ogo:connection>(60 20 9)</ogo:connection>
+ <ogo:connection>(60 30 10)</ogo:connection>
+ <ogo:connection>(60 40 8)</ogo:connection>
+ <ogo:connection>(60 50 7)</ogo:connection>
+ <ogo:connection>(60 60 6)</ogo:connection>
+ <ogo:connection>(60 70 5)</ogo:connection>
+ <ogo:connection>(60 80 4)</ogo:connection>
+ <ogo:connection>(60 90 18)</ogo:connection>
+ <ogo:connection>(60 100 17)</ogo:connection>
+ <ogo:connection>(60 110 20)</ogo:connection>
+ <ogo:connection>(60 120 19)</ogo:connection>
+ <ogo:connection>(60 130 14)</ogo:connection>
+ <ogo:connection>(60 140 13)</ogo:connection>
+ <ogo:connection>(60 150 16)</ogo:connection>
+ <ogo:connection>(60 160 15)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4515</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 170)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 170)(40 170)</ogo:line>
+ <ogo:line>(40 0)(40 170)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 70)(-6 70)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(46 10)(60 10)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:line>(46 30)(60 30)</ogo:line>
+ <ogo:line>(46 40)(60 40)</ogo:line>
+ <ogo:line>(46 50)(60 50)</ogo:line>
+ <ogo:line>(46 60)(60 60)</ogo:line>
+ <ogo:line>(46 70)(60 70)</ogo:line>
+ <ogo:line>(46 80)(60 80)</ogo:line>
+ <ogo:line>(46 90)(60 90)</ogo:line>
+ <ogo:line>(46 100)(60 100)</ogo:line>
+ <ogo:line>(46 110)(60 110)</ogo:line>
+ <ogo:line>(46 120)(60 120)</ogo:line>
+ <ogo:line>(46 130)(60 130)</ogo:line>
+ <ogo:line>(46 140)(60 140)</ogo:line>
+ <ogo:line>(46 150)(60 150)</ogo:line>
+ <ogo:line>(46 160)(60 160)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 190)(20 170)</ogo:line>
+ <ogo:arc>(-6 67)(0 73)</ogo:arc>
+ <ogo:arc>(40 7)(46 13)</ogo:arc>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 27)(46 33)</ogo:arc>
+ <ogo:arc>(40 37)(46 43)</ogo:arc>
+ <ogo:arc>(40 47)(46 53)</ogo:arc>
+ <ogo:arc>(40 57)(46 63)</ogo:arc>
+ <ogo:arc>(40 67)(46 73)</ogo:arc>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ <ogo:arc>(40 87)(46 93)</ogo:arc>
+ <ogo:arc>(40 97)(46 103)</ogo:arc>
+ <ogo:arc>(40 107)(46 113)</ogo:arc>
+ <ogo:arc>(40 117)(46 123)</ogo:arc>
+ <ogo:arc>(40 127)(46 133)</ogo:arc>
+ <ogo:arc>(40 137)(46 143)</ogo:arc>
+ <ogo:arc>(40 147)(46 153)</ogo:arc>
+ <ogo:arc>(40 157)(46 163)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 2)</ogo:connection>
+ <ogo:connection>(-20 30 3)</ogo:connection>
+ <ogo:connection>(-20 40 21)</ogo:connection>
+ <ogo:connection>(-20 50 22)</ogo:connection>
+ <ogo:connection>(-20 70 1)</ogo:connection>
+ <ogo:connection>(-20 80 23)</ogo:connection>
+ <ogo:connection>(20 -20 24)</ogo:connection>
+ <ogo:connection>(20 190 12)</ogo:connection>
+ <ogo:connection>(60 10 11)</ogo:connection>
+ <ogo:connection>(60 20 9)</ogo:connection>
+ <ogo:connection>(60 30 10)</ogo:connection>
+ <ogo:connection>(60 40 8)</ogo:connection>
+ <ogo:connection>(60 50 7)</ogo:connection>
+ <ogo:connection>(60 60 6)</ogo:connection>
+ <ogo:connection>(60 70 5)</ogo:connection>
+ <ogo:connection>(60 80 4)</ogo:connection>
+ <ogo:connection>(60 90 18)</ogo:connection>
+ <ogo:connection>(60 100 17)</ogo:connection>
+ <ogo:connection>(60 110 20)</ogo:connection>
+ <ogo:connection>(60 120 19)</ogo:connection>
+ <ogo:connection>(60 130 14)</ogo:connection>
+ <ogo:connection>(60 140 13)</ogo:connection>
+ <ogo:connection>(60 150 16)</ogo:connection>
+ <ogo:connection>(60 160 15)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4538a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 60)(0 60)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(-6 30)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(66 30)(80 30)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 66)(30 80)</ogo:line>
+ <ogo:arc>(-6 27)(0 33)</ogo:arc>
+ <ogo:arc>(60 27)(66 33)</ogo:arc>
+ <ogo:arc>(27 60)(33 66)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(-20 30 5)</ogo:connection>
+ <ogo:connection>(-20 50 4)</ogo:connection>
+ <ogo:connection>(80 10 6)</ogo:connection>
+ <ogo:connection>(80 30 7)</ogo:connection>
+ <ogo:connection>(80 50 8)</ogo:connection>
+ <ogo:connection>(30 -20 1)</ogo:connection>
+ <ogo:connection>(30 80 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4538b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 60)(0 60)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(-6 30)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(66 30)(80 30)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 66)(30 80)</ogo:line>
+ <ogo:arc>(-6 27)(0 33)</ogo:arc>
+ <ogo:arc>(60 27)(66 33)</ogo:arc>
+ <ogo:arc>(27 60)(33 66)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 14)</ogo:connection>
+ <ogo:connection>(-20 30 11)</ogo:connection>
+ <ogo:connection>(-20 50 12)</ogo:connection>
+ <ogo:connection>(80 10 10)</ogo:connection>
+ <ogo:connection>(80 30 9)</ogo:connection>
+ <ogo:connection>(80 50 16)</ogo:connection>
+ <ogo:connection>(30 -20 15)</ogo:connection>
+ <ogo:connection>(30 80 13)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4541</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 90)(0 90)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 70)(40 70)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 1)</ogo:connection>
+ <ogo:connection>(-20 30 2)</ogo:connection>
+ <ogo:connection>(-20 50 3)</ogo:connection>
+ <ogo:connection>(-20 70 12)</ogo:connection>
+ <ogo:connection>(-20 80 13)</ogo:connection>
+ <ogo:connection>(60 10 8)</ogo:connection>
+ <ogo:connection>(60 30 9)</ogo:connection>
+ <ogo:connection>(60 50 10)</ogo:connection>
+ <ogo:connection>(60 60 5)</ogo:connection>
+ <ogo:connection>(60 80 6)</ogo:connection>
+ <ogo:connection>(20 -20 14)</ogo:connection>
+ <ogo:connection>(20 80 7)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4553</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 110)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 110)(40 110)</ogo:line>
+ <ogo:line>(40 0)(40 110)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(46 80)(60 80)</ogo:line>
+ <ogo:line>(46 90)(60 90)</ogo:line>
+ <ogo:line>(46 100)(60 100)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 130)(20 110)</ogo:line>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ <ogo:arc>(40 87)(46 93)</ogo:arc>
+ <ogo:arc>(40 97)(46 103)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 12)</ogo:connection>
+ <ogo:connection>(-20 30 10)</ogo:connection>
+ <ogo:connection>(-20 50 11)</ogo:connection>
+ <ogo:connection>(-20 70 13)</ogo:connection>
+ <ogo:connection>(-20 90 4)</ogo:connection>
+ <ogo:connection>(-20 100 3)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 130 8)</ogo:connection>
+ <ogo:connection>(60 10 9)</ogo:connection>
+ <ogo:connection>(60 20 7)</ogo:connection>
+ <ogo:connection>(60 30 6)</ogo:connection>
+ <ogo:connection>(60 40 5)</ogo:connection>
+ <ogo:connection>(60 60 14)</ogo:connection>
+ <ogo:connection>(60 80 2)</ogo:connection>
+ <ogo:connection>(60 90 1)</ogo:connection>
+ <ogo:connection>(60 100 15)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </ogo:symbols>
+
+
+
+ <ogo:parts>
+
+ <ogo:part>
+ <ogo:name>4000a</ogo:name>
+ <ogo:symbol>4025a</ogo:symbol>
+ <ogo:description>NOR 3 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(53 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(0 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(7 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4000a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %3 %4 %5 %6 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4000b</ogo:name>
+ <ogo:symbol>4025b</ogo:symbol>
+ <ogo:description>NOR 3 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(53 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4000b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %13 %12 %11 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4000c</ogo:name>
+ <ogo:symbol>4000c</ogo:symbol>
+ <ogo:description>INVERTER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(53 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4000c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4011a</ogo:name>
+ <ogo:symbol>4011a</ogo:symbol>
+ <ogo:description>NAND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(17 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(12 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-20 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4011a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4011b</ogo:name>
+ <ogo:symbol>4011b</ogo:symbol>
+ <ogo:description>NAND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(17 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4011b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4011c</ogo:name>
+ <ogo:symbol>4011c</ogo:symbol>
+ <ogo:description>NAND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(17 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-15 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4011c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4011d</ogo:name>
+ <ogo:symbol>4011d</ogo:symbol>
+ <ogo:description>NAND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(17 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4011d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4001a</ogo:name>
+ <ogo:symbol>4001a</ogo:symbol>
+ <ogo:description>NOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(40 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(53 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(0 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(40 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4001a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4001b</ogo:name>
+ <ogo:symbol>4001b</ogo:symbol>
+ <ogo:description>NOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(53 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-15 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4001b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4001c</ogo:name>
+ <ogo:symbol>4001c</ogo:symbol>
+ <ogo:description>NOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(53 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-15 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4001c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4001d</ogo:name>
+ <ogo:symbol>4001d</ogo:symbol>
+ <ogo:description>NOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(53 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-15 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4001d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4002a</ogo:name>
+ <ogo:symbol>4002a</ogo:symbol>
+ <ogo:description>NOR 4 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(70 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(0 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(0 72)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4002a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4002b</ogo:name>
+ <ogo:symbol>4002b</ogo:symbol>
+ <ogo:description>NOR 4 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(70 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4002b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %13 %12 %11 %10 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4012a</ogo:name>
+ <ogo:symbol>4012a</ogo:symbol>
+ <ogo:description>NAND 4 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(78 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(5 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(12 62)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4012a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4012b</ogo:name>
+ <ogo:symbol>4012b</ogo:symbol>
+ <ogo:description>NAND 4 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(78 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4012b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %9 %10 %11 %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4006</ogo:name>
+ <ogo:symbol>4006</ogo:symbol>
+ <ogo:description>18 stage shift register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 90)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2Z</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(47 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4Z</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(3 88)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4006</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %13 %14 %1 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4007a</ogo:name>
+ <ogo:symbol>4007a</ogo:symbol>
+ <ogo:description>Pair MOSFET</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(19 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(22 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(35 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(35 62)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-20 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4007a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %6 %7 %8 %13 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4007b</ogo:name>
+ <ogo:symbol>4007b</ogo:symbol>
+ <ogo:description>Pair MOSFET</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(19 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(22 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(35 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(35 62)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-20 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4007b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4007c</ogo:name>
+ <ogo:symbol>4007c</ogo:symbol>
+ <ogo:description>Pair MOSFET</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(19 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(22 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(35 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-20 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4007c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %9 %10 %11 %12 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4008</ogo:name>
+ <ogo:symbol>4008</ogo:symbol>
+ <ogo:description>4 bit full adder</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B4</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S1</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S2</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S3</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S4</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CO</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CI</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4008</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4009a</ogo:name>
+ <ogo:symbol>4009a</ogo:symbol>
+ <ogo:description>Inverter Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(10 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(10 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4009a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %1 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4009b</ogo:name>
+ <ogo:symbol>4009b</ogo:symbol>
+ <ogo:description>Inverter Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(9 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4009b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 %16 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4009c</ogo:name>
+ <ogo:symbol>4009c</ogo:symbol>
+ <ogo:description>Inverter Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-10 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4009c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %6 %7 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4009d</ogo:name>
+ <ogo:symbol>4009d</ogo:symbol>
+ <ogo:description>Inverter Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4009d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4009e</ogo:name>
+ <ogo:symbol>4009e</ogo:symbol>
+ <ogo:description>Inverter Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4009e</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4009f</ogo:name>
+ <ogo:symbol>4009f</ogo:symbol>
+ <ogo:description>Inverter Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4009f</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %14 %15 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4010a</ogo:name>
+ <ogo:symbol>4010a</ogo:symbol>
+ <ogo:description>Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(10 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(10 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4010a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %1 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4010b</ogo:name>
+ <ogo:symbol>4010b</ogo:symbol>
+ <ogo:description>Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(9 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4010b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 %16 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4010c</ogo:name>
+ <ogo:symbol>4010c</ogo:symbol>
+ <ogo:description>Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-10 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4010c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %6 %7 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4010d</ogo:name>
+ <ogo:symbol>4010d</ogo:symbol>
+ <ogo:description>Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4010d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4010e</ogo:name>
+ <ogo:symbol>4010e</ogo:symbol>
+ <ogo:description>Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4010e</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4010f</ogo:name>
+ <ogo:symbol>4010f</ogo:symbol>
+ <ogo:description>Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4010f</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %14 %15 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4013a</ogo:name>
+ <ogo:symbol>4013a</ogo:symbol>
+ <ogo:description>D Flip Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vs</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(37 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(37 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4013a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4013b</ogo:name>
+ <ogo:symbol>4013b</ogo:symbol>
+ <ogo:description>D Flip Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vc</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(37 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(37 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4013b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 %10 %11 %12 %13 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4069a</ogo:name>
+ <ogo:symbol>4069a</ogo:symbol>
+ <ogo:description>INVERTER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(2 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4069a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %14 %7 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4069b</ogo:name>
+ <ogo:symbol>4069b</ogo:symbol>
+ <ogo:description>INVERTER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4069b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %3 %4 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4069c</ogo:name>
+ <ogo:symbol>4069c</ogo:symbol>
+ <ogo:description>INVERTER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4069c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4069d</ogo:name>
+ <ogo:symbol>4069d</ogo:symbol>
+ <ogo:description>INVERTER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4069d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4069e</ogo:name>
+ <ogo:symbol>4069e</ogo:symbol>
+ <ogo:description>INVERTER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-12 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4069e</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4069f</ogo:name>
+ <ogo:symbol>4069f</ogo:symbol>
+ <ogo:description>INVERTER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-12 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4069f</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4014</ogo:name>
+ <ogo:symbol>4014</ogo:symbol>
+ <ogo:description>8 bit shift register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P4</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P5</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P6</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P7</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-11 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P8</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q6</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q8</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>p/s</ogo:text>
+ <ogo:position>(23 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>DS</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4014</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4021</ogo:name>
+ <ogo:symbol>eq</ogo:symbol>
+ <ogo:description>See 4014</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4015a</ogo:name>
+ <ogo:symbol>4015a</ogo:symbol>
+ <ogo:description>4 bit shift register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 70)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(8 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4015a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %9 %3 %4 %5 %6 %7 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4015b</ogo:name>
+ <ogo:symbol>4015b</ogo:symbol>
+ <ogo:description>4 bit shift register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 70)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(8 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4015b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 %13 %14 %15 %1 %2 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>4016a</ogo:name>
+ <ogo:symbol>4016a</ogo:symbol>
+ <ogo:description>Analog Switch</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 60)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(8 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4016a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %13 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4016b</ogo:name>
+ <ogo:symbol>4016b</ogo:symbol>
+ <ogo:description>Analog Switch</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 60)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(8 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4016b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %3 %4 %5 %7 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4016c</ogo:name>
+ <ogo:symbol>4016c</ogo:symbol>
+ <ogo:description>Analog Switch</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 60)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(8 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4016c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %6 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4016d</ogo:name>
+ <ogo:symbol>4016d</ogo:symbol>
+ <ogo:description>Analog Switch</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 60)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(8 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4016d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4017</ogo:name>
+ <ogo:symbol>4017</ogo:symbol>
+ <ogo:description>Decade Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 135)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CE</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q5</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q6</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q8</ogo:text>
+ <ogo:position>(25 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q9</ogo:text>
+ <ogo:position>(25 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CO</ogo:text>
+ <ogo:position>(25 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4017</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4018</ogo:name>
+ <ogo:symbol>4018</ogo:symbol>
+ <ogo:description>Presettable Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 125)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(9 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4018</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4020</ogo:name>
+ <ogo:symbol>4020</ogo:symbol>
+ <ogo:description>14 bit Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 145)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q5</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q6</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q8</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q9</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q10</ogo:text>
+ <ogo:position>(22 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q11</ogo:text>
+ <ogo:position>(22 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q12</ogo:text>
+ <ogo:position>(22 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q13</ogo:text>
+ <ogo:position>(22 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q14</ogo:text>
+ <ogo:position>(22 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4020</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4022</ogo:name>
+ <ogo:symbol>4022</ogo:symbol>
+ <ogo:description>Octal Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-40 115)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-35 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(-18 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-35 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CE</ogo:text>
+ <ogo:position>(-18 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-35 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(-18 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(26 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(5 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(26 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(5 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(26 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(5 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(26 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(5 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(26 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(5 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(26 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q5</ogo:text>
+ <ogo:position>(5 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(26 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q6</ogo:text>
+ <ogo:position>(5 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(26 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(5 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(26 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CO</ogo:text>
+ <ogo:position>(5 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(-14 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-14 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(15 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4022</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %7 %8 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4023a</ogo:name>
+ <ogo:symbol>4023a</ogo:symbol>
+ <ogo:description>3 input NAND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(17 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(12 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-20 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4023a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %8 %9 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4023b</ogo:name>
+ <ogo:symbol>4023b</ogo:symbol>
+ <ogo:description>3 input NAND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(17 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4023b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %3 %4 %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4023c</ogo:name>
+ <ogo:symbol>4023c</ogo:symbol>
+ <ogo:description>3 input NAND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(17 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4023c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 %13 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4024</ogo:name>
+ <ogo:symbol>4024</ogo:symbol>
+ <ogo:description>7 Stage Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-40 95)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-35 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(-18 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-35 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(-18 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(26 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(5 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(26 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(5 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(26 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(5 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(26 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(5 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(26 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(5 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(26 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q5</ogo:text>
+ <ogo:position>(5 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(26 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q6</ogo:text>
+ <ogo:position>(5 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-14 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-14 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(15 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4024</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %9 %11 %12 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4025a</ogo:name>
+ <ogo:symbol>4025a</ogo:symbol>
+ <ogo:description>NOR 3 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(53 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(0 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(40 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4025a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %3 %4 %5 %6 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4025b</ogo:name>
+ <ogo:symbol>4025b</ogo:symbol>
+ <ogo:description>NOR 3 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(53 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4025b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %13 %12 %11 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4025c</ogo:name>
+ <ogo:symbol>4025c</ogo:symbol>
+ <ogo:description>NOR 3 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(53 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4025c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4027a</ogo:name>
+ <ogo:symbol>4027a</ogo:symbol>
+ <ogo:description>JK Flip-Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>J</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>K</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(35 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(47 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(67 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4027a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4027b</ogo:name>
+ <ogo:symbol>4027b</ogo:symbol>
+ <ogo:description>JK Flip-Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>J</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>K</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(35 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(47 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(67 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4027b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4028</ogo:name>
+ <ogo:symbol>4028</ogo:symbol>
+ <ogo:description>BCD to Decimal Decoder</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 125)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q5</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q6</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q8</ogo:text>
+ <ogo:position>(25 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q9</ogo:text>
+ <ogo:position>(25 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4028</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4029</ogo:name>
+ <ogo:symbol>4029</ogo:symbol>
+ <ogo:description>4 Bit Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ci</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>u|d</ogo:text>
+ <ogo:position>(26 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b|d</ogo:text>
+ <ogo:position>(26 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Co</ogo:text>
+ <ogo:position>(27 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4029</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4030a</ogo:name>
+ <ogo:symbol>4030a</ogo:symbol>
+ <ogo:description>XOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-18 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-18 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(0 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(42 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4030a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4030b</ogo:name>
+ <ogo:symbol>4030b</ogo:symbol>
+ <ogo:description>XOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-18 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-18 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(20 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4030b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4030c</ogo:name>
+ <ogo:symbol>4030c</ogo:symbol>
+ <ogo:description>XOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-18 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-18 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(20 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4030c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4030d</ogo:name>
+ <ogo:symbol>4030d</ogo:symbol>
+ <ogo:description>XOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-18 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-18 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(20 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4030d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4032</ogo:name>
+ <ogo:symbol>4032</ogo:symbol>
+ <ogo:description>Triple serial adders</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 165)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I1</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I2</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I3</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CR</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S1</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S2</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S3</ogo:text>
+ <ogo:position>(25 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4032</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4034</ogo:name>
+ <ogo:symbol>4034</ogo:symbol>
+ <ogo:description>8 bit bus register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 145)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AE</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ds</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A|B</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B4</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B5</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B6</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B7</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a|s</ogo:text>
+ <ogo:position>(27 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>p|s</ogo:text>
+ <ogo:position>(27 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(27 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(5 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4034</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4035</ogo:name>
+ <ogo:symbol>4035</ogo:symbol>
+ <ogo:description>4 bit shift register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>J</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>T|C</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>K</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>p|s</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4035</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4038</ogo:name>
+ <ogo:symbol>4038</ogo:symbol>
+ <ogo:description>Triple serial adders</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 165)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I1</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I2</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I3</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CR</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S1</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S2</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S3</ogo:text>
+ <ogo:position>(25 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4038</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4040</ogo:name>
+ <ogo:symbol>4040</ogo:symbol>
+ <ogo:description>14 bit Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 145)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q5</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q6</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q8</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q9</ogo:text>
+ <ogo:position>(25 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q10</ogo:text>
+ <ogo:position>(22 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q11</ogo:text>
+ <ogo:position>(22 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q12</ogo:text>
+ <ogo:position>(22 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4040</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4041</ogo:name>
+ <ogo:symbol>4041</ogo:symbol>
+ <ogo:description>Complement Quad Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 125)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C1</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ao</ogo:text>
+ <ogo:position>(25 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(47 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(47 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Bo</ogo:text>
+ <ogo:position>(25 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(47 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Co</ogo:text>
+ <ogo:position>(25 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Do</ogo:text>
+ <ogo:position>(25 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(5 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(7 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4041</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4042</ogo:name>
+ <ogo:symbol>4042</ogo:symbol>
+ <ogo:description>D Latch 4 bit</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(47 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(6 -3)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(7 107)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4042</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4043</ogo:name>
+ <ogo:symbol>4043</ogo:symbol>
+ <ogo:description>Quad RS Latch</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 135)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R0</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S1</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R1</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S2</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R2</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S3</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R3</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(47 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(25 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(6 -3)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(7 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4043</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4044</ogo:name>
+ <ogo:symbol>4044</ogo:symbol>
+ <ogo:description>Quad RS Latch</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 135)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R0</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S1</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R1</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S2</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R2</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S3</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R3</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(47 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(25 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(6 -3)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(7 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4044</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4046</ogo:name>
+ <ogo:symbol>4046</ogo:symbol>
+ <ogo:description>Phase Locked Loop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 135)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Inp</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Cin</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Vo</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ca</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Cb</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R1</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R2</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Co1</ogo:text>
+ <ogo:position>(22 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Co2</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PP</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Vi</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Do</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(47 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Inh</ogo:text>
+ <ogo:position>(25 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(6 -3)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(7 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4046</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4047</ogo:name>
+ <ogo:symbol>4047</ogo:symbol>
+ <ogo:description>Monostable / Astable</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 105)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>T</ogo:text>
+ <ogo:position>(2 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Rst</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RT</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RC</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(25 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>osl</ogo:text>
+ <ogo:position>(23 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(5 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(10 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4047</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4048</ogo:name>
+ <ogo:symbol>4048</ogo:symbol>
+ <ogo:description>8 Function 8 Input Gate</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 105)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>F</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>G</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>H</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Exp</ogo:text>
+ <ogo:position>(23 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Out</ogo:text>
+ <ogo:position>(23 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Fa</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(47 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Fb</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Fc</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(10 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4048</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 16% @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4049a</ogo:name>
+ <ogo:symbol>4009a</ogo:symbol>
+ <ogo:description>Inverter Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(10 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(10 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4049a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %1 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4049b</ogo:name>
+ <ogo:symbol>4049b</ogo:symbol>
+ <ogo:description>Inverter Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4049b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4049c</ogo:name>
+ <ogo:symbol>4009c</ogo:symbol>
+ <ogo:description>Inverter Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-10 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4049c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %6 %7 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4049d</ogo:name>
+ <ogo:symbol>4009d</ogo:symbol>
+ <ogo:description>Inverter Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4049d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4049e</ogo:name>
+ <ogo:symbol>4009e</ogo:symbol>
+ <ogo:description>Inverter Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4049e</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4049f</ogo:name>
+ <ogo:symbol>4009f</ogo:symbol>
+ <ogo:description>Inverter Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4049f</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %14 %15 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4050a</ogo:name>
+ <ogo:symbol>4010a</ogo:symbol>
+ <ogo:description>Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(10 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(10 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4050a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4050b</ogo:name>
+ <ogo:symbol>4050b</ogo:symbol>
+ <ogo:description>Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4050b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4050c</ogo:name>
+ <ogo:symbol>4010c</ogo:symbol>
+ <ogo:description>Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-10 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4050c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %6 %7 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4050d</ogo:name>
+ <ogo:symbol>4010d</ogo:symbol>
+ <ogo:description>Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4050d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4050e</ogo:name>
+ <ogo:symbol>4010e</ogo:symbol>
+ <ogo:description>Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4050e</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4050f</ogo:name>
+ <ogo:symbol>4010f</ogo:symbol>
+ <ogo:description>Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4050f</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %14 %15 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4051</ogo:name>
+ <ogo:symbol>4051</ogo:symbol>
+ <ogo:description>8 Channel Analog Multiplexer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 105)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VE</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(47 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(30 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(47 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>inh</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(10 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4051</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 16% @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4052</ogo:name>
+ <ogo:symbol>4052</ogo:symbol>
+ <ogo:description>Dual 4 Channel Analog Multiplexer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y0</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y1</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y2</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y3</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VE</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>inh</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(30 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y</ogo:text>
+ <ogo:position>(30 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4052</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4053</ogo:name>
+ <ogo:symbol>4053</ogo:symbol>
+ <ogo:description>Triple 2 Channel Analog Multiplexer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 130)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y0</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y1</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z0</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z1</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-10 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VE</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(30 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(30 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(30 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>inh</ogo:text>
+ <ogo:position>(25 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4053</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4060</ogo:name>
+ <ogo:symbol>4060</ogo:symbol>
+ <ogo:description>14 Bit Counter and Oscillator</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 125)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MR</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q5</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q6</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q8</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q9</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q10</ogo:text>
+ <ogo:position>(20 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q12</ogo:text>
+ <ogo:position>(20 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q13</ogo:text>
+ <ogo:position>(20 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q14</ogo:text>
+ <ogo:position>(20 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4060</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4066</ogo:name>
+ <ogo:symbol>eq</ogo:symbol>
+ <ogo:description>See 4016</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4067</ogo:name>
+ <ogo:symbol>4067</ogo:symbol>
+ <ogo:description>16 Channel Analog Multiplexer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 185)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X9</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X10</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X11</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-17 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X12</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X13</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X14</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(-17 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X15</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>inh</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(30 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(30 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(5 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(5 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4067</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 16% %17 %18 %19 %20 %21 %22 %23 %24 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4097</ogo:name>
+ <ogo:symbol>4097</ogo:symbol>
+ <ogo:description>Dual 8 Channel Analog Multiplexer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 185)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y0</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y1</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y2</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y3</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-17 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y4</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y5</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(-17 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y6</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y7</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(47 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(30 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>inh</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(5 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(5 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4097</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 16% %17 %18 %19 %20 %21 %22 %23 %24 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>4070</ogo:name>
+ <ogo:symbol>eq</ogo:symbol>
+ <ogo:description>See 4030</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4071a</ogo:name>
+ <ogo:symbol>4071a</ogo:symbol>
+ <ogo:description>OR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(0 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(42 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4071a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4071b</ogo:name>
+ <ogo:symbol>4071b</ogo:symbol>
+ <ogo:description>OR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-10 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4071b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4071c</ogo:name>
+ <ogo:symbol>4071c</ogo:symbol>
+ <ogo:description>or</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-10 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4071c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %9 %10 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4071d</ogo:name>
+ <ogo:symbol>4071d</ogo:symbol>
+ <ogo:description>OR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4071d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4072a</ogo:name>
+ <ogo:symbol>4072a</ogo:symbol>
+ <ogo:description>OR 4 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(70 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(0 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(0 72)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(30 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4072a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4072b</ogo:name>
+ <ogo:symbol>4072b</ogo:symbol>
+ <ogo:description>OR 4 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(70 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 72)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4072b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %13 %12 %11 %10 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4073a</ogo:name>
+ <ogo:symbol>4073a</ogo:symbol>
+ <ogo:description>3 input AND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(17 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(12 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-20 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4073a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %8 %9 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4073b</ogo:name>
+ <ogo:symbol>4073b</ogo:symbol>
+ <ogo:description>3 input AND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(17 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4073b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %3 %4 %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4073c</ogo:name>
+ <ogo:symbol>4073c</ogo:symbol>
+ <ogo:description>3 input AND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(17 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4073c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 %13 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+
+ <ogo:part>
+ <ogo:name>4075a</ogo:name>
+ <ogo:symbol>4075a</ogo:symbol>
+ <ogo:description>OR 3 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(53 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(0 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(40 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4075a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %3 %4 %5 %6 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4075b</ogo:name>
+ <ogo:symbol>4075b</ogo:symbol>
+ <ogo:description>OR 3 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(53 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4075b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %13 %12 %11 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4075c</ogo:name>
+ <ogo:symbol>4075c</ogo:symbol>
+ <ogo:description>OR 3 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(53 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4075c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4076</ogo:name>
+ <ogo:symbol>4076</ogo:symbol>
+ <ogo:description>Latch 4 Bit</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IE</ogo:text>
+ <ogo:position>(2 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(27 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4076</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4077a</ogo:name>
+ <ogo:symbol>4077a</ogo:symbol>
+ <ogo:description>XNOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(45 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4077a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4077b</ogo:name>
+ <ogo:symbol>4077b</ogo:symbol>
+ <ogo:description>XNOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-10 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4077b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4077c</ogo:name>
+ <ogo:symbol>4077c</ogo:symbol>
+ <ogo:description>XNOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-10 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4077c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4077d</ogo:name>
+ <ogo:symbol>4077d</ogo:symbol>
+ <ogo:description>XNOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-18 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-18 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4077d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %13 %12 %11 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>4081a</ogo:name>
+ <ogo:symbol>4081a</ogo:symbol>
+ <ogo:description>AND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(17 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(12 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-20 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4081a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4081b</ogo:name>
+ <ogo:symbol>4081b</ogo:symbol>
+ <ogo:description>AND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(17 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4081b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4081c</ogo:name>
+ <ogo:symbol>4081c</ogo:symbol>
+ <ogo:description>AND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(17 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-15 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4081c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4081d</ogo:name>
+ <ogo:symbol>4081d</ogo:symbol>
+ <ogo:description>AND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(17 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4081d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4082a</ogo:name>
+ <ogo:symbol>4082a</ogo:symbol>
+ <ogo:description>AND 4 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(78 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(12 62)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4082a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4082b</ogo:name>
+ <ogo:symbol>4082b</ogo:symbol>
+ <ogo:description>AND 4 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(78 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4082b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %9 %10 %11 %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4089</ogo:name>
+ <ogo:symbol>4089</ogo:symbol>
+ <ogo:description>Binary Rate Multiplier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CC</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ID</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ST</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OUT</ogo:text>
+ <ogo:position>(19 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OUT</ogo:text>
+ <ogo:position>(19 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>___</ogo:text>
+ <ogo:position>(19 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OD</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S15</ogo:text>
+ <ogo:position>(20 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4089</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4093</ogo:name>
+ <ogo:symbol>eq</ogo:symbol>
+ <ogo:description>See 4011</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4094</ogo:name>
+ <ogo:symbol>4094</ogo:symbol>
+ <ogo:description>8 Bit Shift Register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 125)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ST</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q5</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q6</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q8</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QS</ogo:text>
+ <ogo:position>(25 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q'S</ogo:text>
+ <ogo:position>(20 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4094</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4099</ogo:name>
+ <ogo:symbol>4099</ogo:symbol>
+ <ogo:description>8 bit Addressable Latch</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CR</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q5</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q6</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(6 -3)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(7 107)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4099</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>40106</ogo:name>
+ <ogo:symbol>eq</ogo:symbol>
+ <ogo:description>See 4069</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>40160</ogo:name>
+ <ogo:symbol>40160</ogo:symbol>
+ <ogo:description>Decade Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-10 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-10 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>LD</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RC</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ET</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CR</ogo:text>
+ <ogo:position>(25 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>40160</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>40161</ogo:name>
+ <ogo:symbol>40160</ogo:symbol>
+ <ogo:description>Binary Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-10 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-10 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>LD</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RC</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ET</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CR</ogo:text>
+ <ogo:position>(25 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>40161</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>40162</ogo:name>
+ <ogo:symbol>eq</ogo:symbol>
+ <ogo:description>See 40160</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>40163</ogo:name>
+ <ogo:symbol>eq</ogo:symbol>
+ <ogo:description>See 40163</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>40174</ogo:name>
+ <ogo:symbol>40174</ogo:symbol>
+ <ogo:description>Latch 6 Bit</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q5</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>40174</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>40175</ogo:name>
+ <ogo:symbol>40175</ogo:symbol>
+ <ogo:description>D Latch 4 bit</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(47 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(47 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(47 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(6 -3)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(7 107)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>40175</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>40192</ogo:name>
+ <ogo:symbol>40192</ogo:symbol>
+ <ogo:description>U/D Decade Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>LD</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CU</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CD</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CR</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CY</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>BW</ogo:text>
+ <ogo:position>(25 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>40192</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>40193</ogo:name>
+ <ogo:symbol>40192</ogo:symbol>
+ <ogo:description>U/D 4 Bit Binary Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>LD</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CU</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CD</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CR</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CY</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>BW</ogo:text>
+ <ogo:position>(25 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>40193</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4503</ogo:name>
+ <ogo:symbol>4503</ogo:symbol>
+ <ogo:description>Hex buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E1</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y4</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y5</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E2</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4503</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4510</ogo:name>
+ <ogo:symbol>4510</ogo:symbol>
+ <ogo:description>BCD U/D Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>u|d</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ci</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RS</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Co</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4510</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4516</ogo:name>
+ <ogo:symbol>4510</ogo:symbol>
+ <ogo:description>U/D 4 Bit Binary Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>u|d</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ci</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RS</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Co</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4516</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4511</ogo:name>
+ <ogo:symbol>4511</ogo:symbol>
+ <ogo:description>BCD to 7 seg.</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-10 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>LT</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>LE</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b</ogo:text>
+ <ogo:position>(30 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>c</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>d</ogo:text>
+ <ogo:position>(30 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>e</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>f</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>g</ogo:text>
+ <ogo:position>(30 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>BI</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4511</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4512</ogo:name>
+ <ogo:symbol>4512</ogo:symbol>
+ <ogo:description>8 Channel Multiplexer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 105)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-10 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OD</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(30 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(30 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(10 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4512</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 16% @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4514</ogo:name>
+ <ogo:symbol>4514</ogo:symbol>
+ <ogo:description>Latched 4 to 16 Decoder</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 190)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ST</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>inh</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>0</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(30 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(30 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(30 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(30 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(30 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(46 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(30 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(46 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(25 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(46 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(25 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(25 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(25 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(46 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(25 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(25 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(5 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4514</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>4515</ogo:name>
+ <ogo:symbol>4515</ogo:symbol>
+ <ogo:description>Latched 4 to 16 Decoder</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 190)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ST</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>inh</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>0</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(30 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(30 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(30 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(30 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(30 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(46 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(30 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(46 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(25 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(46 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(25 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(25 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(25 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(46 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(25 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(25 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(5 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4515</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4518a</ogo:name>
+ <ogo:symbol>4518a</ogo:symbol>
+ <ogo:description>BCD Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 70)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(8 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4518a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4518b</ogo:name>
+ <ogo:symbol>4518b</ogo:symbol>
+ <ogo:description>BCD Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 70)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(8 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4518b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 %10 %11 %12 %13 %14 %15 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4520a</ogo:name>
+ <ogo:symbol>4518a</ogo:symbol>
+ <ogo:description>4 Bit Binary Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 70)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(8 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4520a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4520b</ogo:name>
+ <ogo:symbol>4518b</ogo:symbol>
+ <ogo:description>4 bit Binary Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 70)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(8 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4520b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 %10 %11 %12 %13 %14 %15 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4519</ogo:name>
+ <ogo:symbol>4519</ogo:symbol>
+ <ogo:description>4 Bit And/Or Selector</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 105)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y0</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X1</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y1</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X2</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y2</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X3</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y3</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z0</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z1</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z2</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z3</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(10 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4519</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 16% @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4522</ogo:name>
+ <ogo:symbol>4522</ogo:symbol>
+ <ogo:description>BCD Programmable Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>inh</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ci</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MR</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Co</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4522</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4526</ogo:name>
+ <ogo:symbol>4522</ogo:symbol>
+ <ogo:description>4 Bit Binary Programmable Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>inh</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ci</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MR</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Co</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4526</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4527</ogo:name>
+ <ogo:symbol>4089</ogo:symbol>
+ <ogo:description>BCD Rate Multiplier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CC</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ID</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ST</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OUT</ogo:text>
+ <ogo:position>(19 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OUT</ogo:text>
+ <ogo:position>(19 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>___</ogo:text>
+ <ogo:position>(19 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OD</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S9</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4527</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4528</ogo:name>
+ <ogo:symbol>eq</ogo:symbol>
+ <ogo:description>See 4538</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4529</ogo:name>
+ <ogo:symbol>4529</ogo:symbol>
+ <ogo:description>Dual 4 Channel Analog Multiplexer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y0</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y1</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y2</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y3</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Sx</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Sy</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(30 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y</ogo:text>
+ <ogo:position>(30 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4529</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4534</ogo:name>
+ <ogo:symbol>4534</ogo:symbol>
+ <ogo:description>5 Cascaded BCD Counters</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 205)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ca</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Cb</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CKb</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CKa</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MR</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>SR</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>SC</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>M1</ogo:text>
+ <ogo:position>(2 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>M2</ogo:text>
+ <ogo:position>(2 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>BC</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(27 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(27 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(46 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(27 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(27 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CD</ogo:text>
+ <ogo:position>(26 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CO</ogo:text>
+ <ogo:position>(26 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>EO</ogo:text>
+ <ogo:position>(26 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(8 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4534</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4538a</ogo:name>
+ <ogo:symbol>4538a</ogo:symbol>
+ <ogo:description>Retriggerable Monostable</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-25 -25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(22 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(25 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RC</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(67 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(47 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(67 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(47 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(67 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(47 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(47 24)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(15 77)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(25 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 95)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4538a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %8 %5 %6 %7 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4538b</ogo:name>
+ <ogo:symbol>4538b</ogo:symbol>
+ <ogo:description>Retriggerable Monostable</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-25 -25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(17 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(25 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RC</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(67 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Vc</ogo:text>
+ <ogo:position>(47 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(67 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(47 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(67 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(47 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(47 24)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(15 77)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(25 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 95)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4538b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %5 %6 %7 %9 %10 %11 %12 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4541</ogo:name>
+ <ogo:symbol>4541</ogo:symbol>
+ <ogo:description>Programmable timer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RS</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label> <ogo:text>A</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OS</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>M</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AR</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MR</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(8 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4541</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %5 %6 %7 %8 %9 %10 %12 %13 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4543</ogo:name>
+ <ogo:symbol>4543</ogo:symbol>
+ <ogo:description>BCD to 7 seg.</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>LE</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-10 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>BI</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b</ogo:text>
+ <ogo:position>(30 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>c</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>d</ogo:text>
+ <ogo:position>(30 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>e</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>f</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>g</ogo:text>
+ <ogo:position>(30 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ph</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4543</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4056</ogo:name>
+ <ogo:symbol>eq</ogo:symbol>
+ <ogo:description>See 4543</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4548</ogo:name>
+ <ogo:symbol>eq</ogo:symbol>
+ <ogo:description>See 4538</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>4553</ogo:name>
+ <ogo:symbol>4553</ogo:symbol>
+ <ogo:description>3 digit BCD counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 130)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>LE</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Dis</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MR</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CA</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CB</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OF</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(25 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(25 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>4553</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+
+
+
+
+
+ </ogo:parts>
+</ogo:library>
+
diff --git a/data/libraries/cpu.oreglib b/data/libraries/cpu.oreglib
new file mode 100644
index 0000000..b8b8c43
--- /dev/null
+++ b/data/libraries/cpu.oreglib
@@ -0,0 +1,4676 @@
+<?xml version="1.0"?>
+<ogo:library xmlns:ogo="http://www.dtek.chalmers.se/~d4hult/oregano/v1">
+ <ogo:name>CPU</ogo:name>
+ <ogo:description>CPU Library</ogo:description>
+ <ogo:version>0.30</ogo:version>
+ <ogo:author>Hector Bellesi</ogo:author>
+ <ogo:last-updated>6-jul-2001</ogo:last-updated>
+
+ <ogo:symbols>
+
+ <ogo:symbol>
+ <ogo:name>8051</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(80 0)(80 250)(0 250)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 120)(-6 120)</ogo:line>
+ <ogo:line>(-20 130)(-6 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(-20 170)(0 170)</ogo:line>
+ <ogo:line>(-20 180)(0 180)</ogo:line>
+ <ogo:line>(-20 190)(0 190)</ogo:line>
+ <ogo:line>(-20 200)(0 200)</ogo:line>
+ <ogo:line>(-20 210)(0 210)</ogo:line>
+ <ogo:line>(-20 220)(0 220)</ogo:line>
+ <ogo:line>(-20 230)(0 230)</ogo:line>
+ <ogo:line>(-20 240)(0 240)</ogo:line>
+ <ogo:line>(40 -20)(40 0)</ogo:line>
+ <ogo:line>(40 250)(40 270)</ogo:line>
+ <ogo:line>(80 10)(100 10)</ogo:line>
+ <ogo:line>(80 20)(100 20)</ogo:line>
+ <ogo:line>(80 30)(100 30)</ogo:line>
+ <ogo:line>(80 40)(100 40)</ogo:line>
+ <ogo:line>(80 50)(100 50)</ogo:line>
+ <ogo:line>(80 60)(100 60)</ogo:line>
+ <ogo:line>(80 70)(100 70)</ogo:line>
+ <ogo:line>(80 80)(100 80)</ogo:line>
+ <ogo:line>(80 100)(100 100)</ogo:line>
+ <ogo:line>(80 110)(100 110)</ogo:line>
+ <ogo:line>(80 120)(100 120)</ogo:line>
+ <ogo:line>(80 130)(100 130)</ogo:line>
+ <ogo:line>(80 140)(100 140)</ogo:line>
+ <ogo:line>(80 150)(100 150)</ogo:line>
+ <ogo:line>(80 160)(100 160)</ogo:line>
+ <ogo:line>(80 170)(100 170)</ogo:line>
+ <ogo:line>(86 190)(100 190)</ogo:line>
+ <ogo:line>(86 200)(100 200)</ogo:line>
+ <ogo:line>(86 210)(100 210)</ogo:line>
+ <ogo:line>(80 220)(100 220)</ogo:line>
+ <ogo:line>(80 230)(100 230)</ogo:line>
+ <ogo:line>(80 240)(100 240)</ogo:line>
+ <ogo:arc>(-6 117)(0 123)</ogo:arc>
+ <ogo:arc>(-6 127)(0 133)</ogo:arc>
+ <ogo:arc>(80 187)(86 193)</ogo:arc>
+ <ogo:arc>(80 197)(86 203)</ogo:arc>
+ <ogo:arc>(80 207)(86 213)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 31)</ogo:connection>
+ <ogo:connection>(-20 30 19)</ogo:connection>
+ <ogo:connection>(-20 60 18)</ogo:connection>
+ <ogo:connection>(-20 90 9)</ogo:connection>
+ <ogo:connection>(-20 120 12)</ogo:connection>
+ <ogo:connection>(-20 130 13)</ogo:connection>
+ <ogo:connection>(-20 140 14)</ogo:connection>
+ <ogo:connection>(-20 150 15)</ogo:connection>
+ <ogo:connection>(-20 170 1)</ogo:connection>
+ <ogo:connection>(-20 180 2)</ogo:connection>
+ <ogo:connection>(-20 190 3)</ogo:connection>
+ <ogo:connection>(-20 200 4)</ogo:connection>
+ <ogo:connection>(-20 210 5)</ogo:connection>
+ <ogo:connection>(-20 220 6)</ogo:connection>
+ <ogo:connection>(-20 230 7)</ogo:connection>
+ <ogo:connection>(-20 240 8)</ogo:connection>
+ <ogo:connection>(40 -20 40)</ogo:connection>
+ <ogo:connection>(40 270 20)</ogo:connection>
+ <ogo:connection>(100 10 39)</ogo:connection>
+ <ogo:connection>(100 20 38)</ogo:connection>
+ <ogo:connection>(100 30 37)</ogo:connection>
+ <ogo:connection>(100 40 36)</ogo:connection>
+ <ogo:connection>(100 50 35)</ogo:connection>
+ <ogo:connection>(100 60 34)</ogo:connection>
+ <ogo:connection>(100 70 33)</ogo:connection>
+ <ogo:connection>(100 80 32)</ogo:connection>
+ <ogo:connection>(100 100 21)</ogo:connection>
+ <ogo:connection>(100 110 22)</ogo:connection>
+ <ogo:connection>(100 120 23)</ogo:connection>
+ <ogo:connection>(100 130 24)</ogo:connection>
+ <ogo:connection>(100 140 25)</ogo:connection>
+ <ogo:connection>(100 150 26)</ogo:connection>
+ <ogo:connection>(100 160 27)</ogo:connection>
+ <ogo:connection>(100 170 28)</ogo:connection>
+ <ogo:connection>(100 190 17)</ogo:connection>
+ <ogo:connection>(100 200 16)</ogo:connection>
+ <ogo:connection>(100 210 29)</ogo:connection>
+ <ogo:connection>(100 220 30)</ogo:connection>
+ <ogo:connection>(100 230 11)</ogo:connection>
+ <ogo:connection>(100 240 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>eq</ogo:name>
+ <ogo:objects>
+ </ogo:objects>
+ <ogo:connections>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>6809</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(80 0)(80 280)(0 280)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(-6 60)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(-20 100)(-6 100)</ogo:line>
+ <ogo:line>(-20 120)(-6 120)</ogo:line>
+ <ogo:line>(-20 140)(-6 140)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(-20 180)(0 180)</ogo:line>
+ <ogo:line>(-20 200)(0 200)</ogo:line>
+ <ogo:line>(-20 210)(0 210)</ogo:line>
+ <ogo:line>(-20 220)(0 220)</ogo:line>
+ <ogo:line>(-20 230)(0 230)</ogo:line>
+ <ogo:line>(-20 240)(0 240)</ogo:line>
+ <ogo:line>(-20 250)(0 250)</ogo:line>
+ <ogo:line>(-20 260)(0 260)</ogo:line>
+ <ogo:line>(-20 270)(0 270)</ogo:line>
+ <ogo:line>(40 -20)(40 0)</ogo:line>
+ <ogo:line>(40 280)(40 300)</ogo:line>
+ <ogo:line>(80 10)(100 10)</ogo:line>
+ <ogo:line>(80 20)(100 20)</ogo:line>
+ <ogo:line>(80 30)(100 30)</ogo:line>
+ <ogo:line>(80 40)(100 40)</ogo:line>
+ <ogo:line>(80 50)(100 50)</ogo:line>
+ <ogo:line>(80 60)(100 60)</ogo:line>
+ <ogo:line>(80 70)(100 70)</ogo:line>
+ <ogo:line>(80 80)(100 80)</ogo:line>
+ <ogo:line>(80 90)(100 90)</ogo:line>
+ <ogo:line>(80 100)(100 100)</ogo:line>
+ <ogo:line>(80 110)(100 110)</ogo:line>
+ <ogo:line>(80 120)(100 120)</ogo:line>
+ <ogo:line>(80 130)(100 130)</ogo:line>
+ <ogo:line>(80 140)(100 140)</ogo:line>
+ <ogo:line>(80 150)(100 150)</ogo:line>
+ <ogo:line>(80 160)(100 160)</ogo:line>
+ <ogo:line>(80 180)(100 180)</ogo:line>
+ <ogo:line>(80 200)(100 200)</ogo:line>
+ <ogo:line>(80 220)(100 220)</ogo:line>
+ <ogo:line>(80 240)(100 240)</ogo:line>
+ <ogo:line>(80 260)(100 260)</ogo:line>
+ <ogo:arc>(-6 57)(0 63)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ <ogo:arc>(-6 97)(0 103)</ogo:arc>
+ <ogo:arc>(-6 117)(0 123)</ogo:arc>
+ <ogo:arc>(-6 137)(0 143)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 39)</ogo:connection>
+ <ogo:connection>(-20 40 38)</ogo:connection>
+ <ogo:connection>(-20 60 37)</ogo:connection>
+ <ogo:connection>(-20 80 2)</ogo:connection>
+ <ogo:connection>(-20 100 40)</ogo:connection>
+ <ogo:connection>(-20 120 3)</ogo:connection>
+ <ogo:connection>(-20 140 4)</ogo:connection>
+ <ogo:connection>(-20 160 36)</ogo:connection>
+ <ogo:connection>(-20 180 33)</ogo:connection>
+ <ogo:connection>(-20 200 31)</ogo:connection>
+ <ogo:connection>(-20 210 30)</ogo:connection>
+ <ogo:connection>(-20 220 29)</ogo:connection>
+ <ogo:connection>(-20 230 28)</ogo:connection>
+ <ogo:connection>(-20 240 27)</ogo:connection>
+ <ogo:connection>(-20 250 26)</ogo:connection>
+ <ogo:connection>(-20 260 25)</ogo:connection>
+ <ogo:connection>(-20 270 24)</ogo:connection>
+ <ogo:connection>(40 -20 7)</ogo:connection>
+ <ogo:connection>(40 300 1)</ogo:connection>
+ <ogo:connection>(100 10 8)</ogo:connection>
+ <ogo:connection>(100 20 9)</ogo:connection>
+ <ogo:connection>(100 30 10)</ogo:connection>
+ <ogo:connection>(100 40 11)</ogo:connection>
+ <ogo:connection>(100 50 12)</ogo:connection>
+ <ogo:connection>(100 60 13)</ogo:connection>
+ <ogo:connection>(100 70 14)</ogo:connection>
+ <ogo:connection>(100 80 15)</ogo:connection>
+ <ogo:connection>(100 90 16)</ogo:connection>
+ <ogo:connection>(100 100 17)</ogo:connection>
+ <ogo:connection>(100 110 18)</ogo:connection>
+ <ogo:connection>(100 120 19)</ogo:connection>
+ <ogo:connection>(100 130 20)</ogo:connection>
+ <ogo:connection>(100 140 21)</ogo:connection>
+ <ogo:connection>(100 150 22)</ogo:connection>
+ <ogo:connection>(100 160 23)</ogo:connection>
+ <ogo:connection>(100 180 34)</ogo:connection>
+ <ogo:connection>(100 200 35)</ogo:connection>
+ <ogo:connection>(100 220 6)</ogo:connection>
+ <ogo:connection>(100 240 5)</ogo:connection>
+ <ogo:connection>(100 260 32)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>6811A0</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(80 0)(80 310)(0 310)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(-6 60)</ogo:line>
+ <ogo:line>(-20 70)(-6 70)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(-20 170)(0 170)</ogo:line>
+ <ogo:line>(-20 180)(0 180)</ogo:line>
+ <ogo:line>(-20 200)(0 200)</ogo:line>
+ <ogo:line>(-20 210)(0 210)</ogo:line>
+ <ogo:line>(-20 220)(0 220)</ogo:line>
+ <ogo:line>(-20 230)(0 230)</ogo:line>
+ <ogo:line>(-20 240)(0 240)</ogo:line>
+ <ogo:line>(-20 250)(0 250)</ogo:line>
+ <ogo:line>(-20 270)(0 270)</ogo:line>
+ <ogo:line>(-20 280)(0 280)</ogo:line>
+ <ogo:line>(-20 290)(0 290)</ogo:line>
+ <ogo:line>(-20 300)(0 300)</ogo:line>
+ <ogo:line>(40 -20)(40 0)</ogo:line>
+ <ogo:line>(40 310)(40 330)</ogo:line>
+ <ogo:line>(80 10)(100 10)</ogo:line>
+ <ogo:line>(80 20)(100 20)</ogo:line>
+ <ogo:line>(80 30)(100 30)</ogo:line>
+ <ogo:line>(80 40)(100 40)</ogo:line>
+ <ogo:line>(80 50)(100 50)</ogo:line>
+ <ogo:line>(80 60)(100 60)</ogo:line>
+ <ogo:line>(80 70)(100 70)</ogo:line>
+ <ogo:line>(80 80)(100 80)</ogo:line>
+ <ogo:line>(80 100)(100 100)</ogo:line>
+ <ogo:line>(80 110)(100 110)</ogo:line>
+ <ogo:line>(80 120)(100 120)</ogo:line>
+ <ogo:line>(80 130)(100 130)</ogo:line>
+ <ogo:line>(80 140)(100 140)</ogo:line>
+ <ogo:line>(80 150)(100 150)</ogo:line>
+ <ogo:line>(80 160)(100 160)</ogo:line>
+ <ogo:line>(80 170)(100 170)</ogo:line>
+ <ogo:line>(80 190)(100 190)</ogo:line>
+ <ogo:line>(80 200)(100 200)</ogo:line>
+ <ogo:line>(86 210)(100 210)</ogo:line>
+ <ogo:line>(80 220)(100 220)</ogo:line>
+ <ogo:line>(80 230)(100 230)</ogo:line>
+ <ogo:line>(80 240)(100 240)</ogo:line>
+ <ogo:line>(80 250)(100 250)</ogo:line>
+ <ogo:line>(80 260)(100 260)</ogo:line>
+ <ogo:arc>(-6 57)(0 63)</ogo:arc>
+ <ogo:arc>(-6 67)(0 73)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 30)</ogo:connection>
+ <ogo:connection>(-20 40 29)</ogo:connection>
+ <ogo:connection>(-20 60 39)</ogo:connection>
+ <ogo:connection>(-20 70 41)</ogo:connection>
+ <ogo:connection>(-20 80 40)</ogo:connection>
+ <ogo:connection>(-20 100 22)</ogo:connection>
+ <ogo:connection>(-20 110 21)</ogo:connection>
+ <ogo:connection>(-20 130 25)</ogo:connection>
+ <ogo:connection>(-20 140 24)</ogo:connection>
+ <ogo:connection>(-20 160 27)</ogo:connection>
+ <ogo:connection>(-20 170 26)</ogo:connection>
+ <ogo:connection>(-20 180 28)</ogo:connection>
+ <ogo:connection>(-20 200 42)</ogo:connection>
+ <ogo:connection>(-20 210 43)</ogo:connection>
+ <ogo:connection>(-20 220 44)</ogo:connection>
+ <ogo:connection>(-20 230 45)</ogo:connection>
+ <ogo:connection>(-20 240 46)</ogo:connection>
+ <ogo:connection>(-20 250 47)</ogo:connection>
+ <ogo:connection>(-20 270 17)</ogo:connection>
+ <ogo:connection>(-20 280 18)</ogo:connection>
+ <ogo:connection>(-20 290 19)</ogo:connection>
+ <ogo:connection>(-20 300 20)</ogo:connection>
+ <ogo:connection>(40 -20 48)</ogo:connection>
+ <ogo:connection>(40 330 23)</ogo:connection>
+ <ogo:connection>(100 10 8)</ogo:connection>
+ <ogo:connection>(100 20 7)</ogo:connection>
+ <ogo:connection>(100 30 6)</ogo:connection>
+ <ogo:connection>(100 40 5)</ogo:connection>
+ <ogo:connection>(100 50 4)</ogo:connection>
+ <ogo:connection>(100 60 3)</ogo:connection>
+ <ogo:connection>(100 70 2)</ogo:connection>
+ <ogo:connection>(100 80 1)</ogo:connection>
+ <ogo:connection>(100 100 16)</ogo:connection>
+ <ogo:connection>(100 110 15)</ogo:connection>
+ <ogo:connection>(100 120 14)</ogo:connection>
+ <ogo:connection>(100 130 13)</ogo:connection>
+ <ogo:connection>(100 140 12)</ogo:connection>
+ <ogo:connection>(100 150 11)</ogo:connection>
+ <ogo:connection>(100 160 10)</ogo:connection>
+ <ogo:connection>(100 170 9)</ogo:connection>
+ <ogo:connection>(100 190 31)</ogo:connection>
+ <ogo:connection>(100 200 32)</ogo:connection>
+ <ogo:connection>(100 210 33)</ogo:connection>
+ <ogo:connection>(100 220 34)</ogo:connection>
+ <ogo:connection>(100 230 35)</ogo:connection>
+ <ogo:connection>(100 240 36)</ogo:connection>
+ <ogo:connection>(100 250 37)</ogo:connection>
+ <ogo:connection>(100 260 38)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>Z80</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(80 0)(80 260)(0 260)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(-6 110)</ogo:line>
+ <ogo:line>(-20 130)(-6 130)</ogo:line>
+ <ogo:line>(-20 140)(-6 140)</ogo:line>
+ <ogo:line>(-20 160)(-6 160)</ogo:line>
+ <ogo:line>(-20 170)(-6 170)</ogo:line>
+ <ogo:line>(-20 190)(-6 190)</ogo:line>
+ <ogo:line>(-20 200)(-6 200)</ogo:line>
+ <ogo:line>(-20 220)(-6 220)</ogo:line>
+ <ogo:line>(-20 230)(-6 230)</ogo:line>
+ <ogo:line>(-20 240)(-6 240)</ogo:line>
+ <ogo:line>(-20 250)(-6 250)</ogo:line>
+ <ogo:line>(40 -20)(40 0)</ogo:line>
+ <ogo:line>(40 260)(40 280)</ogo:line>
+ <ogo:line>(80 10)(100 10)</ogo:line>
+ <ogo:line>(80 20)(100 20)</ogo:line>
+ <ogo:line>(80 30)(100 30)</ogo:line>
+ <ogo:line>(80 40)(100 40)</ogo:line>
+ <ogo:line>(80 50)(100 50)</ogo:line>
+ <ogo:line>(80 60)(100 60)</ogo:line>
+ <ogo:line>(80 70)(100 70)</ogo:line>
+ <ogo:line>(80 80)(100 80)</ogo:line>
+ <ogo:line>(80 90)(100 90)</ogo:line>
+ <ogo:line>(80 100)(100 100)</ogo:line>
+ <ogo:line>(80 110)(100 110)</ogo:line>
+ <ogo:line>(80 120)(100 120)</ogo:line>
+ <ogo:line>(80 130)(100 130)</ogo:line>
+ <ogo:line>(80 140)(100 140)</ogo:line>
+ <ogo:line>(80 150)(100 150)</ogo:line>
+ <ogo:line>(80 160)(100 160)</ogo:line>
+ <ogo:line>(86 200)(100 200)</ogo:line>
+ <ogo:line>(86 220)(100 220)</ogo:line>
+ <ogo:arc>(-6 107)(0 113)</ogo:arc>
+ <ogo:arc>(-6 127)(0 133)</ogo:arc>
+ <ogo:arc>(-6 137)(0 143)</ogo:arc>
+ <ogo:arc>(-6 157)(0 163)</ogo:arc>
+ <ogo:arc>(-6 167)(0 173)</ogo:arc>
+ <ogo:arc>(-6 187)(0 193)</ogo:arc>
+ <ogo:arc>(-6 197)(0 203)</ogo:arc>
+ <ogo:arc>(-6 217)(0 223)</ogo:arc>
+ <ogo:arc>(-6 227)(0 233)</ogo:arc>
+ <ogo:arc>(-6 237)(0 243)</ogo:arc>
+ <ogo:arc>(-6 247)(0 253)</ogo:arc>
+ <ogo:arc>(80 197)(86 203)</ogo:arc>
+ <ogo:arc>(80 217)(86 223)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 14)</ogo:connection>
+ <ogo:connection>(-20 20 15)</ogo:connection>
+ <ogo:connection>(-20 30 12)</ogo:connection>
+ <ogo:connection>(-20 40 8)</ogo:connection>
+ <ogo:connection>(-20 50 7)</ogo:connection>
+ <ogo:connection>(-20 60 9)</ogo:connection>
+ <ogo:connection>(-20 70 10)</ogo:connection>
+ <ogo:connection>(-20 80 13)</ogo:connection>
+ <ogo:connection>(-20 100 6)</ogo:connection>
+ <ogo:connection>(-20 110 27)</ogo:connection>
+ <ogo:connection>(-20 130 26)</ogo:connection>
+ <ogo:connection>(-20 140 28)</ogo:connection>
+ <ogo:connection>(-20 160 16)</ogo:connection>
+ <ogo:connection>(-20 170 17)</ogo:connection>
+ <ogo:connection>(-20 190 18)</ogo:connection>
+ <ogo:connection>(-20 200 24)</ogo:connection>
+ <ogo:connection>(-20 220 19)</ogo:connection>
+ <ogo:connection>(-20 230 20)</ogo:connection>
+ <ogo:connection>(-20 240 21)</ogo:connection>
+ <ogo:connection>(-20 250 22)</ogo:connection>
+ <ogo:connection>(40 -20 11)</ogo:connection>
+ <ogo:connection>(40 280 29)</ogo:connection>
+ <ogo:connection>(100 10 30)</ogo:connection>
+ <ogo:connection>(100 20 31)</ogo:connection>
+ <ogo:connection>(100 30 32)</ogo:connection>
+ <ogo:connection>(100 40 33)</ogo:connection>
+ <ogo:connection>(100 50 34)</ogo:connection>
+ <ogo:connection>(100 60 35)</ogo:connection>
+ <ogo:connection>(100 70 36)</ogo:connection>
+ <ogo:connection>(100 80 37)</ogo:connection>
+ <ogo:connection>(100 90 38)</ogo:connection>
+ <ogo:connection>(100 100 39)</ogo:connection>
+ <ogo:connection>(100 110 40)</ogo:connection>
+ <ogo:connection>(100 120 1)</ogo:connection>
+ <ogo:connection>(100 130 2)</ogo:connection>
+ <ogo:connection>(100 140 3)</ogo:connection>
+ <ogo:connection>(100 150 4)</ogo:connection>
+ <ogo:connection>(100 160 5)</ogo:connection>
+ <ogo:connection>(100 200 25)</ogo:connection>
+ <ogo:connection>(100 220 23)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>6811E9</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(80 0)(80 320)(0 320)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(-6 60)</ogo:line>
+ <ogo:line>(-20 70)(-6 70)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(-20 170)(0 170)</ogo:line>
+ <ogo:line>(-20 180)(0 180)</ogo:line>
+ <ogo:line>(-20 200)(0 200)</ogo:line>
+ <ogo:line>(-20 210)(0 210)</ogo:line>
+ <ogo:line>(-20 220)(0 220)</ogo:line>
+ <ogo:line>(-20 230)(0 230)</ogo:line>
+ <ogo:line>(-20 240)(0 240)</ogo:line>
+ <ogo:line>(-20 250)(0 250)</ogo:line>
+ <ogo:line>(-20 280)(0 280)</ogo:line>
+ <ogo:line>(-20 290)(0 290)</ogo:line>
+ <ogo:line>(-20 300)(0 300)</ogo:line>
+ <ogo:line>(-20 310)(0 310)</ogo:line>
+ <ogo:line>(40 -20)(40 0)</ogo:line>
+ <ogo:line>(40 320)(40 340)</ogo:line>
+ <ogo:line>(80 10)(100 10)</ogo:line>
+ <ogo:line>(80 20)(100 20)</ogo:line>
+ <ogo:line>(80 30)(100 30)</ogo:line>
+ <ogo:line>(80 40)(100 40)</ogo:line>
+ <ogo:line>(80 50)(100 50)</ogo:line>
+ <ogo:line>(80 60)(100 60)</ogo:line>
+ <ogo:line>(80 70)(100 70)</ogo:line>
+ <ogo:line>(80 80)(100 80)</ogo:line>
+ <ogo:line>(80 100)(100 100)</ogo:line>
+ <ogo:line>(80 110)(100 110)</ogo:line>
+ <ogo:line>(80 120)(100 120)</ogo:line>
+ <ogo:line>(80 130)(100 130)</ogo:line>
+ <ogo:line>(80 140)(100 140)</ogo:line>
+ <ogo:line>(80 150)(100 150)</ogo:line>
+ <ogo:line>(80 160)(100 160)</ogo:line>
+ <ogo:line>(80 170)(100 170)</ogo:line>
+ <ogo:line>(80 190)(100 190)</ogo:line>
+ <ogo:line>(80 200)(100 200)</ogo:line>
+ <ogo:line>(86 210)(100 210)</ogo:line>
+ <ogo:line>(80 220)(100 220)</ogo:line>
+ <ogo:line>(80 230)(100 230)</ogo:line>
+ <ogo:line>(80 240)(100 240)</ogo:line>
+ <ogo:line>(80 250)(100 250)</ogo:line>
+ <ogo:line>(80 260)(100 260)</ogo:line>
+ <ogo:line>(80 280)(100 280)</ogo:line>
+ <ogo:line>(80 290)(100 290)</ogo:line>
+ <ogo:line>(80 300)(100 300)</ogo:line>
+ <ogo:line>(80 310)(100 310)</ogo:line>
+ <ogo:arc>(-6 57)(0 63)</ogo:arc>
+ <ogo:arc>(-6 67)(0 73)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 8)</ogo:connection>
+ <ogo:connection>(-20 40 7)</ogo:connection>
+ <ogo:connection>(-20 60 17)</ogo:connection>
+ <ogo:connection>(-20 70 19)</ogo:connection>
+ <ogo:connection>(-20 80 18)</ogo:connection>
+ <ogo:connection>(-20 100 52)</ogo:connection>
+ <ogo:connection>(-20 110 51)</ogo:connection>
+ <ogo:connection>(-20 130 3)</ogo:connection>
+ <ogo:connection>(-20 140 2)</ogo:connection>
+ <ogo:connection>(-20 160 5)</ogo:connection>
+ <ogo:connection>(-20 170 4)</ogo:connection>
+ <ogo:connection>(-20 180 6)</ogo:connection>
+ <ogo:connection>(-20 200 20)</ogo:connection>
+ <ogo:connection>(-20 210 21)</ogo:connection>
+ <ogo:connection>(-20 220 22)</ogo:connection>
+ <ogo:connection>(-20 230 23)</ogo:connection>
+ <ogo:connection>(-20 240 24)</ogo:connection>
+ <ogo:connection>(-20 250 25)</ogo:connection>
+ <ogo:connection>(-20 280 43)</ogo:connection>
+ <ogo:connection>(-20 290 44)</ogo:connection>
+ <ogo:connection>(-20 300 45)</ogo:connection>
+ <ogo:connection>(-20 310 46)</ogo:connection>
+ <ogo:connection>(40 -20 26)</ogo:connection>
+ <ogo:connection>(40 340 1)</ogo:connection>
+ <ogo:connection>(100 10 34)</ogo:connection>
+ <ogo:connection>(100 20 33)</ogo:connection>
+ <ogo:connection>(100 30 32)</ogo:connection>
+ <ogo:connection>(100 40 31)</ogo:connection>
+ <ogo:connection>(100 50 30)</ogo:connection>
+ <ogo:connection>(100 60 29)</ogo:connection>
+ <ogo:connection>(100 70 28)</ogo:connection>
+ <ogo:connection>(100 80 27)</ogo:connection>
+ <ogo:connection>(100 100 42)</ogo:connection>
+ <ogo:connection>(100 110 41)</ogo:connection>
+ <ogo:connection>(100 120 40)</ogo:connection>
+ <ogo:connection>(100 130 39)</ogo:connection>
+ <ogo:connection>(100 140 38)</ogo:connection>
+ <ogo:connection>(100 150 37)</ogo:connection>
+ <ogo:connection>(100 160 36)</ogo:connection>
+ <ogo:connection>(100 170 35)</ogo:connection>
+ <ogo:connection>(100 190 9)</ogo:connection>
+ <ogo:connection>(100 200 10)</ogo:connection>
+ <ogo:connection>(100 210 11)</ogo:connection>
+ <ogo:connection>(100 220 12)</ogo:connection>
+ <ogo:connection>(100 230 13)</ogo:connection>
+ <ogo:connection>(100 240 14)</ogo:connection>
+ <ogo:connection>(100 250 15)</ogo:connection>
+ <ogo:connection>(100 260 16)</ogo:connection>
+ <ogo:connection>(100 280 47)</ogo:connection>
+ <ogo:connection>(100 290 48)</ogo:connection>
+ <ogo:connection>(100 300 49)</ogo:connection>
+ <ogo:connection>(100 310 50)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>8088</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(80 0)(80 260)(0 260)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 130)(-6 130)</ogo:line>
+ <ogo:line>(-20 140)(-6 140)</ogo:line>
+ <ogo:line>(-20 180)(0 180)</ogo:line>
+ <ogo:line>(-20 200)(0 200)</ogo:line>
+ <ogo:line>(-20 220)(0 220)</ogo:line>
+ <ogo:line>(40 -20)(40 0)</ogo:line>
+ <ogo:line>(40 260)(40 280)</ogo:line>
+ <ogo:line>(50 260)(50 280)</ogo:line>
+
+ <ogo:line>(80 10)(100 10)</ogo:line>
+ <ogo:line>(80 20)(100 20)</ogo:line>
+ <ogo:line>(80 30)(100 30)</ogo:line>
+ <ogo:line>(80 40)(100 40)</ogo:line>
+ <ogo:line>(80 50)(100 50)</ogo:line>
+ <ogo:line>(80 60)(100 60)</ogo:line>
+ <ogo:line>(80 70)(100 70)</ogo:line>
+ <ogo:line>(80 80)(100 80)</ogo:line>
+ <ogo:line>(80 90)(100 90)</ogo:line>
+ <ogo:line>(80 100)(100 100)</ogo:line>
+ <ogo:line>(80 110)(100 110)</ogo:line>
+ <ogo:line>(80 120)(100 120)</ogo:line>
+ <ogo:line>(80 130)(100 130)</ogo:line>
+ <ogo:line>(80 140)(100 140)</ogo:line>
+ <ogo:line>(80 150)(100 150)</ogo:line>
+ <ogo:line>(80 160)(100 160)</ogo:line>
+ <ogo:line>(80 170)(100 170)</ogo:line>
+ <ogo:line>(80 180)(100 180)</ogo:line>
+ <ogo:line>(80 190)(100 190)</ogo:line>
+ <ogo:line>(80 200)(100 200)</ogo:line>
+
+ <ogo:line>(86 220)(100 220)</ogo:line>
+ <ogo:line>(86 230)(100 230)</ogo:line>
+ <ogo:line>(86 240)(100 240)</ogo:line>
+ <ogo:line>(86 250)(100 250)</ogo:line>
+
+ <ogo:arc>(-6 127)(0 133)</ogo:arc>
+ <ogo:arc>(-6 137)(0 143)</ogo:arc>
+ <ogo:arc>(80 217)(86 223)</ogo:arc>
+ <ogo:arc>(80 227)(86 233)</ogo:arc>
+ <ogo:arc>(80 237)(86 243)</ogo:arc>
+ <ogo:arc>(80 247)(86 253)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 19)</ogo:connection>
+ <ogo:connection>(-20 20 22)</ogo:connection>
+ <ogo:connection>(-20 30 21)</ogo:connection>
+ <ogo:connection>(-20 50 33)</ogo:connection>
+ <ogo:connection>(-20 70 18)</ogo:connection>
+ <ogo:connection>(-20 80 17)</ogo:connection>
+ <ogo:connection>(-20 100 31)</ogo:connection>
+ <ogo:connection>(-20 110 30)</ogo:connection>
+ <ogo:connection>(-20 130 34)</ogo:connection>
+ <ogo:connection>(-20 140 23)</ogo:connection>
+ <ogo:connection>(-20 180 27)</ogo:connection>
+ <ogo:connection>(-20 200 25)</ogo:connection>
+ <ogo:connection>(-20 220 28)</ogo:connection>
+ <ogo:connection>(40 -20 40)</ogo:connection>
+ <ogo:connection>(40 280 20)</ogo:connection>
+ <ogo:connection>(50 280 1)</ogo:connection>
+ <ogo:connection>(100 10 16)</ogo:connection>
+ <ogo:connection>(100 20 15)</ogo:connection>
+ <ogo:connection>(100 30 14)</ogo:connection>
+ <ogo:connection>(100 40 13)</ogo:connection>
+ <ogo:connection>(100 50 12)</ogo:connection>
+ <ogo:connection>(100 60 11)</ogo:connection>
+ <ogo:connection>(100 70 10)</ogo:connection>
+ <ogo:connection>(100 80 9)</ogo:connection>
+ <ogo:connection>(100 90 8)</ogo:connection>
+ <ogo:connection>(100 100 7)</ogo:connection>
+ <ogo:connection>(100 110 6)</ogo:connection>
+ <ogo:connection>(100 120 5)</ogo:connection>
+ <ogo:connection>(100 130 4)</ogo:connection>
+ <ogo:connection>(100 140 3)</ogo:connection>
+ <ogo:connection>(100 150 2)</ogo:connection>
+ <ogo:connection>(100 160 39)</ogo:connection>
+ <ogo:connection>(100 170 38)</ogo:connection>
+ <ogo:connection>(100 180 37)</ogo:connection>
+ <ogo:connection>(100 190 36)</ogo:connection>
+ <ogo:connection>(100 200 25)</ogo:connection>
+ <ogo:connection>(100 220 32)</ogo:connection>
+ <ogo:connection>(100 230 29)</ogo:connection>
+ <ogo:connection>(100 240 24)</ogo:connection>
+ <ogo:connection>(100 250 26)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>8048</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(80 0)(80 250)(0 250)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 120)(-6 120)</ogo:line>
+ <ogo:line>(-20 130)(-6 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(-20 170)(0 170)</ogo:line>
+ <ogo:line>(-20 180)(0 180)</ogo:line>
+ <ogo:line>(-20 190)(0 190)</ogo:line>
+ <ogo:line>(-20 200)(0 200)</ogo:line>
+ <ogo:line>(-20 210)(0 210)</ogo:line>
+ <ogo:line>(-20 220)(0 220)</ogo:line>
+ <ogo:line>(-20 230)(0 230)</ogo:line>
+ <ogo:line>(-20 240)(0 240)</ogo:line>
+ <ogo:line>(40 -20)(40 0)</ogo:line>
+ <ogo:line>(40 250)(40 270)</ogo:line>
+ <ogo:line>(80 10)(100 10)</ogo:line>
+ <ogo:line>(80 20)(100 20)</ogo:line>
+ <ogo:line>(80 30)(100 30)</ogo:line>
+ <ogo:line>(80 40)(100 40)</ogo:line>
+ <ogo:line>(80 50)(100 50)</ogo:line>
+ <ogo:line>(80 60)(100 60)</ogo:line>
+ <ogo:line>(80 70)(100 70)</ogo:line>
+ <ogo:line>(80 80)(100 80)</ogo:line>
+ <ogo:line>(80 100)(100 100)</ogo:line>
+ <ogo:line>(80 110)(100 110)</ogo:line>
+ <ogo:line>(80 120)(100 120)</ogo:line>
+ <ogo:line>(80 130)(100 130)</ogo:line>
+ <ogo:line>(80 140)(100 140)</ogo:line>
+ <ogo:line>(80 150)(100 150)</ogo:line>
+ <ogo:line>(80 160)(100 160)</ogo:line>
+ <ogo:line>(80 170)(100 170)</ogo:line>
+ <ogo:line>(86 190)(100 190)</ogo:line>
+ <ogo:line>(86 200)(100 200)</ogo:line>
+ <ogo:line>(86 210)(100 210)</ogo:line>
+ <ogo:line>(80 220)(100 220)</ogo:line>
+ <ogo:line>(80 230)(100 230)</ogo:line>
+ <ogo:line>(80 240)(100 240)</ogo:line>
+ <ogo:arc>(-6 117)(0 123)</ogo:arc>
+ <ogo:arc>(-6 127)(0 133)</ogo:arc>
+ <ogo:arc>(80 187)(86 193)</ogo:arc>
+ <ogo:arc>(80 197)(86 203)</ogo:arc>
+ <ogo:arc>(80 207)(86 213)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 7)</ogo:connection>
+ <ogo:connection>(-20 30 2)</ogo:connection>
+ <ogo:connection>(-20 60 3)</ogo:connection>
+ <ogo:connection>(-20 90 4)</ogo:connection>
+ <ogo:connection>(-20 120 6)</ogo:connection>
+ <ogo:connection>(-20 130 5)</ogo:connection>
+ <ogo:connection>(-20 140 1)</ogo:connection>
+ <ogo:connection>(-20 150 39)</ogo:connection>
+ <ogo:connection>(-20 170 27)</ogo:connection>
+ <ogo:connection>(-20 180 28)</ogo:connection>
+ <ogo:connection>(-20 190 29)</ogo:connection>
+ <ogo:connection>(-20 200 30)</ogo:connection>
+ <ogo:connection>(-20 210 31)</ogo:connection>
+ <ogo:connection>(-20 220 32)</ogo:connection>
+ <ogo:connection>(-20 230 33)</ogo:connection>
+ <ogo:connection>(-20 240 34)</ogo:connection>
+ <ogo:connection>(40 -20 40)</ogo:connection>
+ <ogo:connection>(40 270 20)</ogo:connection>
+ <ogo:connection>(100 10 12)</ogo:connection>
+ <ogo:connection>(100 20 13)</ogo:connection>
+ <ogo:connection>(100 30 14)</ogo:connection>
+ <ogo:connection>(100 40 15)</ogo:connection>
+ <ogo:connection>(100 50 16)</ogo:connection>
+ <ogo:connection>(100 60 17)</ogo:connection>
+ <ogo:connection>(100 70 18)</ogo:connection>
+ <ogo:connection>(100 80 19)</ogo:connection>
+ <ogo:connection>(100 100 21)</ogo:connection>
+ <ogo:connection>(100 110 22)</ogo:connection>
+ <ogo:connection>(100 120 23)</ogo:connection>
+ <ogo:connection>(100 130 24)</ogo:connection>
+ <ogo:connection>(100 140 35)</ogo:connection>
+ <ogo:connection>(100 150 36)</ogo:connection>
+ <ogo:connection>(100 160 37)</ogo:connection>
+ <ogo:connection>(100 170 38)</ogo:connection>
+ <ogo:connection>(100 190 8)</ogo:connection>
+ <ogo:connection>(100 200 10)</ogo:connection>
+ <ogo:connection>(100 210 9)</ogo:connection>
+ <ogo:connection>(100 220 11)</ogo:connection>
+ <ogo:connection>(100 230 25)</ogo:connection>
+ <ogo:connection>(100 240 26)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+
+
+
+
+ </ogo:symbols>
+
+
+
+ <ogo:parts>
+
+
+ <ogo:part>
+ <ogo:name>8051</ogo:name>
+ <ogo:symbol>8051</ogo:symbol>
+ <ogo:description>Microcontroller</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>EA|VP</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X1</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X2</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RESET</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>INT0</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>INT1</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>T0</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>T1</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-17 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1.0</ogo:text>
+ <ogo:position>(2 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-17 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1.1</ogo:text>
+ <ogo:position>(2 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1.2</ogo:text>
+ <ogo:position>(2 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1.3</ogo:text>
+ <ogo:position>(2 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1.4</ogo:text>
+ <ogo:position>(2 215)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1.5</ogo:text>
+ <ogo:position>(2 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1.6</ogo:text>
+ <ogo:position>(2 235)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-17 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1.7</ogo:text>
+ <ogo:position>(2 245)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>40</ogo:name>
+ <ogo:text>40</ogo:text>
+ <ogo:position>(22 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(22 265)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>39</ogo:name>
+ <ogo:text>39</ogo:text>
+ <ogo:position>(87 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0.0</ogo:text>
+ <ogo:position>(55 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>38</ogo:name>
+ <ogo:text>38</ogo:text>
+ <ogo:position>(87 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0.1</ogo:text>
+ <ogo:position>(55 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>37</ogo:name>
+ <ogo:text>37</ogo:text>
+ <ogo:position>(87 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0.2</ogo:text>
+ <ogo:position>(55 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>36</ogo:name>
+ <ogo:text>36</ogo:text>
+ <ogo:position>(87 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0.3</ogo:text>
+ <ogo:position>(55 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>35</ogo:name>
+ <ogo:text>35</ogo:text>
+ <ogo:position>(87 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0.4</ogo:text>
+ <ogo:position>(55 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>34</ogo:name>
+ <ogo:text>34</ogo:text>
+ <ogo:position>(87 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0.5</ogo:text>
+ <ogo:position>(55 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>33</ogo:name>
+ <ogo:text>33</ogo:text>
+ <ogo:position>(87 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0.6</ogo:text>
+ <ogo:position>(55 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(87 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0.7</ogo:text>
+ <ogo:position>(55 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(87 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2.0</ogo:text>
+ <ogo:position>(55 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(87 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2.1</ogo:text>
+ <ogo:position>(55 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(87 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2.2</ogo:text>
+ <ogo:position>(55 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(87 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2.3</ogo:text>
+ <ogo:position>(55 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(87 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2.4</ogo:text>
+ <ogo:position>(55 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(87 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2.5</ogo:text>
+ <ogo:position>(55 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(87 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2.6</ogo:text>
+ <ogo:position>(55 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(87 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2.7</ogo:text>
+ <ogo:position>(55 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(87 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RD</ogo:text>
+ <ogo:position>(60 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(87 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>WR</ogo:text>
+ <ogo:position>(60 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>29</ogo:name>
+ <ogo:text>29</ogo:text>
+ <ogo:position>(87 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PSEN</ogo:text>
+ <ogo:position>(50 215)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(87 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ALE</ogo:text>
+ <ogo:position>(58 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(87 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TXD</ogo:text>
+ <ogo:position>(58 235)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(87 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RXD</ogo:text>
+ <ogo:position>(58 245)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(45 265)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>8051</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %40 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>8052</ogo:name>
+ <ogo:symbol>eq</ogo:symbol>
+ <ogo:description>See 8051</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>8048</ogo:name>
+ <ogo:symbol>8048</ogo:symbol>
+ <ogo:description>Microcontroller</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>EA</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X1</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X2</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RESET</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>INT</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>SS</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>T0</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>39</ogo:name>
+ <ogo:text>39</ogo:text>
+ <ogo:position>(-17 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>T1</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-17 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1.0</ogo:text>
+ <ogo:position>(2 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(-17 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1.1</ogo:text>
+ <ogo:position>(2 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>29</ogo:name>
+ <ogo:text>29</ogo:text>
+ <ogo:position>(-17 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1.2</ogo:text>
+ <ogo:position>(2 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(-17 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1.3</ogo:text>
+ <ogo:position>(2 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(-17 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1.4</ogo:text>
+ <ogo:position>(2 215)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(-17 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1.5</ogo:text>
+ <ogo:position>(2 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>33</ogo:name>
+ <ogo:text>33</ogo:text>
+ <ogo:position>(-17 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1.6</ogo:text>
+ <ogo:position>(2 235)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>34</ogo:name>
+ <ogo:text>34</ogo:text>
+ <ogo:position>(-17 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1.7</ogo:text>
+ <ogo:position>(2 245)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>40</ogo:name>
+ <ogo:text>40</ogo:text>
+ <ogo:position>(27 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(27 265)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(87 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(65 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(87 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(65 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(87 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(65 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(87 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(65 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(87 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(65 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(87 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(65 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(87 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(65 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(87 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(65 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(87 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2.0</ogo:text>
+ <ogo:position>(55 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(87 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2.1</ogo:text>
+ <ogo:position>(55 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(87 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2.2</ogo:text>
+ <ogo:position>(55 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(87 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2.3</ogo:text>
+ <ogo:position>(55 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>35</ogo:name>
+ <ogo:text>35</ogo:text>
+ <ogo:position>(87 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2.4</ogo:text>
+ <ogo:position>(55 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>36</ogo:name>
+ <ogo:text>36</ogo:text>
+ <ogo:position>(87 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2.5</ogo:text>
+ <ogo:position>(55 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>37</ogo:name>
+ <ogo:text>37</ogo:text>
+ <ogo:position>(87 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2.6</ogo:text>
+ <ogo:position>(55 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>38</ogo:name>
+ <ogo:text>38</ogo:text>
+ <ogo:position>(87 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2.7</ogo:text>
+ <ogo:position>(55 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(87 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RD</ogo:text>
+ <ogo:position>(65 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(87 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>WR</ogo:text>
+ <ogo:position>(65 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(87 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PSEN</ogo:text>
+ <ogo:position>(50 215)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(87 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ALE</ogo:text>
+ <ogo:position>(58 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(87 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PRG</ogo:text>
+ <ogo:position>(58 235)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(87 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VP</ogo:text>
+ <ogo:position>(65 245)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(48 265)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>8048</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %40 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>8049</ogo:name>
+ <ogo:symbol>eq</ogo:symbol>
+ <ogo:description>See 8048</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>6809</ogo:name>
+ <ogo:symbol>6809</ogo:symbol>
+ <ogo:description>Microprocessor</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>39</ogo:name>
+ <ogo:text>39</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>38</ogo:name>
+ <ogo:text>38</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>EX2</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>37</ogo:name>
+ <ogo:text>37</ogo:text>
+ <ogo:position>(-17 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RESET</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>NMI</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>40</ogo:name>
+ <ogo:text>40</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>HALT</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IRQ</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>FIRQ</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>36</ogo:name>
+ <ogo:text>36</ogo:text>
+ <ogo:position>(-17 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RDY</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>33</ogo:name>
+ <ogo:text>33</ogo:text>
+ <ogo:position>(-17 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>DMA</ogo:text>
+ <ogo:position>(2 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(-17 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(-17 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 215)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>29</ogo:name>
+ <ogo:text>29</ogo:text>
+ <ogo:position>(-17 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(-17 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 235)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-17 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(2 245)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(-17 250)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(2 255)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-17 260)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(2 265)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(-17 270)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(2 275)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(27 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(27 295)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(87 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(65 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(87 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(65 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(87 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(65 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(87 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(65 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(87 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(65 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(87 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(65 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(87 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(65 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(87 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(65 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(87 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(65 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(87 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A9</ogo:text>
+ <ogo:position>(65 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(87 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A10</ogo:text>
+ <ogo:position>(60 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(87 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A11</ogo:text>
+ <ogo:position>(60 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(87 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A12</ogo:text>
+ <ogo:position>(60 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(87 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A13</ogo:text>
+ <ogo:position>(60 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(87 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A14</ogo:text>
+ <ogo:position>(60 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(87 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A15</ogo:text>
+ <ogo:position>(60 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>34</ogo:name>
+ <ogo:text>34</ogo:text>
+ <ogo:position>(87 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(67 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>35</ogo:name>
+ <ogo:text>35</ogo:text>
+ <ogo:position>(87 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(67 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(87 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>BA</ogo:text>
+ <ogo:position>(65 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(87 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>BS</ogo:text>
+ <ogo:position>(65 245)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(87 260)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R|W</ogo:text>
+ <ogo:position>(60 265)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(45 295)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>6809</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %40 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>68HC11A0</ogo:name>
+ <ogo:symbol>6811A0</ogo:symbol>
+ <ogo:description>Microcontroller</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>XT</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>29</ogo:name>
+ <ogo:text>29</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>EX</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>39</ogo:name>
+ <ogo:text>39</ogo:text>
+ <ogo:position>(-17 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RESET</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>41</ogo:name>
+ <ogo:text>41</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IRQ</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>40</ogo:name>
+ <ogo:text>40</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>XIRQ</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VRH</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VRL</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-17 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MODA</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MODB</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-17 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(-17 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AS</ogo:text>
+ <ogo:position>(2 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(-17 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R|W</ogo:text>
+ <ogo:position>(2 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>42</ogo:name>
+ <ogo:text>42</ogo:text>
+ <ogo:position>(-17 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PD0</ogo:text>
+ <ogo:position>(2 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>43</ogo:name>
+ <ogo:text>43</ogo:text>
+ <ogo:position>(-17 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PD1</ogo:text>
+ <ogo:position>(2 215)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>44</ogo:name>
+ <ogo:text>44</ogo:text>
+ <ogo:position>(-17 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PD2</ogo:text>
+ <ogo:position>(2 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>45</ogo:name>
+ <ogo:text>45</ogo:text>
+ <ogo:position>(-17 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PD3</ogo:text>
+ <ogo:position>(2 235)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>46</ogo:name>
+ <ogo:text>46</ogo:text>
+ <ogo:position>(-17 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PD4</ogo:text>
+ <ogo:position>(2 245)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>47</ogo:name>
+ <ogo:text>47</ogo:text>
+ <ogo:position>(-17 250)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PD5</ogo:text>
+ <ogo:position>(2 255)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 270)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE0</ogo:text>
+ <ogo:position>(2 275)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 280)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE1</ogo:text>
+ <ogo:position>(2 285)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-17 290)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE2</ogo:text>
+ <ogo:position>(2 295)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(-17 300)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE3</ogo:text>
+ <ogo:position>(2 305)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>48</ogo:name>
+ <ogo:text>48</ogo:text>
+ <ogo:position>(22 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(22 325)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(87 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA0</ogo:text>
+ <ogo:position>(60 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(87 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA1</ogo:text>
+ <ogo:position>(60 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(87 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA2</ogo:text>
+ <ogo:position>(60 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(87 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA3</ogo:text>
+ <ogo:position>(60 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(87 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA4</ogo:text>
+ <ogo:position>(60 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(87 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA5</ogo:text>
+ <ogo:position>(60 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(87 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA6</ogo:text>
+ <ogo:position>(60 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(87 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA7</ogo:text>
+ <ogo:position>(60 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(87 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB0</ogo:text>
+ <ogo:position>(60 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(87 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB1</ogo:text>
+ <ogo:position>(60 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(87 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB2</ogo:text>
+ <ogo:position>(60 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(87 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB3</ogo:text>
+ <ogo:position>(60 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(87 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB4</ogo:text>
+ <ogo:position>(60 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(87 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB5</ogo:text>
+ <ogo:position>(60 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(87 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB6</ogo:text>
+ <ogo:position>(60 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(87 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB7</ogo:text>
+ <ogo:position>(60 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(87 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC0</ogo:text>
+ <ogo:position>(60 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(87 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC1</ogo:text>
+ <ogo:position>(60 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>33</ogo:name>
+ <ogo:text>33</ogo:text>
+ <ogo:position>(87 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC2</ogo:text>
+ <ogo:position>(60 215)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>34</ogo:name>
+ <ogo:text>34</ogo:text>
+ <ogo:position>(87 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC3</ogo:text>
+ <ogo:position>(60 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>35</ogo:name>
+ <ogo:text>35</ogo:text>
+ <ogo:position>(87 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC4</ogo:text>
+ <ogo:position>(60 235)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>36</ogo:name>
+ <ogo:text>36</ogo:text>
+ <ogo:position>(87 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC5</ogo:text>
+ <ogo:position>(60 245)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>37</ogo:name>
+ <ogo:text>37</ogo:text>
+ <ogo:position>(87 250)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC6</ogo:text>
+ <ogo:position>(60 255)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>38</ogo:name>
+ <ogo:text>38</ogo:text>
+ <ogo:position>(87 260)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC7</ogo:text>
+ <ogo:position>(60 265)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(45 325)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>68HC11A0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %40 %41 %42 %43 %44 %45 %46 %47 %48 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>68HC11E9</ogo:name>
+ <ogo:symbol>6811E9</ogo:symbol>
+ <ogo:description>Microcontroller</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>XT</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>EX</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RESET</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IRQ</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>XIRQ</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>52</ogo:name>
+ <ogo:text>52</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VRH</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>51</ogo:name>
+ <ogo:text>51</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VRL</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MODA</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MODB</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AS</ogo:text>
+ <ogo:position>(2 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R|W</ogo:text>
+ <ogo:position>(2 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(-17 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PD0</ogo:text>
+ <ogo:position>(2 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PD1</ogo:text>
+ <ogo:position>(2 215)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-17 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PD2</ogo:text>
+ <ogo:position>(2 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PD3</ogo:text>
+ <ogo:position>(2 235)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(-17 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PD4</ogo:text>
+ <ogo:position>(2 245)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-17 250)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PD5</ogo:text>
+ <ogo:position>(2 255)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>43</ogo:name>
+ <ogo:text>43</ogo:text>
+ <ogo:position>(-17 280)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE0</ogo:text>
+ <ogo:position>(2 285)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>44</ogo:name>
+ <ogo:text>44</ogo:text>
+ <ogo:position>(-17 290)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE1</ogo:text>
+ <ogo:position>(2 295)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>45</ogo:name>
+ <ogo:text>45</ogo:text>
+ <ogo:position>(-17 300)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE2</ogo:text>
+ <ogo:position>(2 305)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>46</ogo:name>
+ <ogo:text>46</ogo:text>
+ <ogo:position>(-17 310)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE3</ogo:text>
+ <ogo:position>(2 315)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(22 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(27 335)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>34</ogo:name>
+ <ogo:text>34</ogo:text>
+ <ogo:position>(87 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA0</ogo:text>
+ <ogo:position>(60 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>33</ogo:name>
+ <ogo:text>33</ogo:text>
+ <ogo:position>(87 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA1</ogo:text>
+ <ogo:position>(60 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(87 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA2</ogo:text>
+ <ogo:position>(60 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(87 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA3</ogo:text>
+ <ogo:position>(60 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(87 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA4</ogo:text>
+ <ogo:position>(60 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>29</ogo:name>
+ <ogo:text>29</ogo:text>
+ <ogo:position>(87 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA5</ogo:text>
+ <ogo:position>(60 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(87 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA6</ogo:text>
+ <ogo:position>(60 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(87 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA7</ogo:text>
+ <ogo:position>(60 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>42</ogo:name>
+ <ogo:text>42</ogo:text>
+ <ogo:position>(87 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB0</ogo:text>
+ <ogo:position>(60 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>41</ogo:name>
+ <ogo:text>41</ogo:text>
+ <ogo:position>(87 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB1</ogo:text>
+ <ogo:position>(60 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>40</ogo:name>
+ <ogo:text>40</ogo:text>
+ <ogo:position>(87 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB2</ogo:text>
+ <ogo:position>(60 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>39</ogo:name>
+ <ogo:text>39</ogo:text>
+ <ogo:position>(87 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB3</ogo:text>
+ <ogo:position>(60 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>38</ogo:name>
+ <ogo:text>38</ogo:text>
+ <ogo:position>(87 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB4</ogo:text>
+ <ogo:position>(60 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>37</ogo:name>
+ <ogo:text>37</ogo:text>
+ <ogo:position>(87 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB5</ogo:text>
+ <ogo:position>(60 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>36</ogo:name>
+ <ogo:text>36</ogo:text>
+ <ogo:position>(87 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB6</ogo:text>
+ <ogo:position>(60 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>35</ogo:name>
+ <ogo:text>35</ogo:text>
+ <ogo:position>(87 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB7</ogo:text>
+ <ogo:position>(60 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(87 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC0</ogo:text>
+ <ogo:position>(60 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(87 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC1</ogo:text>
+ <ogo:position>(60 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(87 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC2</ogo:text>
+ <ogo:position>(60 215)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(87 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC3</ogo:text>
+ <ogo:position>(60 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(87 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC4</ogo:text>
+ <ogo:position>(60 235)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(87 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC5</ogo:text>
+ <ogo:position>(60 245)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(87 250)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC6</ogo:text>
+ <ogo:position>(60 255)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(87 260)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC7</ogo:text>
+ <ogo:position>(60 265)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>47</ogo:name>
+ <ogo:text>47</ogo:text>
+ <ogo:position>(87 280)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE4</ogo:text>
+ <ogo:position>(60 285)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>48</ogo:name>
+ <ogo:text>48</ogo:text>
+ <ogo:position>(87 290)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE5</ogo:text>
+ <ogo:position>(60 295)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>49</ogo:name>
+ <ogo:text>49</ogo:text>
+ <ogo:position>(87 300)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE6</ogo:text>
+ <ogo:position>(60 305)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>50</ogo:name>
+ <ogo:text>50</ogo:text>
+ <ogo:position>(87 310)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE7</ogo:text>
+ <ogo:position>(60 315)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(45 335)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>68HC11E9</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %40 %41 %42 %43 %44 %45 %46 %47 %48 %49 %50 %51 %52 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>Z80</ogo:name>
+ <ogo:symbol>Z80</ogo:symbol>
+ <ogo:description>Microprocessor</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CLK</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>M1</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(-17 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RESET</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RFSH</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(-17 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>INT</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>NMI</ogo:text>
+ <ogo:position>(2 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>HALT</ogo:text>
+ <ogo:position>(2 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(-17 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>WAIT</ogo:text>
+ <ogo:position>(2 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-17 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MREQ</ogo:text>
+ <ogo:position>(2 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(-17 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IOREQ</ogo:text>
+ <ogo:position>(2 235)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RD</ogo:text>
+ <ogo:position>(2 245)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-17 250)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>WR</ogo:text>
+ <ogo:position>(2 255)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(22 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>29</ogo:name>
+ <ogo:text>29</ogo:text>
+ <ogo:position>(22 275)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(87 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(65 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(87 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(65 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(87 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(65 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>33</ogo:name>
+ <ogo:text>33</ogo:text>
+ <ogo:position>(87 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(65 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>34</ogo:name>
+ <ogo:text>34</ogo:text>
+ <ogo:position>(87 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(65 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>35</ogo:name>
+ <ogo:text>35</ogo:text>
+ <ogo:position>(87 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(65 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>36</ogo:name>
+ <ogo:text>36</ogo:text>
+ <ogo:position>(87 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(65 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>37</ogo:name>
+ <ogo:text>37</ogo:text>
+ <ogo:position>(87 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(65 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>38</ogo:name>
+ <ogo:text>38</ogo:text>
+ <ogo:position>(87 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(65 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>39</ogo:name>
+ <ogo:text>39</ogo:text>
+ <ogo:position>(87 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A9</ogo:text>
+ <ogo:position>(65 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>40</ogo:name>
+ <ogo:text>40</ogo:text>
+ <ogo:position>(87 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A10</ogo:text>
+ <ogo:position>(60 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(87 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A11</ogo:text>
+ <ogo:position>(60 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(87 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A12</ogo:text>
+ <ogo:position>(60 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(87 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A13</ogo:text>
+ <ogo:position>(60 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(87 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A14</ogo:text>
+ <ogo:position>(60 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(87 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A15</ogo:text>
+ <ogo:position>(60 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(87 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>BUSRQ</ogo:text>
+ <ogo:position>(43 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(87 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>BUSAK</ogo:text>
+ <ogo:position>(43 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(45 275)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>Z80</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %40 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>8088 MIN</ogo:name>
+ <ogo:symbol>8088</ogo:symbol>
+ <ogo:description>Microprocessor</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CLK</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RDY</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RST</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>33</ogo:name>
+ <ogo:text>33</ogo:text>
+ <ogo:position>(-17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MN|MX</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>INTR</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>NMI</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>HOLD</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>HLDA</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>34</ogo:name>
+ <ogo:text>34</ogo:text>
+ <ogo:position>(-17 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>SSO</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TEST</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-17 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>DT|R</ogo:text>
+ <ogo:position>(2 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-17 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ALE</ogo:text>
+ <ogo:position>(2 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(-17 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IO|M</ogo:text>
+ <ogo:position>(2 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>40</ogo:name>
+ <ogo:text>40</ogo:text>
+ <ogo:position>(22 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(25 275)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(45 275)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(87 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AD0</ogo:text>
+ <ogo:position>(57 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(87 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AD1</ogo:text>
+ <ogo:position>(57 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(87 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AD2</ogo:text>
+ <ogo:position>(57 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(87 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AD3</ogo:text>
+ <ogo:position>(57 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(87 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AD4</ogo:text>
+ <ogo:position>(57 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(87 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AD5</ogo:text>
+ <ogo:position>(57 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(87 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AD6</ogo:text>
+ <ogo:position>(57 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(87 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AD7</ogo:text>
+ <ogo:position>(57 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(87 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(62 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(87 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A9</ogo:text>
+ <ogo:position>(62 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(87 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A10</ogo:text>
+ <ogo:position>(57 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(87 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A11</ogo:text>
+ <ogo:position>(57 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(87 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A12</ogo:text>
+ <ogo:position>(57 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(87 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A13</ogo:text>
+ <ogo:position>(57 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(87 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A14</ogo:text>
+ <ogo:position>(57 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>39</ogo:name>
+ <ogo:text>39</ogo:text>
+ <ogo:position>(87 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A15</ogo:text>
+ <ogo:position>(57 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>38</ogo:name>
+ <ogo:text>38</ogo:text>
+ <ogo:position>(87 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A16|S3</ogo:text>
+ <ogo:position>(42 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>37</ogo:name>
+ <ogo:text>37</ogo:text>
+ <ogo:position>(87 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A17|S4</ogo:text>
+ <ogo:position>(42 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>36</ogo:name>
+ <ogo:text>36</ogo:text>
+ <ogo:position>(87 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A18|S5</ogo:text>
+ <ogo:position>(42 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>35</ogo:name>
+ <ogo:text>35</ogo:text>
+ <ogo:position>(87 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A19|S6</ogo:text>
+ <ogo:position>(42 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(87 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RD</ogo:text>
+ <ogo:position>(62 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>29</ogo:name>
+ <ogo:text>29</ogo:text>
+ <ogo:position>(87 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>WR</ogo:text>
+ <ogo:position>(62 235)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(87 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>INTA</ogo:text>
+ <ogo:position>(54 245)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(87 250)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>DEN</ogo:text>
+ <ogo:position>(56 255)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-20 275)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>8088</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %40 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>8088 MAX</ogo:name>
+ <ogo:symbol>8088</ogo:symbol>
+ <ogo:description>Microprocessor</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CLK</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RDY</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RST</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>33</ogo:name>
+ <ogo:text>33</ogo:text>
+ <ogo:position>(-17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MN|MX</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>INTR</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>NMI</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>GT0</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>GT1</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>34</ogo:name>
+ <ogo:text>34</ogo:text>
+ <ogo:position>(-17 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>HIGH</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TEST</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-17 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S1</ogo:text>
+ <ogo:position>(2 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-17 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QS0</ogo:text>
+ <ogo:position>(2 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(-17 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S2</ogo:text>
+ <ogo:position>(2 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>40</ogo:name>
+ <ogo:text>40</ogo:text>
+ <ogo:position>(22 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(25 275)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(45 275)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(87 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AD0</ogo:text>
+ <ogo:position>(57 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(87 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AD1</ogo:text>
+ <ogo:position>(57 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(87 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AD2</ogo:text>
+ <ogo:position>(57 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(87 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AD3</ogo:text>
+ <ogo:position>(57 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(87 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AD4</ogo:text>
+ <ogo:position>(57 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(87 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AD5</ogo:text>
+ <ogo:position>(57 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(87 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AD6</ogo:text>
+ <ogo:position>(57 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(87 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AD7</ogo:text>
+ <ogo:position>(57 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(87 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(62 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(87 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A9</ogo:text>
+ <ogo:position>(62 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(87 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A10</ogo:text>
+ <ogo:position>(57 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(87 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A11</ogo:text>
+ <ogo:position>(57 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(87 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A12</ogo:text>
+ <ogo:position>(57 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(87 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A13</ogo:text>
+ <ogo:position>(57 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(87 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A14</ogo:text>
+ <ogo:position>(57 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>39</ogo:name>
+ <ogo:text>39</ogo:text>
+ <ogo:position>(87 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A15</ogo:text>
+ <ogo:position>(57 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>38</ogo:name>
+ <ogo:text>38</ogo:text>
+ <ogo:position>(87 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A16|S3</ogo:text>
+ <ogo:position>(42 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>37</ogo:name>
+ <ogo:text>37</ogo:text>
+ <ogo:position>(87 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A17|S4</ogo:text>
+ <ogo:position>(42 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>36</ogo:name>
+ <ogo:text>36</ogo:text>
+ <ogo:position>(87 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A18|S5</ogo:text>
+ <ogo:position>(42 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>35</ogo:name>
+ <ogo:text>35</ogo:text>
+ <ogo:position>(87 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A19|S6</ogo:text>
+ <ogo:position>(42 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(87 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RD</ogo:text>
+ <ogo:position>(62 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>29</ogo:name>
+ <ogo:text>29</ogo:text>
+ <ogo:position>(87 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>LOCK</ogo:text>
+ <ogo:position>(52 235)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(87 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QS1</ogo:text>
+ <ogo:position>(55 245)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(87 250)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S0</ogo:text>
+ <ogo:position>(62 255)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-20 275)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>8088</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %40 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+
+
+ </ogo:parts>
+</ogo:library>
diff --git a/data/libraries/default.oreglib b/data/libraries/default.oreglib
new file mode 100644
index 0000000..5cbfac8
--- /dev/null
+++ b/data/libraries/default.oreglib
@@ -0,0 +1,8962 @@
+<?xml version="1.0"?>
+<ogo:library xmlns:ogo="http://www.dtek.chalmers.se/~d4hult/oregano/v1">
+ <ogo:name>Default</ogo:name>
+ <ogo:description>modified by H. Bellesi</ogo:description>
+ <ogo:version>1.3</ogo:version>
+ <ogo:author>Richard Hult</ogo:author>
+ <ogo:last-updated>11-Oct-2004</ogo:last-updated>
+ <ogo:symbols>
+
+ <ogo:symbol>
+ <ogo:name>Model</ogo:name>
+ <ogo:objects>
+ <ogo:text>(0 5)Model:</ogo:text>
+ </ogo:objects>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>Include</ogo:name>
+ <ogo:objects>
+ <ogo:text>(0 5)Include:</ogo:text>
+ </ogo:objects>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>jumper4</ogo:name>
+ <ogo:objects>
+ <ogo:line>(10 0)(10 20)</ogo:line>
+ <ogo:line>(20 10)(13 10)(12 7)(10 7)(8 7)(7 10)(0 10)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10)</ogo:connection>
+ <ogo:connection>(20 10)</ogo:connection>
+ <ogo:connection>(10 0)</ogo:connection>
+ <ogo:connection>(10 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>jumper2</ogo:name>
+ <ogo:objects>
+ <ogo:line>(20 10)(13 10)(12 7)(10 7)(8 7)(7 10)(0 10)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10)</ogo:connection>
+ <ogo:connection>(20 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>antenna</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 15)(8 0)(-8 0)(0 15)(0 30)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 30 1)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>connection</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-1 -1)(1 1)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>resistor</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10)</ogo:line>
+ </ogo:objects>
+
+ <ogo:connections>
+ <ogo:connection>(0 10 1)</ogo:connection>
+ <ogo:connection>(40 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>resistor-var1</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10)</ogo:line>
+ <ogo:line>(20 6)(20 -10)</ogo:line>
+ <ogo:line>(17 0)(20 6)(23 0)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10 1)</ogo:connection>
+ <ogo:connection>(40 10 3)</ogo:connection>
+ <ogo:connection>(20 -10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>thermistor</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10)</ogo:line>
+ <ogo:line>(10 18)(30 2)</ogo:line>
+ <ogo:arc>(10 0)(30 20)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10 1)</ogo:connection>
+ <ogo:connection>(40 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>varistor</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10)</ogo:line>
+ <ogo:line>(7 18)(10 18)(30 2)(33 2)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10 1)</ogo:connection>
+ <ogo:connection>(40 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>resistor-var2</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10)</ogo:line>
+ <ogo:line>(10 18)(30 2)</ogo:line>
+ <ogo:line>(27 3)(30 2)(29 5)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10 1)</ogo:connection>
+ <ogo:connection>(40 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>resistor-pack8</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10)</ogo:line>
+ <ogo:line>(0 20)(10 20)(11 20)(13 16)(16 24)(19 16)(22 24)(25 16)(28 24)(30 20)(40 20)</ogo:line>
+ <ogo:line>(0 30)(10 30)(11 30)(13 26)(16 34)(19 26)(22 34)(25 26)(28 34)(30 30)(40 30)</ogo:line>
+ <ogo:line>(0 40)(10 40)(11 40)(13 36)(16 44)(19 36)(22 44)(25 36)(28 44)(30 40)(40 40)</ogo:line>
+ <ogo:line>(0 50)(10 50)(11 50)(13 46)(16 54)(19 46)(22 54)(25 46)(28 54)(30 50)(40 50)</ogo:line>
+ <ogo:line>(0 60)(10 60)(11 60)(13 56)(16 64)(19 56)(22 64)(25 56)(28 64)(30 60)(40 60)</ogo:line>
+ <ogo:line>(0 70)(10 70)(11 70)(13 66)(16 74)(19 66)(22 74)(25 66)(28 74)(30 70)(40 70)</ogo:line>
+ <ogo:line>(0 80)(10 80)(11 80)(13 76)(16 84)(19 76)(22 84)(25 76)(28 84)(30 80)(40 80)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10 1)</ogo:connection>
+ <ogo:connection>(0 20 2)</ogo:connection>
+ <ogo:connection>(0 30 3)</ogo:connection>
+ <ogo:connection>(0 40 4)</ogo:connection>
+ <ogo:connection>(0 50 5)</ogo:connection>
+ <ogo:connection>(0 60 6)</ogo:connection>
+ <ogo:connection>(0 70 7)</ogo:connection>
+ <ogo:connection>(0 80 8)</ogo:connection>
+ <ogo:connection>(40 10 16)</ogo:connection>
+ <ogo:connection>(40 20 15)</ogo:connection>
+ <ogo:connection>(40 30 14)</ogo:connection>
+ <ogo:connection>(40 40 13)</ogo:connection>
+ <ogo:connection>(40 50 12)</ogo:connection>
+ <ogo:connection>(40 60 11)</ogo:connection>
+ <ogo:connection>(40 70 10)</ogo:connection>
+ <ogo:connection>(40 80 9)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>resistor-pack8c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10)</ogo:line>
+ <ogo:line>(0 20)(10 20)(11 20)(13 16)(16 24)(19 16)(22 24)(25 16)(28 24)(30 20)(40 20)</ogo:line>
+ <ogo:line>(0 30)(10 30)(11 30)(13 26)(16 34)(19 26)(22 34)(25 26)(28 34)(30 30)(40 30)</ogo:line>
+ <ogo:line>(0 40)(10 40)(11 40)(13 36)(16 44)(19 36)(22 44)(25 36)(28 44)(30 40)(40 40)</ogo:line>
+ <ogo:line>(0 50)(10 50)(11 50)(13 46)(16 54)(19 46)(22 54)(25 46)(28 54)(30 50)(40 50)</ogo:line>
+ <ogo:line>(0 60)(10 60)(11 60)(13 56)(16 64)(19 56)(22 64)(25 56)(28 64)(30 60)(40 60)</ogo:line>
+ <ogo:line>(0 70)(10 70)(11 70)(13 66)(16 74)(19 66)(22 74)(25 66)(28 74)(30 70)(40 70)</ogo:line>
+ <ogo:line>(0 80)(10 80)(11 80)(13 76)(16 84)(19 76)(22 84)(25 76)(28 84)(30 80)(40 80)</ogo:line>
+ <ogo:line>(0 80)(0 0)(40 0)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(40 0 1)</ogo:connection>
+ <ogo:connection>(40 10 2)</ogo:connection>
+ <ogo:connection>(40 20 3)</ogo:connection>
+ <ogo:connection>(40 30 4)</ogo:connection>
+ <ogo:connection>(40 40 5)</ogo:connection>
+ <ogo:connection>(40 50 6)</ogo:connection>
+ <ogo:connection>(40 60 7)</ogo:connection>
+ <ogo:connection>(40 70 8)</ogo:connection>
+ <ogo:connection>(40 80 9)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>speaker</ogo:name>
+ <ogo:objects>
+ <ogo:line>(15 0)(15 10)(5 10)(5 0)(15 0)(25 -10)(25 20)(15 10)</ogo:line>
+ <ogo:line>(10 0)(10 -10)</ogo:line>
+ <ogo:line>(10 10)(10 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(10 -10 1)</ogo:connection>
+ <ogo:connection>(10 20 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>capacitor</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(13 10)</ogo:line>
+ <ogo:line>(13 5)(13 15)</ogo:line>
+ <ogo:line>(17 5)(17 15)</ogo:line>
+ <ogo:line>(17 10)(30 10)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>capacitor-var1</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(13 10)</ogo:line>
+ <ogo:line>(13 5)(13 15)</ogo:line>
+ <ogo:line>(20 5)(18 6.5)(17 10)(18 13.5)(20 15)</ogo:line>
+ <ogo:line>(17 6)(20 5)(19 8)</ogo:line>
+ <ogo:line>(17 10)(30 10)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>capacitor-var2</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(13 10)</ogo:line>
+ <ogo:line>(13 5)(13 15)</ogo:line>
+ <ogo:line>(17 5)(17 15)</ogo:line>
+ <ogo:line>(17 10)(30 10)</ogo:line>
+ <ogo:line>(10 5)(20 15)</ogo:line>
+ <ogo:line>(10 7)(10 5)(12 5)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>cpol</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(13 10)</ogo:line>
+ <ogo:line>(13 7)(13 13)</ogo:line>
+ <ogo:line>(12 4)(17 4)(17 16)(12 16)</ogo:line>
+ <ogo:line>(17 10)(30 10)</ogo:line>
+ <ogo:line>(5 5)(9 5)</ogo:line>
+ <ogo:line>(7 3)(7 7)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>crystal</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)</ogo:line>
+ <ogo:line>(10 7)(10 13)</ogo:line>
+ <ogo:line>(12 5)(18 5)(18 15)(12 15)(12 5)</ogo:line>
+ <ogo:line>(20 7)(20 13)</ogo:line>
+ <ogo:line>(20 10)(30 10)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+
+ <ogo:symbol>
+ <ogo:name>inductor</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(11 10)
+ (12.4 6.5)
+ (16.0 5.0)(19.6 6.5)(21.0 10)(19.0 14.0)(17.0 10)(18.4 6.5)(22.4 5.0)
+ (22.0 5.0)(25.6 6.5)(27.0 10)(25.0 14.0)(23.0 10)(24.4 6.5)(28.4 5.0)
+ (28.0 5.0)(31.6 6.5)(33.0 10)(31.0 14.0)(29.0 10)(30.4 6.5)(34.4 5.0)
+ (34.0 5.0)(37.6 6.5)(39.0 10)
+ (39 10)(50 10)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10 1)</ogo:connection>
+ <ogo:connection>(50 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>motor-stepper</ogo:name>
+ <ogo:objects>
+ <ogo:line>(60 10)(60 16)
+ (56.5 17.4)
+ (55 21)(56.5 24.6)(60 26)(64 24)(60 22)(56.5 23.4)(55 27.4)
+ (55 27)(56.5 30.6)(60 32)(64 30)(60 28)(56.5 29.4)(55 33.4)
+ (55 33)(56.5 36.6)(60 38)(64 36)(60 34)(56.5 35.4)(55 39.4)
+ (55 39)(56.5 42.6)(60 44)
+ (60 44)(60 50)</ogo:line>
+ <ogo:line>(10 60)(16 60)
+ (17.4 56.5)
+ (21 55)(24.6 56.5)(26 60)(24 64)(22 60)(23.4 56.5)(27.4 55)
+ (27 55)(30.6 56.5)(32 60)(30 64)(28 60)(29.4 56.5)(33.4 55)
+ (33 55)(36.6 56.5)(38 60)(36 64)(34 60)(35.4 56.5)(39.4 55)
+ (39 55)(42.6 56.5)(44 60)
+ (44 60)(50 60)</ogo:line>
+ <ogo:line>(60 10)(70 10)</ogo:line>
+ <ogo:line>(64 30)(70 30)</ogo:line>
+ <ogo:line>(60 50)(70 50)</ogo:line>
+ <ogo:line>(10 60)(10 70)</ogo:line>
+ <ogo:line>(30 64)(30 70)</ogo:line>
+ <ogo:line>(50 60)(50 70)</ogo:line>
+ <ogo:arc>(10 10)(50 50)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(70 10 1)</ogo:connection>
+ <ogo:connection>(70 30 2)</ogo:connection>
+ <ogo:connection>(70 50 3)</ogo:connection>
+ <ogo:connection>(10 70 4)</ogo:connection>
+ <ogo:connection>(30 70 5)</ogo:connection>
+ <ogo:connection>(50 70 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>motor-stepper2</ogo:name>
+ <ogo:objects>
+ <ogo:line>(60 10)(60 16)
+ (56.5 17.4)
+ (55 21)(56.5 24.6)(60 26)(64 24)(60 22)(56.5 23.4)(55 27.4)
+ (55 27)(56.5 30.6)(60 32)(64 30)(60 28)(56.5 29.4)(55 33.4)
+ (55 33)(56.5 36.6)(60 38)(64 36)(60 34)(56.5 35.4)(55 39.4)
+ (55 39)(56.5 42.6)(60 44)
+ (60 44)(60 50)</ogo:line>
+ <ogo:line>(10 60)(16 60)
+ (17.4 56.5)
+ (21 55)(24.6 56.5)(26 60)(24 64)(22 60)(23.4 56.5)(27.4 55)
+ (27 55)(30.6 56.5)(32 60)(30 64)(28 60)(29.4 56.5)(33.4 55)
+ (33 55)(36.6 56.5)(38 60)(36 64)(34 60)(35.4 56.5)(39.4 55)
+ (39 55)(42.6 56.5)(44 60)
+ (44 60)(50 60)</ogo:line>
+ <ogo:line>(60 10)(70 10)</ogo:line>
+ <ogo:line>(60 50)(70 50)</ogo:line>
+ <ogo:line>(10 60)(10 70)</ogo:line>
+ <ogo:line>(50 60)(50 70)</ogo:line>
+ <ogo:arc>(10 10)(50 50)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(70 10 1)</ogo:connection>
+ <ogo:connection>(70 50 2)</ogo:connection>
+ <ogo:connection>(10 70 3)</ogo:connection>
+ <ogo:connection>(50 70 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ <ogo:symbol>
+ <ogo:name>inductor-iron</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(11 10)
+ (12.4 6.5)
+ (16.0 5.0)(19.6 6.5)(21.0 10)(19.0 14.0)(17.0 10)(18.4 6.5)(22.4 5.0)
+ (22.0 5.0)(25.6 6.5)(27.0 10)(25.0 14.0)(23.0 10)(24.4 6.5)(28.4 5.0)
+ (28.0 5.0)(31.6 6.5)(33.0 10)(31.0 14.0)(29.0 10)(30.4 6.5)(34.4 5.0)
+ (34.0 5.0)(37.6 6.5)(39.0 10)
+ (39 10)(50 10)</ogo:line>
+ <ogo:line>(11 3)(39 3)</ogo:line>
+ <ogo:line>(11 1)(39 1)</ogo:line>
+ <ogo:line>(11 -1)(39 -1)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10 1)</ogo:connection>
+ <ogo:connection>(50 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>transformer</ogo:name>
+ <ogo:objects>
+ <ogo:line>(10 0)(10 11)
+ (13.5 12.4)
+ (15.0 16.0)(13.5 19.6)(10 21.0)(6.0 19.0)(10 17.0)(13.5 18.4)(15.0 22.4)
+ (15.0 22.0)(13.5 25.6)(10 27.0)(6.0 25.0)(10 23.0)(13.5 24.4)(15.0 28.4)
+ (15.0 28.0)(13.5 31.6)(10 33.0)(6.0 31.0)(10 29.0)(13.5 30.4)(15.0 34.4)
+ (15.0 34.0)(13.5 37.6)(10 39.0)
+ (10 39)(10 50)</ogo:line>
+ <ogo:line>(30 0)(30 11)
+ (26.5 12.4)
+ (25.0 16.0)(26.5 19.6)(30 21.0)(34.0 19.0)(30 17.0)(26.5 18.4)(25.0 22.4)
+ (25.0 22.0)(26.5 25.6)(30 27.0)(34.0 25.0)(30 23.0)(26.5 24.4)(25.0 28.4)
+ (25.0 28.0)(26.5 31.6)(30 33.0)(34.0 31.0)(30 29.0)(26.5 30.4)(25.0 34.4)
+ (25.0 34.0)(26.5 37.6)(30 39.0)
+ (26.5 52.4)
+ (30 39)(30 50)</ogo:line>
+ <ogo:line>(22 11)(22 39)</ogo:line>
+ <ogo:line>(20 11)(20 39)</ogo:line>
+ <ogo:line>(18 11)(18 39)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(10 0 1)</ogo:connection>
+ <ogo:connection>(10 50 2)</ogo:connection>
+ <ogo:connection>(30 0 3)</ogo:connection>
+ <ogo:connection>(30 50 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>transformer2</ogo:name>
+ <ogo:objects>
+ <ogo:line>(10 0)(10 11)
+ (13.5 12.4)
+ (15.0 16.0)(13.5 19.6)(10 21.0)(6.0 19.0)(10 17.0)(13.5 18.4)(15.0 22.4)
+ (15.0 22.0)(13.5 25.6)(10 27.0)(6.0 25.0)(10 23.0)(13.5 24.4)(15.0 28.4)
+ (15.0 28.0)(13.5 31.6)(10 33.0)(6.0 31.0)(10 29.0)(13.5 30.4)(15.0 34.4)
+ (15.0 34.0)(13.5 37.6)(10 39.0)
+ (10 39)(10 50)</ogo:line>
+ <ogo:line>(30 0)(30 11)
+ (26.5 12.4)
+ (25.0 16.0)(26.5 19.6)(30 21.0)(34.0 19.0)(30 17.0)(26.5 18.4)(25.0 22.4)
+ (25.0 22.0)(26.5 25.6)(30 27.0)(34.0 25.0)(30 23.0)(26.5 24.4)(25.0 28.4)
+ (25.0 28.0)(26.5 31.6)(30 33.0)(34.0 31.0)(30 29.0)(26.5 30.4)(25.0 34.4)
+ (25.0 34.0)(26.5 37.6)(30 40.0)
+ (26.5 42.4)
+ (25.0 46.0)(26.5 49.6)(30 51.0)(34.0 49.0)(30 47.0)(26.5 48.4)(25.0 52.4)
+ (25.0 52.0)(26.5 55.6)(30 57.0)(34.0 55.0)(30 53.0)(26.5 54.4)(25.0 58.4)
+ (25.0 58.0)(26.5 61.6)(30 63.0)(34.0 61.0)(30 59.0)(26.5 60.4)(25.0 64.4)
+ (25.0 64.0)(26.5 67.6)(30 69.0)
+ (30 69)(30 80)</ogo:line>
+ <ogo:line>(30 40)(50 40)</ogo:line>
+ <ogo:line>(22 11)(22 69)</ogo:line>
+ <ogo:line>(20 11)(20 69)</ogo:line>
+ <ogo:line>(18 11)(18 69)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(10 0 1)</ogo:connection>
+ <ogo:connection>(10 50 2)</ogo:connection>
+ <ogo:connection>(30 0 3)</ogo:connection>
+ <ogo:connection>(50 40 4)</ogo:connection>
+ <ogo:connection>(30 80 5)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>diode</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)</ogo:line>
+ <ogo:line>(10 5)(10 15)(20 10)(10 5)</ogo:line>
+ <ogo:line>(20 5)(20 15)</ogo:line>
+ <ogo:line>(20 10)(30 10)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>d_tunnel</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)</ogo:line>
+ <ogo:line>(10 5)(10 15)(20 10)(10 5)</ogo:line>
+ <ogo:line>(15 5)(20 5)(20 15)</ogo:line>
+ <ogo:line>(20 10)(30 10)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>photodiode</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)</ogo:line>
+ <ogo:line>(10 5)(10 15)(20 10)(10 5)</ogo:line>
+ <ogo:line>(20 5)(20 15)</ogo:line>
+ <ogo:line>(23 7)(30 0)(30 5)(35 0)</ogo:line>
+ <ogo:line>(24 4)(23 7)(26 6)</ogo:line>
+ <ogo:line>(20 10)(30 10)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>varactor</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)</ogo:line>
+ <ogo:line>(10 3)(10 17)(20 10)(10 3)</ogo:line>
+ <ogo:line>(20 3)(20 17)</ogo:line>
+ <ogo:line>(23 3)(23 17)</ogo:line>
+ <ogo:line>(23 10)(30 10)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>schottky</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)</ogo:line>
+ <ogo:line>(10 3)(10 17)(20 10)(10 3)</ogo:line>
+ <ogo:line>(17 6)(17 3)(20 3)(20 17)(23 17)(23 14)</ogo:line>
+ <ogo:line>(20 10)(30 10)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ <ogo:symbol>
+ <ogo:name>zener</ogo:name>
+ <ogo:objects>
+ <ogo:line>(12 5)(12 15)(20 10)(12 5)</ogo:line>
+ <ogo:line>(10 10)(12 10)</ogo:line>
+ <ogo:line>(20 5)(20 15)</ogo:line>
+ <ogo:line>(20 15)(23 17)</ogo:line>
+ <ogo:line>(17 3)(20 5)</ogo:line>
+ <ogo:line>(20 10)(30 10)</ogo:line>
+ <ogo:line>(10 10)(0 10)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(30 10 1)</ogo:connection>
+ <ogo:connection>(0 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>JFET-P</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 20)(10 20)</ogo:line>
+ <ogo:line>(7 15)(2 20)(7 25)</ogo:line>
+ <ogo:line>(10 10)(10 30)</ogo:line>
+ <ogo:line>(20 0)(20 13)(10 13)</ogo:line>
+ <ogo:line>(20 40)(20 27)(10 27)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(20 0 1)</ogo:connection>
+ <ogo:connection>(0 20 2)</ogo:connection>
+ <ogo:connection>(20 40 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>JFET-N</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 20)(10 20)</ogo:line>
+ <ogo:line>(5 15)(10 20)(5 25)</ogo:line>
+ <ogo:line>(10 10)(10 30)</ogo:line>
+ <ogo:line>(20 0)(20 13)(10 13)</ogo:line>
+ <ogo:line>(20 40)(20 27)(10 27)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(20 0 1)</ogo:connection>
+ <ogo:connection>(0 20 2)</ogo:connection>
+ <ogo:connection>(20 40 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>UJT</ogo:name>
+ <ogo:objects>
+ <ogo:line>(-10 30)(0 30)(10 20)</ogo:line>
+ <ogo:line>(5 22)(10 20)(8 25)</ogo:line>
+ <ogo:line>(10 10)(10 30)</ogo:line>
+ <ogo:line>(20 0)(20 13)(10 13)</ogo:line>
+ <ogo:line>(20 40)(20 27)(10 27)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(20 0 1)</ogo:connection>
+ <ogo:connection>(-10 30 2)</ogo:connection>
+ <ogo:connection>(20 40 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>PNP</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 20)(10 20)</ogo:line>
+ <ogo:line>(10 10)(10 30)</ogo:line>
+ <ogo:line>(20 0)(20 10)(10 20)(20 30)(20 40)</ogo:line>
+ <ogo:line>(18 23)(13 23)(13 28)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(20 0 1)</ogo:connection>
+ <ogo:connection>(0 20 2)</ogo:connection>
+ <ogo:connection>(20 40 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>NPN</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 20)(10 20)</ogo:line>
+ <ogo:line>(10 10)(10 30)</ogo:line>
+ <ogo:line>(20 0)(20 10)(10 20)(20 30)(20 40)</ogo:line>
+ <ogo:line>(18 23)(18 28)(13 28)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(20 0 1)</ogo:connection>
+ <ogo:connection>(0 20 2)</ogo:connection>
+ <ogo:connection>(20 40 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>NPN-D</ogo:name>
+ <ogo:objects>
+ <ogo:line>(20 -10)(20 0)(0 0)(-10 10)(0 20)</ogo:line>
+ <ogo:line>(-2 13)(-2 18)(-7 18)</ogo:line>
+ <ogo:line>(-20 10)(-10 10)</ogo:line>
+ <ogo:line>(-10 0)(-10 20)</ogo:line>
+ <ogo:line>(0 20)(10 20)</ogo:line>
+ <ogo:line>(10 10)(10 30)</ogo:line>
+ <ogo:line>(20 0)(20 10)(10 20)(20 30)(20 40)</ogo:line>
+ <ogo:line>(18 23)(18 28)(13 28)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(20 -10 1)</ogo:connection>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(20 40 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>PNP-D</ogo:name>
+ <ogo:objects>
+ <ogo:line>(20 -10)(20 0)(0 0)(-10 10)(0 20)</ogo:line>
+ <ogo:line>(-7 18)(-7 13)(-2 13)</ogo:line>
+ <ogo:line>(-20 10)(-10 10)</ogo:line>
+ <ogo:line>(-10 0)(-10 20)</ogo:line>
+ <ogo:line>(0 20)(10 20)</ogo:line>
+ <ogo:line>(10 10)(10 30)</ogo:line>
+ <ogo:line>(20 0)(20 10)(10 20)(20 30)(20 40)</ogo:line>
+ <ogo:line>(13 28)(13 23)(18 23)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(20 -10 1)</ogo:connection>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(20 40 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>NPN-PHOTO</ogo:name>
+ <ogo:objects>
+ <ogo:line>(-3 10)(3 15)(3 10)(8 15) (8 12)</ogo:line>
+ <ogo:line>(8 15)(5 15)</ogo:line>
+ <ogo:line>(-3 20)(3 25)(3 20)(8 25) (8 22)</ogo:line>
+ <ogo:line>(8 25)(5 25)</ogo:line>
+ <ogo:line>(10 10)(10 30)</ogo:line>
+ <ogo:line>(20 0)(20 10)(10 20)(20 30)(20 40)</ogo:line>
+ <ogo:line>(18 23)(18 28)(13 28)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(20 0 1)</ogo:connection>
+ <ogo:connection>(20 40 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>PNP-PHOTO</ogo:name>
+ <ogo:objects>
+ <ogo:line>(-3 10)(3 15)(3 10)(8 15) (8 12)</ogo:line>
+ <ogo:line>(8 15)(5 15)</ogo:line>
+ <ogo:line>(-3 20)(3 25)(3 20)(8 25) (8 22)</ogo:line>
+ <ogo:line>(8 25)(5 25)</ogo:line>
+ <ogo:line>(10 10)(10 30)</ogo:line>
+ <ogo:line>(20 0)(20 10)(10 20)(20 30)(20 40)</ogo:line>
+ <ogo:line>(18 23)(13 23)(13 28)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(20 0 1)</ogo:connection>
+ <ogo:connection>(20 40 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>optoisolator</ogo:name>
+ <ogo:objects>
+ <ogo:line>(-3 10)(3 15)(3 10)(8 15) (8 12)</ogo:line>
+ <ogo:line>(8 15)(5 15)</ogo:line>
+ <ogo:line>(-3 20)(3 25)(3 20)(8 25) (8 22)</ogo:line>
+ <ogo:line>(8 25)(5 25)</ogo:line>
+ <ogo:line>(10 10)(10 30)</ogo:line>
+ <ogo:line>(20 0)(20 10)(10 20)(20 30)(20 40)</ogo:line>
+ <ogo:line>(18 23)(18 28)(13 28)</ogo:line>
+ <ogo:line>(-20 0)(-20 15)</ogo:line>
+ <ogo:line>(-26 15)(-14 15)(-20 25)(-26 15)</ogo:line>
+ <ogo:line>(-26 25)(-14 25)</ogo:line>
+ <ogo:line>(-20 25)(-20 40)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(20 0 1)</ogo:connection>
+ <ogo:connection>(20 40 2)</ogo:connection>
+ <ogo:connection>(-20 0 3)</ogo:connection>
+ <ogo:connection>(-20 40 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>N-MOS</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 20)(15 20)</ogo:line>
+ <ogo:line>(15 10)(15 30)</ogo:line>
+ <ogo:line>(20 30)(30 30)(30 40)</ogo:line>
+ <ogo:line>(20 10)(30 10)(30 0)</ogo:line>
+ <ogo:line>(20 20)(25 24)</ogo:line>
+ <ogo:line>(25 16)(20 20)(40 20)(40 40)</ogo:line>
+ <ogo:line>(20 7)(20 13)</ogo:line>
+ <ogo:line>(20 17)(20 23)</ogo:line>
+ <ogo:line>(20 27)(20 33)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(30 0 1)</ogo:connection>
+ <ogo:connection>(0 20 2)</ogo:connection>
+ <ogo:connection>(30 40 3)</ogo:connection>
+ <ogo:connection>(40 40 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>P-MOS</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 20)(15 20)</ogo:line>
+ <ogo:line>(15 10)(15 30)</ogo:line>
+ <ogo:line>(20 30)(30 30)(30 40)</ogo:line>
+ <ogo:line>(20 10)(30 10)(30 0)</ogo:line>
+ <ogo:line>(30 20)(25 24)</ogo:line>
+ <ogo:line>(25 16)(30 20)</ogo:line>
+ <ogo:line>(20 20)(40 20)(40 40)</ogo:line>
+ <ogo:line>(20 7)(20 13)</ogo:line>
+ <ogo:line>(20 17)(20 23)</ogo:line>
+ <ogo:line>(20 27)(20 33)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(30 0 1)</ogo:connection>
+ <ogo:connection>(0 20 2)</ogo:connection>
+ <ogo:connection>(30 40 3)</ogo:connection>
+ <ogo:connection>(40 40 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>DGN-MOS</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(15 10)</ogo:line>
+ <ogo:line>(0 30)(15 30)</ogo:line>
+ <ogo:line>(15 7)(15 17)</ogo:line>
+ <ogo:line>(15 23)(15 33)</ogo:line>
+ <ogo:line>(20 30)(30 30)(30 40)</ogo:line>
+ <ogo:line>(20 10)(30 10)(30 0)</ogo:line>
+ <ogo:line>(20 20)(25 24)</ogo:line>
+ <ogo:line>(25 16)(20 20)(30 20)(30 30)</ogo:line>
+ <ogo:line>(20 7)(20 33)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(30 0 1)</ogo:connection>
+ <ogo:connection>(0 10 2)</ogo:connection>
+ <ogo:connection>(30 40 3)</ogo:connection>
+ <ogo:connection>(0 30 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>DGP-MOS</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(15 10)</ogo:line>
+ <ogo:line>(0 30)(15 30)</ogo:line>
+ <ogo:line>(15 7)(15 17)</ogo:line>
+ <ogo:line>(15 23)(15 33)</ogo:line>
+ <ogo:line>(20 30)(30 30)(30 40)</ogo:line>
+ <ogo:line>(20 10)(30 10)(30 0)</ogo:line>
+
+ <ogo:line>(30 20)(25 24)</ogo:line>
+ <ogo:line>(25 16)(30 20)</ogo:line>
+ <ogo:line>(20 20)(30 20)(30 30)</ogo:line>
+ <ogo:line>(20 7)(20 33)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(30 0 1)</ogo:connection>
+ <ogo:connection>(0 10 2)</ogo:connection>
+ <ogo:connection>(30 40 3)</ogo:connection>
+ <ogo:connection>(0 30 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ <ogo:symbol>
+ <ogo:name>OPAMP</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(30 20)(0 0)</ogo:line>
+ <ogo:line>(-10 10)(0 10)</ogo:line>
+ <ogo:line>(-10 30)(0 30)</ogo:line>
+ <ogo:line>(30 20)(40 20)</ogo:line>
+
+ <ogo:line>(5 10)(10 10)</ogo:line>
+ <ogo:line>(5 30)(10 30)</ogo:line>
+ <ogo:line>(7.5 27.5)(7.5 32.5)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(40 20 6)</ogo:connection>
+ <ogo:connection>(-10 10 2)</ogo:connection>
+ <ogo:connection>(-10 30 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>Ground</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 15)</ogo:line>
+ <ogo:line>(-7.5 15)(7.5 15)</ogo:line>
+ <ogo:line>(-5 18)(5 18)</ogo:line>
+ <ogo:line>(-2.5 21)(2.5 21)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>Point</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(2 -5)</ogo:line>
+ <ogo:line>(2 -5)(5 -2)</ogo:line>
+ <ogo:line>(5 -2)(0 0)</ogo:line>
+ <ogo:line>(5 -2)(15 -12)</ogo:line>
+ <ogo:line>(2 -5)(12 -15)</ogo:line>
+ <ogo:line>(12 -15)(15 -12)</ogo:line>
+ <ogo:arc>(12 -24)(24 -12)</ogo:arc>
+ <!-- V Simbol -->
+ <ogo:line>(18 -14)(14 -21)</ogo:line>
+ <ogo:line>(18 -14)(22 -21)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>Triode</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(15 -25)(65 25)</ogo:arc>
+
+ <ogo:line>(0 0)(20 0)</ogo:line>
+ <ogo:line>(25 0)(30 0)</ogo:line>
+ <ogo:line>(35 0)(40 0)</ogo:line>
+ <ogo:line>(45 0)(50 0)</ogo:line>
+ <ogo:line>(55 0)(60 0)</ogo:line>
+
+ <ogo:line>(40 -10)(40 -40)</ogo:line>
+ <ogo:line>(30 -10)(50 -10)</ogo:line>
+
+ <ogo:line>(30 8)(50 8)(60 15)(60 40)</ogo:line>
+
+ <ogo:line>(30 40)(30 20)(40 13)(50 20)(50 40)</ogo:line>
+ <ogo:line>(40 13)(40 40)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(40 -40 1)</ogo:connection>
+ <ogo:connection>(0 0 2)</ogo:connection>
+ <ogo:connection>(60 40 3)</ogo:connection>
+ <ogo:connection>(30 40 4)</ogo:connection>
+ <ogo:connection>(40 40 9)</ogo:connection>
+ <ogo:connection>(50 40 5)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>Triode2</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(15 -25)(65 25)</ogo:arc>
+
+ <ogo:line>(0 0)(20 0)</ogo:line>
+ <ogo:line>(25 0)(30 0)</ogo:line>
+ <ogo:line>(35 0)(40 0)</ogo:line>
+ <ogo:line>(45 0)(50 0)</ogo:line>
+ <ogo:line>(55 0)(60 0)</ogo:line>
+
+ <ogo:line>(40 -10)(40 -40)</ogo:line>
+ <ogo:line>(30 -10)(50 -10)</ogo:line>
+
+ <ogo:line>(30 8)(50 8)(60 15)(60 40)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(40 -40 6)</ogo:connection>
+ <ogo:connection>(0 0 7)</ogo:connection>
+ <ogo:connection>(60 40 8)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>Pentode</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(10 -30)(70 30)</ogo:arc>
+ <ogo:line>(25 -10)(30 -10)</ogo:line>
+ <ogo:line>(35 -10)(40 -10)</ogo:line>
+ <ogo:line>(45 -10)(50 -10)</ogo:line>
+ <ogo:line>(55 -10)(60 -10)</ogo:line>
+ <ogo:line>(60 -10)(63 -5)(63 13)</ogo:line>
+ <ogo:line>(63 13)(55 18)</ogo:line>
+ <ogo:line>(66 0)(90 0)</ogo:line>
+ <ogo:line>(25 0)(30 0)</ogo:line>
+ <ogo:line>(35 0)(40 0)</ogo:line>
+ <ogo:line>(45 0)(50 0)</ogo:line>
+ <ogo:line>(55 0)(60 0)</ogo:line>
+ <ogo:line>(-10 10)(20 10)</ogo:line>
+ <ogo:line>(25 10)(30 10)</ogo:line>
+ <ogo:line>(35 10)(40 10)</ogo:line>
+ <ogo:line>(45 10)(50 10)</ogo:line>
+ <ogo:line>(55 10)(60 10)</ogo:line>
+ <ogo:line>(40 -20)(40 -50)</ogo:line>
+ <ogo:line>(25 -20)(55 -20)</ogo:line>
+ <ogo:line>(25 18)(55 18)(60 20)(60 50)</ogo:line>
+ <ogo:line>(30 50)(30 28)(40 23)(50 28)(50 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(40 -50 7)</ogo:connection>
+ <ogo:connection>(90 0 9)</ogo:connection>
+ <ogo:connection>(-10 10 2)</ogo:connection>
+ <ogo:connection>(60 50 3)</ogo:connection>
+ <ogo:connection>(30 50 4)</ogo:connection>
+ <ogo:connection>(50 50 5)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>VSIN</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(0 10)(20 30)</ogo:arc>
+ <ogo:line>(10 0)(10 10)</ogo:line>
+ <ogo:line>(10 30)(10 40)</ogo:line>
+
+ <ogo:line>(10 12)(10 18)</ogo:line>
+ <ogo:line>(7 15)(13 15)</ogo:line>
+
+ <ogo:line>(7 25)(13 25)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(10 0 1)</ogo:connection>
+ <ogo:connection>(10 40 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>ISIN</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(0 10)(20 30)</ogo:arc>
+ <ogo:line>(10 0)(10 10)</ogo:line>
+ <ogo:line>(10 30)(10 40)</ogo:line>
+
+ <ogo:line>(10 12)(10 28)</ogo:line>
+ <ogo:line>(10 12)(7 18)</ogo:line>
+ <ogo:line>(10 12)(13 18)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(10 40 1)</ogo:connection>
+ <ogo:connection>(10 0 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>VPULSE</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(0 10)(20 30)</ogo:arc>
+ <ogo:line>(10 0)(10 10)</ogo:line>
+ <ogo:line>(10 30)(10 40)</ogo:line>
+
+ <ogo:line>(10 11)(10 17)</ogo:line>
+ <ogo:line>(7 14)(13 14)</ogo:line>
+
+ <ogo:line>(4 25)(6 25)(8 18)(12 18)(14 25)(17 25)</ogo:line>
+
+ <ogo:line>(7 27)(13 27)</ogo:line>
+
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(10 0 1)</ogo:connection>
+ <ogo:connection>(10 40 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>CCVS</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(0 10)(20 30)</ogo:arc>
+ <ogo:line>(10 0)(10 10)</ogo:line>
+ <ogo:line>(10 30)(10 40)</ogo:line>
+
+ <ogo:line>(10 11)(10 17)</ogo:line>
+ <ogo:line>(7 14)(13 14)</ogo:line>
+
+ <ogo:line>(7 27)(13 27)</ogo:line>
+ <ogo:line>(0 30)(20 10)</ogo:line>
+ <ogo:line>(20 10)(20 15)</ogo:line>
+ <ogo:line>(20 10)(15 10)</ogo:line>
+
+
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(10 0 1)</ogo:connection>
+ <ogo:connection>(10 40 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>VCVS</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(0 10)(20 30)</ogo:arc>
+ <ogo:line>(10 0)(10 10)</ogo:line>
+ <ogo:line>(10 30)(10 40)</ogo:line>
+
+ <ogo:line>(10 11)(10 17)</ogo:line>
+ <ogo:line>(7 14)(13 14)</ogo:line>
+
+ <ogo:line>(7 27)(13 27)</ogo:line>
+ <ogo:line>(0 30)(20 10)</ogo:line>
+ <ogo:line>(20 10)(20 15)</ogo:line>
+ <ogo:line>(20 10)(15 10)</ogo:line>
+
+
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(10 0 1)</ogo:connection>
+ <ogo:connection>(10 40 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>VCCS</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(0 10)(20 30)</ogo:arc>
+ <ogo:line>(10 0)(10 10)</ogo:line>
+ <ogo:line>(10 30)(10 40)</ogo:line>
+
+ <ogo:line>(10 12)(10 28)</ogo:line>
+ <ogo:line>(10 12)(7 18)</ogo:line>
+ <ogo:line>(10 12)(13 18)</ogo:line>
+
+ <ogo:line>(0 30)(20 10)</ogo:line>
+ <ogo:line>(20 10)(20 15)</ogo:line>
+ <ogo:line>(20 10)(15 10)</ogo:line>
+
+
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(10 40 1)</ogo:connection>
+ <ogo:connection>(10 0 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>CCCS</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(0 10)(20 30)</ogo:arc>
+ <ogo:line>(10 0)(10 10)</ogo:line>
+ <ogo:line>(10 30)(10 40)</ogo:line>
+
+ <ogo:line>(10 12)(10 28)</ogo:line>
+ <ogo:line>(10 12)(7 18)</ogo:line>
+ <ogo:line>(10 12)(13 18)</ogo:line>
+
+ <ogo:line>(0 30)(20 10)</ogo:line>
+ <ogo:line>(20 10)(20 15)</ogo:line>
+ <ogo:line>(20 10)(15 10)</ogo:line>
+
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(10 40 1)</ogo:connection>
+ <ogo:connection>(10 0 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>VDC</ogo:name>
+ <ogo:objects>
+ <ogo:line>(10 0)(10 11)</ogo:line>
+ <ogo:line>(-5 11)(25 11)</ogo:line>
+ <ogo:line>(2 17)(18 17)</ogo:line>
+ <ogo:line>(-5 23)(25 23)</ogo:line>
+ <ogo:line>(2 29)(18 29)</ogo:line>
+ <ogo:line>(10 29)(10 40)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(10 0 1)</ogo:connection>
+ <ogo:connection>(10 40 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>Marker</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(3 3)(-3 -3)</ogo:arc>
+ <ogo:line>(0 3)(0 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>MPR</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(5 -5)(50 -5)(50 5)(5 5)(0 0)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>MPL</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(-5 -5)(-50 -5)(-50 5)(-5 5)(0 0)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>MPB</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(5 -5)(45 -5)(50 0)(45 5)(5 5)(0 0)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>DB9</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(0 -3)(6 3)</ogo:arc>
+ <ogo:arc>(0 17)(6 23)</ogo:arc>
+ <ogo:arc>(0 37)(6 43)</ogo:arc>
+ <ogo:arc>(0 57)(6 63)</ogo:arc>
+ <ogo:arc>(10 -13)(16 -7)</ogo:arc>
+ <ogo:arc>(10 7)(16 13)</ogo:arc>
+ <ogo:arc>(10 27)(16 33)</ogo:arc>
+ <ogo:arc>(10 47)(16 53)</ogo:arc>
+ <ogo:arc>(10 67)(16 73)</ogo:arc>
+ <ogo:line>(6 0)(40 0)</ogo:line>
+ <ogo:line>(6 20)(40 20)</ogo:line>
+ <ogo:line>(6 40)(40 40)</ogo:line>
+ <ogo:line>(6 60)(40 60)</ogo:line>
+ <ogo:line>(16 -10)(40 -10)</ogo:line>
+ <ogo:line>(16 10)(40 10)</ogo:line>
+ <ogo:line>(16 30)(40 30)</ogo:line>
+ <ogo:line>(16 50)(40 50)</ogo:line>
+ <ogo:line>(16 70)(40 70)</ogo:line>
+ <ogo:line>(-5 -5)(10 -20)(15 -20)(20 -15)(20 75)(15 80)(10 80)(-5 65)(-5 -5)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(40 -10 1)</ogo:connection>
+ <ogo:connection>(40 0 6)</ogo:connection>
+ <ogo:connection>(40 10 2)</ogo:connection>
+ <ogo:connection>(40 20 7)</ogo:connection>
+ <ogo:connection>(40 30 3)</ogo:connection>
+ <ogo:connection>(40 40 8)</ogo:connection>
+ <ogo:connection>(40 50 4)</ogo:connection>
+ <ogo:connection>(40 60 9)</ogo:connection>
+ <ogo:connection>(40 70 5)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>DB15</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(0 -3)(6 3)</ogo:arc>
+ <ogo:arc>(0 17)(6 23)</ogo:arc>
+ <ogo:arc>(0 37)(6 43)</ogo:arc>
+ <ogo:arc>(0 57)(6 63)</ogo:arc>
+ <ogo:arc>(0 77)(6 83)</ogo:arc>
+ <ogo:arc>(0 97)(6 103)</ogo:arc>
+ <ogo:arc>(0 117)(6 123)</ogo:arc>
+ <ogo:arc>(10 -13)(16 -7)</ogo:arc>
+ <ogo:arc>(10 7)(16 13)</ogo:arc>
+ <ogo:arc>(10 27)(16 33)</ogo:arc>
+ <ogo:arc>(10 47)(16 53)</ogo:arc>
+ <ogo:arc>(10 67)(16 73)</ogo:arc>
+ <ogo:arc>(10 87)(16 93)</ogo:arc>
+ <ogo:arc>(10 107)(16 113)</ogo:arc>
+ <ogo:arc>(10 127)(16 133)</ogo:arc>
+ <ogo:line>(6 0)(40 0)</ogo:line>
+ <ogo:line>(6 20)(40 20)</ogo:line>
+ <ogo:line>(6 40)(40 40)</ogo:line>
+ <ogo:line>(6 60)(40 60)</ogo:line>
+ <ogo:line>(6 80)(40 80)</ogo:line>
+ <ogo:line>(6 100)(40 100)</ogo:line>
+ <ogo:line>(6 120)(40 120)</ogo:line>
+ <ogo:line>(16 -10)(40 -10)</ogo:line>
+ <ogo:line>(16 10)(40 10)</ogo:line>
+ <ogo:line>(16 30)(40 30)</ogo:line>
+ <ogo:line>(16 50)(40 50)</ogo:line>
+ <ogo:line>(16 70)(40 70)</ogo:line>
+ <ogo:line>(16 90)(40 90)</ogo:line>
+ <ogo:line>(16 110)(40 110)</ogo:line>
+ <ogo:line>(16 130)(40 130)</ogo:line>
+ <ogo:line>(-5 -5)(10 -20)(15 -20)(20 -15)(20 135)(15 140)(10 140)(-5 125)(-5 -5)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(40 -10 1)</ogo:connection>
+ <ogo:connection>(40 0 9)</ogo:connection>
+ <ogo:connection>(40 10 2)</ogo:connection>
+ <ogo:connection>(40 20 10)</ogo:connection>
+ <ogo:connection>(40 30 3)</ogo:connection>
+ <ogo:connection>(40 40 11)</ogo:connection>
+ <ogo:connection>(40 50 4)</ogo:connection>
+ <ogo:connection>(40 60 12)</ogo:connection>
+ <ogo:connection>(40 70 5)</ogo:connection>
+ <ogo:connection>(40 80 13)</ogo:connection>
+ <ogo:connection>(40 90 6)</ogo:connection>
+ <ogo:connection>(40 100 14)</ogo:connection>
+ <ogo:connection>(40 110 7)</ogo:connection>
+ <ogo:connection>(40 120 15)</ogo:connection>
+ <ogo:connection>(40 130 8)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>DB25</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(0 -3)(6 3)</ogo:arc>
+ <ogo:arc>(0 17)(6 23)</ogo:arc>
+ <ogo:arc>(0 37)(6 43)</ogo:arc>
+ <ogo:arc>(0 57)(6 63)</ogo:arc>
+ <ogo:arc>(0 77)(6 83)</ogo:arc>
+ <ogo:arc>(0 97)(6 103)</ogo:arc>
+ <ogo:arc>(0 117)(6 123)</ogo:arc>
+ <ogo:arc>(0 137)(6 143)</ogo:arc>
+ <ogo:arc>(0 157)(6 163)</ogo:arc>
+ <ogo:arc>(0 177)(6 183)</ogo:arc>
+ <ogo:arc>(0 197)(6 203)</ogo:arc>
+ <ogo:arc>(0 217)(6 223)</ogo:arc>
+ <ogo:arc>(10 -13)(16 -7)</ogo:arc>
+ <ogo:arc>(10 7)(16 13)</ogo:arc>
+ <ogo:arc>(10 27)(16 33)</ogo:arc>
+ <ogo:arc>(10 47)(16 53)</ogo:arc>
+ <ogo:arc>(10 67)(16 73)</ogo:arc>
+ <ogo:arc>(10 87)(16 93)</ogo:arc>
+ <ogo:arc>(10 107)(16 113)</ogo:arc>
+ <ogo:arc>(10 127)(16 133)</ogo:arc>
+ <ogo:arc>(10 147)(16 153)</ogo:arc>
+ <ogo:arc>(10 167)(16 173)</ogo:arc>
+ <ogo:arc>(10 187)(16 193)</ogo:arc>
+ <ogo:arc>(10 207)(16 213)</ogo:arc>
+ <ogo:arc>(10 227)(16 233)</ogo:arc>
+ <ogo:line>(6 0)(40 0)</ogo:line>
+ <ogo:line>(6 20)(40 20)</ogo:line>
+ <ogo:line>(6 40)(40 40)</ogo:line>
+ <ogo:line>(6 60)(40 60)</ogo:line>
+ <ogo:line>(6 80)(40 80)</ogo:line>
+ <ogo:line>(6 100)(40 100)</ogo:line>
+ <ogo:line>(6 120)(40 120)</ogo:line>
+ <ogo:line>(6 140)(40 140)</ogo:line>
+ <ogo:line>(6 160)(40 160)</ogo:line>
+ <ogo:line>(6 180)(40 180)</ogo:line>
+ <ogo:line>(6 200)(40 200)</ogo:line>
+ <ogo:line>(6 220)(40 220)</ogo:line>
+ <ogo:line>(16 -10)(40 -10)</ogo:line>
+ <ogo:line>(16 10)(40 10)</ogo:line>
+ <ogo:line>(16 30)(40 30)</ogo:line>
+ <ogo:line>(16 50)(40 50)</ogo:line>
+ <ogo:line>(16 70)(40 70)</ogo:line>
+ <ogo:line>(16 90)(40 90)</ogo:line>
+ <ogo:line>(16 110)(40 110)</ogo:line>
+ <ogo:line>(16 130)(40 130)</ogo:line>
+ <ogo:line>(16 150)(40 150)</ogo:line>
+ <ogo:line>(16 170)(40 170)</ogo:line>
+ <ogo:line>(16 190)(40 190)</ogo:line>
+ <ogo:line>(16 210)(40 210)</ogo:line>
+ <ogo:line>(16 230)(40 230)</ogo:line>
+ <ogo:line>(-5 -5)(10 -20)(15 -20)(20 -15)(20 235)(15 240)(10 240)(-5 225)(-5 -5)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(40 -10 1)</ogo:connection>
+ <ogo:connection>(40 0 14)</ogo:connection>
+ <ogo:connection>(40 10 2)</ogo:connection>
+ <ogo:connection>(40 20 15)</ogo:connection>
+ <ogo:connection>(40 30 3)</ogo:connection>
+ <ogo:connection>(40 40 16)</ogo:connection>
+ <ogo:connection>(40 50 4)</ogo:connection>
+ <ogo:connection>(40 60 17)</ogo:connection>
+ <ogo:connection>(40 70 5)</ogo:connection>
+ <ogo:connection>(40 80 18)</ogo:connection>
+ <ogo:connection>(40 90 6)</ogo:connection>
+ <ogo:connection>(40 100 19)</ogo:connection>
+ <ogo:connection>(40 110 7)</ogo:connection>
+ <ogo:connection>(40 120 20)</ogo:connection>
+ <ogo:connection>(40 130 8)</ogo:connection>
+ <ogo:connection>(40 140 21)</ogo:connection>
+ <ogo:connection>(40 150 9)</ogo:connection>
+ <ogo:connection>(40 160 22)</ogo:connection>
+ <ogo:connection>(40 170 10)</ogo:connection>
+ <ogo:connection>(40 180 23)</ogo:connection>
+ <ogo:connection>(40 190 11)</ogo:connection>
+ <ogo:connection>(40 200 24)</ogo:connection>
+ <ogo:connection>(40 210 12)</ogo:connection>
+ <ogo:connection>(40 220 25)</ogo:connection>
+ <ogo:connection>(40 230 13)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>DB37</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(0 -3)(6 3)</ogo:arc>
+ <ogo:arc>(0 17)(6 23)</ogo:arc>
+ <ogo:arc>(0 37)(6 43)</ogo:arc>
+ <ogo:arc>(0 57)(6 63)</ogo:arc>
+ <ogo:arc>(0 77)(6 83)</ogo:arc>
+ <ogo:arc>(0 97)(6 103)</ogo:arc>
+ <ogo:arc>(0 117)(6 123)</ogo:arc>
+ <ogo:arc>(0 137)(6 143)</ogo:arc>
+ <ogo:arc>(0 157)(6 163)</ogo:arc>
+ <ogo:arc>(0 177)(6 183)</ogo:arc>
+ <ogo:arc>(0 197)(6 203)</ogo:arc>
+ <ogo:arc>(0 217)(6 223)</ogo:arc>
+ <ogo:arc>(0 237)(6 243)</ogo:arc>
+ <ogo:arc>(0 257)(6 263)</ogo:arc>
+ <ogo:arc>(0 277)(6 283)</ogo:arc>
+ <ogo:arc>(0 297)(6 303)</ogo:arc>
+ <ogo:arc>(0 317)(6 323)</ogo:arc>
+ <ogo:arc>(0 337)(6 343)</ogo:arc>
+ <ogo:arc>(10 -13)(16 -7)</ogo:arc>
+ <ogo:arc>(10 7)(16 13)</ogo:arc>
+ <ogo:arc>(10 27)(16 33)</ogo:arc>
+ <ogo:arc>(10 47)(16 53)</ogo:arc>
+ <ogo:arc>(10 67)(16 73)</ogo:arc>
+ <ogo:arc>(10 87)(16 93)</ogo:arc>
+ <ogo:arc>(10 107)(16 113)</ogo:arc>
+ <ogo:arc>(10 127)(16 133)</ogo:arc>
+ <ogo:arc>(10 147)(16 153)</ogo:arc>
+ <ogo:arc>(10 167)(16 173)</ogo:arc>
+ <ogo:arc>(10 187)(16 193)</ogo:arc>
+ <ogo:arc>(10 207)(16 213)</ogo:arc>
+ <ogo:arc>(10 227)(16 233)</ogo:arc>
+ <ogo:arc>(10 247)(16 253)</ogo:arc>
+ <ogo:arc>(10 267)(16 273)</ogo:arc>
+ <ogo:arc>(10 287)(16 293)</ogo:arc>
+ <ogo:arc>(10 307)(16 313)</ogo:arc>
+ <ogo:arc>(10 327)(16 333)</ogo:arc>
+ <ogo:arc>(10 347)(16 353)</ogo:arc>
+ <ogo:line>(6 0)(40 0)</ogo:line>
+ <ogo:line>(6 20)(40 20)</ogo:line>
+ <ogo:line>(6 40)(40 40)</ogo:line>
+ <ogo:line>(6 60)(40 60)</ogo:line>
+ <ogo:line>(6 80)(40 80)</ogo:line>
+ <ogo:line>(6 100)(40 100)</ogo:line>
+ <ogo:line>(6 120)(40 120)</ogo:line>
+ <ogo:line>(6 140)(40 140)</ogo:line>
+ <ogo:line>(6 160)(40 160)</ogo:line>
+ <ogo:line>(6 180)(40 180)</ogo:line>
+ <ogo:line>(6 200)(40 200)</ogo:line>
+ <ogo:line>(6 220)(40 220)</ogo:line>
+ <ogo:line>(6 240)(40 240)</ogo:line>
+ <ogo:line>(6 260)(40 260)</ogo:line>
+ <ogo:line>(6 280)(40 280)</ogo:line>
+ <ogo:line>(6 300)(40 300)</ogo:line>
+ <ogo:line>(6 320)(40 320)</ogo:line>
+ <ogo:line>(6 340)(40 340)</ogo:line>
+ <ogo:line>(16 -10)(40 -10)</ogo:line>
+ <ogo:line>(16 10)(40 10)</ogo:line>
+ <ogo:line>(16 30)(40 30)</ogo:line>
+ <ogo:line>(16 50)(40 50)</ogo:line>
+ <ogo:line>(16 70)(40 70)</ogo:line>
+ <ogo:line>(16 90)(40 90)</ogo:line>
+ <ogo:line>(16 110)(40 110)</ogo:line>
+ <ogo:line>(16 130)(40 130)</ogo:line>
+ <ogo:line>(16 150)(40 150)</ogo:line>
+ <ogo:line>(16 170)(40 170)</ogo:line>
+ <ogo:line>(16 190)(40 190)</ogo:line>
+ <ogo:line>(16 210)(40 210)</ogo:line>
+ <ogo:line>(16 230)(40 230)</ogo:line>
+ <ogo:line>(16 250)(40 250)</ogo:line>
+ <ogo:line>(16 270)(40 270)</ogo:line>
+ <ogo:line>(16 290)(40 290)</ogo:line>
+ <ogo:line>(16 310)(40 310)</ogo:line>
+ <ogo:line>(16 330)(40 330)</ogo:line>
+ <ogo:line>(16 350)(40 350)</ogo:line>
+ <ogo:line>(-5 -5)(10 -20)(15 -20)(20 -15)(20 355)(15 360)(10 360)(-5 345)(-5 -5)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(40 -10 1)</ogo:connection>
+ <ogo:connection>(40 0 20)</ogo:connection>
+ <ogo:connection>(40 10 2)</ogo:connection>
+ <ogo:connection>(40 20 21)</ogo:connection>
+ <ogo:connection>(40 30 3)</ogo:connection>
+ <ogo:connection>(40 40 22)</ogo:connection>
+ <ogo:connection>(40 50 4)</ogo:connection>
+ <ogo:connection>(40 60 23)</ogo:connection>
+ <ogo:connection>(40 70 5)</ogo:connection>
+ <ogo:connection>(40 80 24)</ogo:connection>
+ <ogo:connection>(40 90 6)</ogo:connection>
+ <ogo:connection>(40 100 25)</ogo:connection>
+ <ogo:connection>(40 110 7)</ogo:connection>
+ <ogo:connection>(40 120 26)</ogo:connection>
+ <ogo:connection>(40 130 8)</ogo:connection>
+ <ogo:connection>(40 140 27)</ogo:connection>
+ <ogo:connection>(40 150 9)</ogo:connection>
+ <ogo:connection>(40 160 28)</ogo:connection>
+ <ogo:connection>(40 170 10)</ogo:connection>
+ <ogo:connection>(40 180 29)</ogo:connection>
+ <ogo:connection>(40 190 11)</ogo:connection>
+ <ogo:connection>(40 200 30)</ogo:connection>
+ <ogo:connection>(40 210 12)</ogo:connection>
+ <ogo:connection>(40 220 31)</ogo:connection>
+ <ogo:connection>(40 230 13)</ogo:connection>
+ <ogo:connection>(40 240 32)</ogo:connection>
+ <ogo:connection>(40 250 14)</ogo:connection>
+ <ogo:connection>(40 260 33)</ogo:connection>
+ <ogo:connection>(40 270 15)</ogo:connection>
+ <ogo:connection>(40 280 34)</ogo:connection>
+ <ogo:connection>(40 290 16)</ogo:connection>
+ <ogo:connection>(40 300 35)</ogo:connection>
+ <ogo:connection>(40 310 17)</ogo:connection>
+ <ogo:connection>(40 320 36)</ogo:connection>
+ <ogo:connection>(40 330 18)</ogo:connection>
+ <ogo:connection>(40 340 37)</ogo:connection>
+ <ogo:connection>(40 350 19)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>BNC</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(3 3)(-3 -3)</ogo:arc>
+ <ogo:arc>(9 9)(-9 -9)</ogo:arc>
+ <ogo:line>(3 0)(40 0)</ogo:line>
+ <ogo:line>(0 9)(0 40)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(40 0 1)</ogo:connection>
+ <ogo:connection>(0 40 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>H2x2</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-3 -3)(3 3)</ogo:arc>
+ <ogo:arc>(-3 7)(3 13)</ogo:arc>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:line>(-20 0)(-3 0)</ogo:line>
+ <ogo:line>(-20 10)(-3 10)</ogo:line>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 0 1)</ogo:connection>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(30 0 2)</ogo:connection>
+ <ogo:connection>(30 10 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>Hx2</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(30 0 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>H3x2</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-3 -3)(3 3)</ogo:arc>
+ <ogo:arc>(-3 7)(3 13)</ogo:arc>
+ <ogo:arc>(-3 17)(3 23)</ogo:arc>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:line>(-20 0)(-3 0)</ogo:line>
+ <ogo:line>(-20 10)(-3 10)</ogo:line>
+ <ogo:line>(-20 20)(-3 20)</ogo:line>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 0 1)</ogo:connection>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(30 0 2)</ogo:connection>
+ <ogo:connection>(30 10 4)</ogo:connection>
+ <ogo:connection>(30 20 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>Hx3</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(30 0 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ <ogo:connection>(30 20 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>H4x2</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-3 -3)(3 3)</ogo:arc>
+ <ogo:arc>(-3 7)(3 13)</ogo:arc>
+ <ogo:arc>(-3 17)(3 23)</ogo:arc>
+ <ogo:arc>(-3 27)(3 33)</ogo:arc>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:arc>(7 27)(13 33)</ogo:arc>
+ <ogo:line>(-20 0)(-3 0)</ogo:line>
+ <ogo:line>(-20 10)(-3 10)</ogo:line>
+ <ogo:line>(-20 20)(-3 20)</ogo:line>
+ <ogo:line>(-20 30)(-3 30)</ogo:line>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ <ogo:line>(13 30)(30 30)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 0 1)</ogo:connection>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(30 0 2)</ogo:connection>
+ <ogo:connection>(30 10 4)</ogo:connection>
+ <ogo:connection>(30 20 6)</ogo:connection>
+ <ogo:connection>(30 30 8)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>Hx4</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:arc>(7 27)(13 33)</ogo:arc>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ <ogo:line>(13 30)(30 30)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(30 0 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ <ogo:connection>(30 20 3)</ogo:connection>
+ <ogo:connection>(30 30 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>H5x2</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-3 -3)(3 3)</ogo:arc>
+ <ogo:arc>(-3 7)(3 13)</ogo:arc>
+ <ogo:arc>(-3 17)(3 23)</ogo:arc>
+ <ogo:arc>(-3 27)(3 33)</ogo:arc>
+ <ogo:arc>(-3 37)(3 43)</ogo:arc>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:arc>(7 27)(13 33)</ogo:arc>
+ <ogo:arc>(7 37)(13 43)</ogo:arc>
+ <ogo:line>(-20 0)(-3 0)</ogo:line>
+ <ogo:line>(-20 10)(-3 10)</ogo:line>
+ <ogo:line>(-20 20)(-3 20)</ogo:line>
+ <ogo:line>(-20 30)(-3 30)</ogo:line>
+ <ogo:line>(-20 40)(-3 40)</ogo:line>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ <ogo:line>(13 30)(30 30)</ogo:line>
+ <ogo:line>(13 40)(30 40)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 0 1)</ogo:connection>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(-20 40 9)</ogo:connection>
+ <ogo:connection>(30 0 2)</ogo:connection>
+ <ogo:connection>(30 10 4)</ogo:connection>
+ <ogo:connection>(30 20 6)</ogo:connection>
+ <ogo:connection>(30 30 8)</ogo:connection>
+ <ogo:connection>(30 40 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>Hx5</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:arc>(7 27)(13 33)</ogo:arc>
+ <ogo:arc>(7 37)(13 43)</ogo:arc>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ <ogo:line>(13 30)(30 30)</ogo:line>
+ <ogo:line>(13 40)(30 40)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(30 0 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ <ogo:connection>(30 20 3)</ogo:connection>
+ <ogo:connection>(30 30 4)</ogo:connection>
+ <ogo:connection>(30 40 5)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>H6x2</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-3 -3)(3 3)</ogo:arc>
+ <ogo:arc>(-3 7)(3 13)</ogo:arc>
+ <ogo:arc>(-3 17)(3 23)</ogo:arc>
+ <ogo:arc>(-3 27)(3 33)</ogo:arc>
+ <ogo:arc>(-3 37)(3 43)</ogo:arc>
+ <ogo:arc>(-3 47)(3 53)</ogo:arc>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:arc>(7 27)(13 33)</ogo:arc>
+ <ogo:arc>(7 37)(13 43)</ogo:arc>
+ <ogo:arc>(7 47)(13 53)</ogo:arc>
+ <ogo:line>(-20 0)(-3 0)</ogo:line>
+ <ogo:line>(-20 10)(-3 10)</ogo:line>
+ <ogo:line>(-20 20)(-3 20)</ogo:line>
+ <ogo:line>(-20 30)(-3 30)</ogo:line>
+ <ogo:line>(-20 40)(-3 40)</ogo:line>
+ <ogo:line>(-20 50)(-3 50)</ogo:line>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ <ogo:line>(13 30)(30 30)</ogo:line>
+ <ogo:line>(13 40)(30 40)</ogo:line>
+ <ogo:line>(13 50)(30 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 0 1)</ogo:connection>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(-20 40 9)</ogo:connection>
+ <ogo:connection>(-20 50 11)</ogo:connection>
+ <ogo:connection>(30 0 2)</ogo:connection>
+ <ogo:connection>(30 10 4)</ogo:connection>
+ <ogo:connection>(30 20 6)</ogo:connection>
+ <ogo:connection>(30 30 8)</ogo:connection>
+ <ogo:connection>(30 40 10)</ogo:connection>
+ <ogo:connection>(30 50 12)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>Hx6</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:arc>(7 27)(13 33)</ogo:arc>
+ <ogo:arc>(7 37)(13 43)</ogo:arc>
+ <ogo:arc>(7 47)(13 53)</ogo:arc>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ <ogo:line>(13 30)(30 30)</ogo:line>
+ <ogo:line>(13 40)(30 40)</ogo:line>
+ <ogo:line>(13 50)(30 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(30 0 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ <ogo:connection>(30 20 3)</ogo:connection>
+ <ogo:connection>(30 30 4)</ogo:connection>
+ <ogo:connection>(30 40 5)</ogo:connection>
+ <ogo:connection>(30 50 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>H7x2</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-3 -3)(3 3)</ogo:arc>
+ <ogo:arc>(-3 7)(3 13)</ogo:arc>
+ <ogo:arc>(-3 17)(3 23)</ogo:arc>
+ <ogo:arc>(-3 27)(3 33)</ogo:arc>
+ <ogo:arc>(-3 37)(3 43)</ogo:arc>
+ <ogo:arc>(-3 47)(3 53)</ogo:arc>
+ <ogo:arc>(-3 57)(3 63)</ogo:arc>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:arc>(7 27)(13 33)</ogo:arc>
+ <ogo:arc>(7 37)(13 43)</ogo:arc>
+ <ogo:arc>(7 47)(13 53)</ogo:arc>
+ <ogo:arc>(7 57)(13 63)</ogo:arc>
+ <ogo:line>(-20 0)(-3 0)</ogo:line>
+ <ogo:line>(-20 10)(-3 10)</ogo:line>
+ <ogo:line>(-20 20)(-3 20)</ogo:line>
+ <ogo:line>(-20 30)(-3 30)</ogo:line>
+ <ogo:line>(-20 40)(-3 40)</ogo:line>
+ <ogo:line>(-20 50)(-3 50)</ogo:line>
+ <ogo:line>(-20 60)(-3 60)</ogo:line>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ <ogo:line>(13 30)(30 30)</ogo:line>
+ <ogo:line>(13 40)(30 40)</ogo:line>
+ <ogo:line>(13 50)(30 50)</ogo:line>
+ <ogo:line>(13 60)(30 60)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 0 1)</ogo:connection>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(-20 40 9)</ogo:connection>
+ <ogo:connection>(-20 50 11)</ogo:connection>
+ <ogo:connection>(-20 60 13)</ogo:connection>
+ <ogo:connection>(30 0 2)</ogo:connection>
+ <ogo:connection>(30 10 4)</ogo:connection>
+ <ogo:connection>(30 20 6)</ogo:connection>
+ <ogo:connection>(30 30 8)</ogo:connection>
+ <ogo:connection>(30 40 10)</ogo:connection>
+ <ogo:connection>(30 50 12)</ogo:connection>
+ <ogo:connection>(30 60 14)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>Hx7</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:arc>(7 27)(13 33)</ogo:arc>
+ <ogo:arc>(7 37)(13 43)</ogo:arc>
+ <ogo:arc>(7 47)(13 53)</ogo:arc>
+ <ogo:arc>(7 57)(13 63)</ogo:arc>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ <ogo:line>(13 30)(30 30)</ogo:line>
+ <ogo:line>(13 40)(30 40)</ogo:line>
+ <ogo:line>(13 50)(30 50)</ogo:line>
+ <ogo:line>(13 60)(30 60)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(30 0 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ <ogo:connection>(30 20 3)</ogo:connection>
+ <ogo:connection>(30 30 4)</ogo:connection>
+ <ogo:connection>(30 40 5)</ogo:connection>
+ <ogo:connection>(30 50 6)</ogo:connection>
+ <ogo:connection>(30 60 7)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>H8x2</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-3 -3)(3 3)</ogo:arc>
+ <ogo:arc>(-3 7)(3 13)</ogo:arc>
+ <ogo:arc>(-3 17)(3 23)</ogo:arc>
+ <ogo:arc>(-3 27)(3 33)</ogo:arc>
+ <ogo:arc>(-3 37)(3 43)</ogo:arc>
+ <ogo:arc>(-3 47)(3 53)</ogo:arc>
+ <ogo:arc>(-3 57)(3 63)</ogo:arc>
+ <ogo:arc>(-3 67)(3 73)</ogo:arc>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:arc>(7 27)(13 33)</ogo:arc>
+ <ogo:arc>(7 37)(13 43)</ogo:arc>
+ <ogo:arc>(7 47)(13 53)</ogo:arc>
+ <ogo:arc>(7 57)(13 63)</ogo:arc>
+ <ogo:arc>(7 67)(13 73)</ogo:arc>
+ <ogo:line>(-20 0)(-3 0)</ogo:line>
+ <ogo:line>(-20 10)(-3 10)</ogo:line>
+ <ogo:line>(-20 20)(-3 20)</ogo:line>
+ <ogo:line>(-20 30)(-3 30)</ogo:line>
+ <ogo:line>(-20 40)(-3 40)</ogo:line>
+ <ogo:line>(-20 50)(-3 50)</ogo:line>
+ <ogo:line>(-20 60)(-3 60)</ogo:line>
+ <ogo:line>(-20 70)(-3 70)</ogo:line>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ <ogo:line>(13 30)(30 30)</ogo:line>
+ <ogo:line>(13 40)(30 40)</ogo:line>
+ <ogo:line>(13 50)(30 50)</ogo:line>
+ <ogo:line>(13 60)(30 60)</ogo:line>
+ <ogo:line>(13 70)(30 70)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 0 1)</ogo:connection>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(-20 40 9)</ogo:connection>
+ <ogo:connection>(-20 50 11)</ogo:connection>
+ <ogo:connection>(-20 60 13)</ogo:connection>
+ <ogo:connection>(-20 70 15)</ogo:connection>
+ <ogo:connection>(30 0 2)</ogo:connection>
+ <ogo:connection>(30 10 4)</ogo:connection>
+ <ogo:connection>(30 20 6)</ogo:connection>
+ <ogo:connection>(30 30 8)</ogo:connection>
+ <ogo:connection>(30 40 10)</ogo:connection>
+ <ogo:connection>(30 50 12)</ogo:connection>
+ <ogo:connection>(30 60 14)</ogo:connection>
+ <ogo:connection>(30 70 16)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>Hx8</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:arc>(7 27)(13 33)</ogo:arc>
+ <ogo:arc>(7 37)(13 43)</ogo:arc>
+ <ogo:arc>(7 47)(13 53)</ogo:arc>
+ <ogo:arc>(7 57)(13 63)</ogo:arc>
+ <ogo:arc>(7 67)(13 73)</ogo:arc>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ <ogo:line>(13 30)(30 30)</ogo:line>
+ <ogo:line>(13 40)(30 40)</ogo:line>
+ <ogo:line>(13 50)(30 50)</ogo:line>
+ <ogo:line>(13 60)(30 60)</ogo:line>
+ <ogo:line>(13 70)(30 70)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(30 0 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ <ogo:connection>(30 20 3)</ogo:connection>
+ <ogo:connection>(30 30 4)</ogo:connection>
+ <ogo:connection>(30 40 5)</ogo:connection>
+ <ogo:connection>(30 50 6)</ogo:connection>
+ <ogo:connection>(30 60 7)</ogo:connection>
+ <ogo:connection>(30 70 8)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>Hx9</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:arc>(7 27)(13 33)</ogo:arc>
+ <ogo:arc>(7 37)(13 43)</ogo:arc>
+ <ogo:arc>(7 47)(13 53)</ogo:arc>
+ <ogo:arc>(7 57)(13 63)</ogo:arc>
+ <ogo:arc>(7 67)(13 73)</ogo:arc>
+ <ogo:arc>(7 77)(13 83)</ogo:arc>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ <ogo:line>(13 30)(30 30)</ogo:line>
+ <ogo:line>(13 40)(30 40)</ogo:line>
+ <ogo:line>(13 50)(30 50)</ogo:line>
+ <ogo:line>(13 60)(30 60)</ogo:line>
+ <ogo:line>(13 70)(30 70)</ogo:line>
+ <ogo:line>(13 80)(30 80)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(30 0 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ <ogo:connection>(30 20 3)</ogo:connection>
+ <ogo:connection>(30 30 4)</ogo:connection>
+ <ogo:connection>(30 40 5)</ogo:connection>
+ <ogo:connection>(30 50 6)</ogo:connection>
+ <ogo:connection>(30 60 7)</ogo:connection>
+ <ogo:connection>(30 70 8)</ogo:connection>
+ <ogo:connection>(30 80 9)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>H10x2</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-3 -3)(3 3)</ogo:arc>
+ <ogo:arc>(-3 7)(3 13)</ogo:arc>
+ <ogo:arc>(-3 17)(3 23)</ogo:arc>
+ <ogo:arc>(-3 27)(3 33)</ogo:arc>
+ <ogo:arc>(-3 37)(3 43)</ogo:arc>
+ <ogo:arc>(-3 47)(3 53)</ogo:arc>
+ <ogo:arc>(-3 57)(3 63)</ogo:arc>
+ <ogo:arc>(-3 67)(3 73)</ogo:arc>
+ <ogo:arc>(-3 77)(3 83)</ogo:arc>
+ <ogo:arc>(-3 87)(3 93)</ogo:arc>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:arc>(7 27)(13 33)</ogo:arc>
+ <ogo:arc>(7 37)(13 43)</ogo:arc>
+ <ogo:arc>(7 47)(13 53)</ogo:arc>
+ <ogo:arc>(7 57)(13 63)</ogo:arc>
+ <ogo:arc>(7 67)(13 73)</ogo:arc>
+ <ogo:arc>(7 77)(13 83)</ogo:arc>
+ <ogo:arc>(7 87)(13 93)</ogo:arc>
+ <ogo:line>(-20 0)(-3 0)</ogo:line>
+ <ogo:line>(-20 10)(-3 10)</ogo:line>
+ <ogo:line>(-20 20)(-3 20)</ogo:line>
+ <ogo:line>(-20 30)(-3 30)</ogo:line>
+ <ogo:line>(-20 40)(-3 40)</ogo:line>
+ <ogo:line>(-20 50)(-3 50)</ogo:line>
+ <ogo:line>(-20 60)(-3 60)</ogo:line>
+ <ogo:line>(-20 70)(-3 70)</ogo:line>
+ <ogo:line>(-20 80)(-3 80)</ogo:line>
+ <ogo:line>(-20 90)(-3 90)</ogo:line>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ <ogo:line>(13 30)(30 30)</ogo:line>
+ <ogo:line>(13 40)(30 40)</ogo:line>
+ <ogo:line>(13 50)(30 50)</ogo:line>
+ <ogo:line>(13 60)(30 60)</ogo:line>
+ <ogo:line>(13 70)(30 70)</ogo:line>
+ <ogo:line>(13 80)(30 80)</ogo:line>
+ <ogo:line>(13 90)(30 90)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 0 1)</ogo:connection>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(-20 40 9)</ogo:connection>
+ <ogo:connection>(-20 50 11)</ogo:connection>
+ <ogo:connection>(-20 60 13)</ogo:connection>
+ <ogo:connection>(-20 70 15)</ogo:connection>
+ <ogo:connection>(-20 80 17)</ogo:connection>
+ <ogo:connection>(-20 90 19)</ogo:connection>
+ <ogo:connection>(30 0 2)</ogo:connection>
+ <ogo:connection>(30 10 4)</ogo:connection>
+ <ogo:connection>(30 20 6)</ogo:connection>
+ <ogo:connection>(30 30 8)</ogo:connection>
+ <ogo:connection>(30 40 10)</ogo:connection>
+ <ogo:connection>(30 50 12)</ogo:connection>
+ <ogo:connection>(30 60 14)</ogo:connection>
+ <ogo:connection>(30 70 16)</ogo:connection>
+ <ogo:connection>(30 80 18)</ogo:connection>
+ <ogo:connection>(30 90 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>Hx10</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:arc>(7 27)(13 33)</ogo:arc>
+ <ogo:arc>(7 37)(13 43)</ogo:arc>
+ <ogo:arc>(7 47)(13 53)</ogo:arc>
+ <ogo:arc>(7 57)(13 63)</ogo:arc>
+ <ogo:arc>(7 67)(13 73)</ogo:arc>
+ <ogo:arc>(7 77)(13 83)</ogo:arc>
+ <ogo:arc>(7 87)(13 93)</ogo:arc>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ <ogo:line>(13 30)(30 30)</ogo:line>
+ <ogo:line>(13 40)(30 40)</ogo:line>
+ <ogo:line>(13 50)(30 50)</ogo:line>
+ <ogo:line>(13 60)(30 60)</ogo:line>
+ <ogo:line>(13 70)(30 70)</ogo:line>
+ <ogo:line>(13 80)(30 80)</ogo:line>
+ <ogo:line>(13 90)(30 90)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(30 0 1)</ogo:connection>
+ <ogo:connection>(30 10 2)</ogo:connection>
+ <ogo:connection>(30 20 3)</ogo:connection>
+ <ogo:connection>(30 30 4)</ogo:connection>
+ <ogo:connection>(30 40 5)</ogo:connection>
+ <ogo:connection>(30 50 6)</ogo:connection>
+ <ogo:connection>(30 60 7)</ogo:connection>
+ <ogo:connection>(30 70 8)</ogo:connection>
+ <ogo:connection>(30 80 9)</ogo:connection>
+ <ogo:connection>(30 90 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>H13x2</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-3 -3)(3 3)</ogo:arc>
+ <ogo:arc>(-3 7)(3 13)</ogo:arc>
+ <ogo:arc>(-3 17)(3 23)</ogo:arc>
+ <ogo:arc>(-3 27)(3 33)</ogo:arc>
+ <ogo:arc>(-3 37)(3 43)</ogo:arc>
+ <ogo:arc>(-3 47)(3 53)</ogo:arc>
+ <ogo:arc>(-3 57)(3 63)</ogo:arc>
+ <ogo:arc>(-3 67)(3 73)</ogo:arc>
+ <ogo:arc>(-3 77)(3 83)</ogo:arc>
+ <ogo:arc>(-3 87)(3 93)</ogo:arc>
+ <ogo:arc>(-3 97)(3 103)</ogo:arc>
+ <ogo:arc>(-3 107)(3 113)</ogo:arc>
+ <ogo:arc>(-3 117)(3 123)</ogo:arc>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:arc>(7 27)(13 33)</ogo:arc>
+ <ogo:arc>(7 37)(13 43)</ogo:arc>
+ <ogo:arc>(7 47)(13 53)</ogo:arc>
+ <ogo:arc>(7 57)(13 63)</ogo:arc>
+ <ogo:arc>(7 67)(13 73)</ogo:arc>
+ <ogo:arc>(7 77)(13 83)</ogo:arc>
+ <ogo:arc>(7 87)(13 93)</ogo:arc>
+ <ogo:arc>(7 97)(13 103)</ogo:arc>
+ <ogo:arc>(7 107)(13 113)</ogo:arc>
+ <ogo:arc>(7 117)(13 123)</ogo:arc>
+ <ogo:line>(-20 0)(-3 0)</ogo:line>
+ <ogo:line>(-20 10)(-3 10)</ogo:line>
+ <ogo:line>(-20 20)(-3 20)</ogo:line>
+ <ogo:line>(-20 30)(-3 30)</ogo:line>
+ <ogo:line>(-20 40)(-3 40)</ogo:line>
+ <ogo:line>(-20 50)(-3 50)</ogo:line>
+ <ogo:line>(-20 60)(-3 60)</ogo:line>
+ <ogo:line>(-20 70)(-3 70)</ogo:line>
+ <ogo:line>(-20 80)(-3 80)</ogo:line>
+ <ogo:line>(-20 90)(-3 90)</ogo:line>
+ <ogo:line>(-20 100)(-3 100)</ogo:line>
+ <ogo:line>(-20 110)(-3 110)</ogo:line>
+ <ogo:line>(-20 120)(-3 120)</ogo:line>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ <ogo:line>(13 30)(30 30)</ogo:line>
+ <ogo:line>(13 40)(30 40)</ogo:line>
+ <ogo:line>(13 50)(30 50)</ogo:line>
+ <ogo:line>(13 60)(30 60)</ogo:line>
+ <ogo:line>(13 70)(30 70)</ogo:line>
+ <ogo:line>(13 80)(30 80)</ogo:line>
+ <ogo:line>(13 90)(30 90)</ogo:line>
+ <ogo:line>(13 100)(30 100)</ogo:line>
+ <ogo:line>(13 110)(30 110)</ogo:line>
+ <ogo:line>(13 120)(30 120)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 0 1)</ogo:connection>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(-20 40 9)</ogo:connection>
+ <ogo:connection>(-20 50 11)</ogo:connection>
+ <ogo:connection>(-20 60 13)</ogo:connection>
+ <ogo:connection>(-20 70 15)</ogo:connection>
+ <ogo:connection>(-20 80 17)</ogo:connection>
+ <ogo:connection>(-20 90 19)</ogo:connection>
+ <ogo:connection>(-20 100 21)</ogo:connection>
+ <ogo:connection>(-20 110 23)</ogo:connection>
+ <ogo:connection>(-20 120 25)</ogo:connection>
+ <ogo:connection>(30 0 2)</ogo:connection>
+ <ogo:connection>(30 10 4)</ogo:connection>
+ <ogo:connection>(30 20 6)</ogo:connection>
+ <ogo:connection>(30 30 8)</ogo:connection>
+ <ogo:connection>(30 40 10)</ogo:connection>
+ <ogo:connection>(30 50 12)</ogo:connection>
+ <ogo:connection>(30 60 14)</ogo:connection>
+ <ogo:connection>(30 70 16)</ogo:connection>
+ <ogo:connection>(30 80 18)</ogo:connection>
+ <ogo:connection>(30 90 20)</ogo:connection>
+ <ogo:connection>(30 100 22)</ogo:connection>
+ <ogo:connection>(30 110 24)</ogo:connection>
+ <ogo:connection>(30 120 26)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>H17x2</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-3 -3)(3 3)</ogo:arc>
+ <ogo:arc>(-3 7)(3 13)</ogo:arc>
+ <ogo:arc>(-3 17)(3 23)</ogo:arc>
+ <ogo:arc>(-3 27)(3 33)</ogo:arc>
+ <ogo:arc>(-3 37)(3 43)</ogo:arc>
+ <ogo:arc>(-3 47)(3 53)</ogo:arc>
+ <ogo:arc>(-3 57)(3 63)</ogo:arc>
+ <ogo:arc>(-3 67)(3 73)</ogo:arc>
+ <ogo:arc>(-3 77)(3 83)</ogo:arc>
+ <ogo:arc>(-3 87)(3 93)</ogo:arc>
+ <ogo:arc>(-3 97)(3 103)</ogo:arc>
+ <ogo:arc>(-3 107)(3 113)</ogo:arc>
+ <ogo:arc>(-3 117)(3 123)</ogo:arc>
+ <ogo:arc>(-3 127)(3 133)</ogo:arc>
+ <ogo:arc>(-3 137)(3 143)</ogo:arc>
+ <ogo:arc>(-3 147)(3 153)</ogo:arc>
+ <ogo:arc>(-3 157)(3 163)</ogo:arc>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:arc>(7 27)(13 33)</ogo:arc>
+ <ogo:arc>(7 37)(13 43)</ogo:arc>
+ <ogo:arc>(7 47)(13 53)</ogo:arc>
+ <ogo:arc>(7 57)(13 63)</ogo:arc>
+ <ogo:arc>(7 67)(13 73)</ogo:arc>
+ <ogo:arc>(7 77)(13 83)</ogo:arc>
+ <ogo:arc>(7 87)(13 93)</ogo:arc>
+ <ogo:arc>(7 97)(13 103)</ogo:arc>
+ <ogo:arc>(7 107)(13 113)</ogo:arc>
+ <ogo:arc>(7 117)(13 123)</ogo:arc>
+ <ogo:arc>(7 127)(13 133)</ogo:arc>
+ <ogo:arc>(7 137)(13 143)</ogo:arc>
+ <ogo:arc>(7 147)(13 153)</ogo:arc>
+ <ogo:arc>(7 157)(13 163)</ogo:arc>
+ <ogo:line>(-20 0)(-3 0)</ogo:line>
+ <ogo:line>(-20 10)(-3 10)</ogo:line>
+ <ogo:line>(-20 20)(-3 20)</ogo:line>
+ <ogo:line>(-20 30)(-3 30)</ogo:line>
+ <ogo:line>(-20 40)(-3 40)</ogo:line>
+ <ogo:line>(-20 50)(-3 50)</ogo:line>
+ <ogo:line>(-20 60)(-3 60)</ogo:line>
+ <ogo:line>(-20 70)(-3 70)</ogo:line>
+ <ogo:line>(-20 80)(-3 80)</ogo:line>
+ <ogo:line>(-20 90)(-3 90)</ogo:line>
+ <ogo:line>(-20 100)(-3 100)</ogo:line>
+ <ogo:line>(-20 110)(-3 110)</ogo:line>
+ <ogo:line>(-20 120)(-3 120)</ogo:line>
+ <ogo:line>(-20 130)(-3 130)</ogo:line>
+ <ogo:line>(-20 140)(-3 140)</ogo:line>
+ <ogo:line>(-20 150)(-3 150)</ogo:line>
+ <ogo:line>(-20 160)(-3 160)</ogo:line>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ <ogo:line>(13 30)(30 30)</ogo:line>
+ <ogo:line>(13 40)(30 40)</ogo:line>
+ <ogo:line>(13 50)(30 50)</ogo:line>
+ <ogo:line>(13 60)(30 60)</ogo:line>
+ <ogo:line>(13 70)(30 70)</ogo:line>
+ <ogo:line>(13 80)(30 80)</ogo:line>
+ <ogo:line>(13 90)(30 90)</ogo:line>
+ <ogo:line>(13 100)(30 100)</ogo:line>
+ <ogo:line>(13 110)(30 110)</ogo:line>
+ <ogo:line>(13 120)(30 120)</ogo:line>
+ <ogo:line>(13 130)(30 130)</ogo:line>
+ <ogo:line>(13 140)(30 140)</ogo:line>
+ <ogo:line>(13 150)(30 150)</ogo:line>
+ <ogo:line>(13 160)(30 160)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 0 1)</ogo:connection>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(-20 40 9)</ogo:connection>
+ <ogo:connection>(-20 50 11)</ogo:connection>
+ <ogo:connection>(-20 60 13)</ogo:connection>
+ <ogo:connection>(-20 70 15)</ogo:connection>
+ <ogo:connection>(-20 80 17)</ogo:connection>
+ <ogo:connection>(-20 90 19)</ogo:connection>
+ <ogo:connection>(-20 100 21)</ogo:connection>
+ <ogo:connection>(-20 110 23)</ogo:connection>
+ <ogo:connection>(-20 120 25)</ogo:connection>
+ <ogo:connection>(-20 130 27)</ogo:connection>
+ <ogo:connection>(-20 140 29)</ogo:connection>
+ <ogo:connection>(-20 150 31)</ogo:connection>
+ <ogo:connection>(-20 160 33)</ogo:connection>
+ <ogo:connection>(30 0 2)</ogo:connection>
+ <ogo:connection>(30 10 4)</ogo:connection>
+ <ogo:connection>(30 20 6)</ogo:connection>
+ <ogo:connection>(30 30 8)</ogo:connection>
+ <ogo:connection>(30 40 10)</ogo:connection>
+ <ogo:connection>(30 50 12)</ogo:connection>
+ <ogo:connection>(30 60 14)</ogo:connection>
+ <ogo:connection>(30 70 16)</ogo:connection>
+ <ogo:connection>(30 80 18)</ogo:connection>
+ <ogo:connection>(30 90 20)</ogo:connection>
+ <ogo:connection>(30 100 22)</ogo:connection>
+ <ogo:connection>(30 110 24)</ogo:connection>
+ <ogo:connection>(30 120 26)</ogo:connection>
+ <ogo:connection>(30 130 28)</ogo:connection>
+ <ogo:connection>(30 140 30)</ogo:connection>
+ <ogo:connection>(30 150 32)</ogo:connection>
+ <ogo:connection>(30 160 34)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>H20x2</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-3 -3)(3 3)</ogo:arc>
+ <ogo:arc>(-3 7)(3 13)</ogo:arc>
+ <ogo:arc>(-3 17)(3 23)</ogo:arc>
+ <ogo:arc>(-3 27)(3 33)</ogo:arc>
+ <ogo:arc>(-3 37)(3 43)</ogo:arc>
+ <ogo:arc>(-3 47)(3 53)</ogo:arc>
+ <ogo:arc>(-3 57)(3 63)</ogo:arc>
+ <ogo:arc>(-3 67)(3 73)</ogo:arc>
+ <ogo:arc>(-3 77)(3 83)</ogo:arc>
+ <ogo:arc>(-3 87)(3 93)</ogo:arc>
+ <ogo:arc>(-3 97)(3 103)</ogo:arc>
+ <ogo:arc>(-3 107)(3 113)</ogo:arc>
+ <ogo:arc>(-3 117)(3 123)</ogo:arc>
+ <ogo:arc>(-3 127)(3 133)</ogo:arc>
+ <ogo:arc>(-3 137)(3 143)</ogo:arc>
+ <ogo:arc>(-3 147)(3 153)</ogo:arc>
+ <ogo:arc>(-3 157)(3 163)</ogo:arc>
+ <ogo:arc>(-3 167)(3 173)</ogo:arc>
+ <ogo:arc>(-3 177)(3 183)</ogo:arc>
+ <ogo:arc>(-3 187)(3 193)</ogo:arc>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:arc>(7 27)(13 33)</ogo:arc>
+ <ogo:arc>(7 37)(13 43)</ogo:arc>
+ <ogo:arc>(7 47)(13 53)</ogo:arc>
+ <ogo:arc>(7 57)(13 63)</ogo:arc>
+ <ogo:arc>(7 67)(13 73)</ogo:arc>
+ <ogo:arc>(7 77)(13 83)</ogo:arc>
+ <ogo:arc>(7 87)(13 93)</ogo:arc>
+ <ogo:arc>(7 97)(13 103)</ogo:arc>
+ <ogo:arc>(7 107)(13 113)</ogo:arc>
+ <ogo:arc>(7 117)(13 123)</ogo:arc>
+ <ogo:arc>(7 127)(13 133)</ogo:arc>
+ <ogo:arc>(7 137)(13 143)</ogo:arc>
+ <ogo:arc>(7 147)(13 153)</ogo:arc>
+ <ogo:arc>(7 157)(13 163)</ogo:arc>
+ <ogo:arc>(7 167)(13 173)</ogo:arc>
+ <ogo:arc>(7 177)(13 183)</ogo:arc>
+ <ogo:arc>(7 187)(13 193)</ogo:arc>
+ <ogo:line>(-20 0)(-3 0)</ogo:line>
+ <ogo:line>(-20 10)(-3 10)</ogo:line>
+ <ogo:line>(-20 20)(-3 20)</ogo:line>
+ <ogo:line>(-20 30)(-3 30)</ogo:line>
+ <ogo:line>(-20 40)(-3 40)</ogo:line>
+ <ogo:line>(-20 50)(-3 50)</ogo:line>
+ <ogo:line>(-20 60)(-3 60)</ogo:line>
+ <ogo:line>(-20 70)(-3 70)</ogo:line>
+ <ogo:line>(-20 80)(-3 80)</ogo:line>
+ <ogo:line>(-20 90)(-3 90)</ogo:line>
+ <ogo:line>(-20 100)(-3 100)</ogo:line>
+ <ogo:line>(-20 110)(-3 110)</ogo:line>
+ <ogo:line>(-20 120)(-3 120)</ogo:line>
+ <ogo:line>(-20 130)(-3 130)</ogo:line>
+ <ogo:line>(-20 140)(-3 140)</ogo:line>
+ <ogo:line>(-20 150)(-3 150)</ogo:line>
+ <ogo:line>(-20 160)(-3 160)</ogo:line>
+ <ogo:line>(-20 170)(-3 170)</ogo:line>
+ <ogo:line>(-20 180)(-3 180)</ogo:line>
+ <ogo:line>(-20 190)(-3 190)</ogo:line>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ <ogo:line>(13 30)(30 30)</ogo:line>
+ <ogo:line>(13 40)(30 40)</ogo:line>
+ <ogo:line>(13 50)(30 50)</ogo:line>
+ <ogo:line>(13 60)(30 60)</ogo:line>
+ <ogo:line>(13 70)(30 70)</ogo:line>
+ <ogo:line>(13 80)(30 80)</ogo:line>
+ <ogo:line>(13 90)(30 90)</ogo:line>
+ <ogo:line>(13 100)(30 100)</ogo:line>
+ <ogo:line>(13 110)(30 110)</ogo:line>
+ <ogo:line>(13 120)(30 120)</ogo:line>
+ <ogo:line>(13 130)(30 130)</ogo:line>
+ <ogo:line>(13 140)(30 140)</ogo:line>
+ <ogo:line>(13 150)(30 150)</ogo:line>
+ <ogo:line>(13 160)(30 160)</ogo:line>
+ <ogo:line>(13 170)(30 170)</ogo:line>
+ <ogo:line>(13 180)(30 180)</ogo:line>
+ <ogo:line>(13 190)(30 190)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 0 1)</ogo:connection>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(-20 40 9)</ogo:connection>
+ <ogo:connection>(-20 50 11)</ogo:connection>
+ <ogo:connection>(-20 60 13)</ogo:connection>
+ <ogo:connection>(-20 70 15)</ogo:connection>
+ <ogo:connection>(-20 80 17)</ogo:connection>
+ <ogo:connection>(-20 90 19)</ogo:connection>
+ <ogo:connection>(-20 100 21)</ogo:connection>
+ <ogo:connection>(-20 110 23)</ogo:connection>
+ <ogo:connection>(-20 120 25)</ogo:connection>
+ <ogo:connection>(-20 130 27)</ogo:connection>
+ <ogo:connection>(-20 140 29)</ogo:connection>
+ <ogo:connection>(-20 150 31)</ogo:connection>
+ <ogo:connection>(-20 160 33)</ogo:connection>
+ <ogo:connection>(-20 170 35)</ogo:connection>
+ <ogo:connection>(-20 180 37)</ogo:connection>
+ <ogo:connection>(-20 190 39)</ogo:connection>
+ <ogo:connection>(30 0 2)</ogo:connection>
+ <ogo:connection>(30 10 4)</ogo:connection>
+ <ogo:connection>(30 20 6)</ogo:connection>
+ <ogo:connection>(30 30 8)</ogo:connection>
+ <ogo:connection>(30 40 10)</ogo:connection>
+ <ogo:connection>(30 50 12)</ogo:connection>
+ <ogo:connection>(30 60 14)</ogo:connection>
+ <ogo:connection>(30 70 16)</ogo:connection>
+ <ogo:connection>(30 80 18)</ogo:connection>
+ <ogo:connection>(30 90 20)</ogo:connection>
+ <ogo:connection>(30 100 22)</ogo:connection>
+ <ogo:connection>(30 110 24)</ogo:connection>
+ <ogo:connection>(30 120 26)</ogo:connection>
+ <ogo:connection>(30 130 28)</ogo:connection>
+ <ogo:connection>(30 140 30)</ogo:connection>
+ <ogo:connection>(30 150 32)</ogo:connection>
+ <ogo:connection>(30 160 34)</ogo:connection>
+ <ogo:connection>(30 170 36)</ogo:connection>
+ <ogo:connection>(30 180 38)</ogo:connection>
+ <ogo:connection>(30 190 40)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>H25x2</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-3 -3)(3 3)</ogo:arc>
+ <ogo:arc>(-3 7)(3 13)</ogo:arc>
+ <ogo:arc>(-3 17)(3 23)</ogo:arc>
+ <ogo:arc>(-3 27)(3 33)</ogo:arc>
+ <ogo:arc>(-3 37)(3 43)</ogo:arc>
+ <ogo:arc>(-3 47)(3 53)</ogo:arc>
+ <ogo:arc>(-3 57)(3 63)</ogo:arc>
+ <ogo:arc>(-3 67)(3 73)</ogo:arc>
+ <ogo:arc>(-3 77)(3 83)</ogo:arc>
+ <ogo:arc>(-3 87)(3 93)</ogo:arc>
+ <ogo:arc>(-3 97)(3 103)</ogo:arc>
+ <ogo:arc>(-3 107)(3 113)</ogo:arc>
+ <ogo:arc>(-3 117)(3 123)</ogo:arc>
+ <ogo:arc>(-3 127)(3 133)</ogo:arc>
+ <ogo:arc>(-3 137)(3 143)</ogo:arc>
+ <ogo:arc>(-3 147)(3 153)</ogo:arc>
+ <ogo:arc>(-3 157)(3 163)</ogo:arc>
+ <ogo:arc>(-3 167)(3 173)</ogo:arc>
+ <ogo:arc>(-3 177)(3 183)</ogo:arc>
+ <ogo:arc>(-3 187)(3 193)</ogo:arc>
+ <ogo:arc>(-3 197)(3 203)</ogo:arc>
+ <ogo:arc>(-3 207)(3 213)</ogo:arc>
+ <ogo:arc>(-3 217)(3 223)</ogo:arc>
+ <ogo:arc>(-3 227)(3 233)</ogo:arc>
+ <ogo:arc>(-3 237)(3 243)</ogo:arc>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(7 17)(13 23)</ogo:arc>
+ <ogo:arc>(7 27)(13 33)</ogo:arc>
+ <ogo:arc>(7 37)(13 43)</ogo:arc>
+ <ogo:arc>(7 47)(13 53)</ogo:arc>
+ <ogo:arc>(7 57)(13 63)</ogo:arc>
+ <ogo:arc>(7 67)(13 73)</ogo:arc>
+ <ogo:arc>(7 77)(13 83)</ogo:arc>
+ <ogo:arc>(7 87)(13 93)</ogo:arc>
+ <ogo:arc>(7 97)(13 103)</ogo:arc>
+ <ogo:arc>(7 107)(13 113)</ogo:arc>
+ <ogo:arc>(7 117)(13 123)</ogo:arc>
+ <ogo:arc>(7 127)(13 133)</ogo:arc>
+ <ogo:arc>(7 137)(13 143)</ogo:arc>
+ <ogo:arc>(7 147)(13 153)</ogo:arc>
+ <ogo:arc>(7 157)(13 163)</ogo:arc>
+ <ogo:arc>(7 167)(13 173)</ogo:arc>
+ <ogo:arc>(7 177)(13 183)</ogo:arc>
+ <ogo:arc>(7 187)(13 193)</ogo:arc>
+ <ogo:arc>(7 197)(13 203)</ogo:arc>
+ <ogo:arc>(7 207)(13 213)</ogo:arc>
+ <ogo:arc>(7 217)(13 223)</ogo:arc>
+ <ogo:arc>(7 227)(13 233)</ogo:arc>
+ <ogo:arc>(7 237)(13 243)</ogo:arc>
+ <ogo:line>(-20 0)(-3 0)</ogo:line>
+ <ogo:line>(-20 10)(-3 10)</ogo:line>
+ <ogo:line>(-20 20)(-3 20)</ogo:line>
+ <ogo:line>(-20 30)(-3 30)</ogo:line>
+ <ogo:line>(-20 40)(-3 40)</ogo:line>
+ <ogo:line>(-20 50)(-3 50)</ogo:line>
+ <ogo:line>(-20 60)(-3 60)</ogo:line>
+ <ogo:line>(-20 70)(-3 70)</ogo:line>
+ <ogo:line>(-20 80)(-3 80)</ogo:line>
+ <ogo:line>(-20 90)(-3 90)</ogo:line>
+ <ogo:line>(-20 100)(-3 100)</ogo:line>
+ <ogo:line>(-20 110)(-3 110)</ogo:line>
+ <ogo:line>(-20 120)(-3 120)</ogo:line>
+ <ogo:line>(-20 130)(-3 130)</ogo:line>
+ <ogo:line>(-20 140)(-3 140)</ogo:line>
+ <ogo:line>(-20 150)(-3 150)</ogo:line>
+ <ogo:line>(-20 160)(-3 160)</ogo:line>
+ <ogo:line>(-20 170)(-3 170)</ogo:line>
+ <ogo:line>(-20 180)(-3 180)</ogo:line>
+ <ogo:line>(-20 190)(-3 190)</ogo:line>
+ <ogo:line>(-20 200)(-3 200)</ogo:line>
+ <ogo:line>(-20 210)(-3 210)</ogo:line>
+ <ogo:line>(-20 220)(-3 220)</ogo:line>
+ <ogo:line>(-20 230)(-3 230)</ogo:line>
+ <ogo:line>(-20 240)(-3 240)</ogo:line>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(13 10)(30 10)</ogo:line>
+ <ogo:line>(13 20)(30 20)</ogo:line>
+ <ogo:line>(13 30)(30 30)</ogo:line>
+ <ogo:line>(13 40)(30 40)</ogo:line>
+ <ogo:line>(13 50)(30 50)</ogo:line>
+ <ogo:line>(13 60)(30 60)</ogo:line>
+ <ogo:line>(13 70)(30 70)</ogo:line>
+ <ogo:line>(13 80)(30 80)</ogo:line>
+ <ogo:line>(13 90)(30 90)</ogo:line>
+ <ogo:line>(13 100)(30 100)</ogo:line>
+ <ogo:line>(13 110)(30 110)</ogo:line>
+ <ogo:line>(13 120)(30 120)</ogo:line>
+ <ogo:line>(13 130)(30 130)</ogo:line>
+ <ogo:line>(13 140)(30 140)</ogo:line>
+ <ogo:line>(13 150)(30 150)</ogo:line>
+ <ogo:line>(13 160)(30 160)</ogo:line>
+ <ogo:line>(13 170)(30 170)</ogo:line>
+ <ogo:line>(13 180)(30 180)</ogo:line>
+ <ogo:line>(13 190)(30 190)</ogo:line>
+ <ogo:line>(13 200)(30 200)</ogo:line>
+ <ogo:line>(13 210)(30 210)</ogo:line>
+ <ogo:line>(13 220)(30 220)</ogo:line>
+ <ogo:line>(13 230)(30 230)</ogo:line>
+ <ogo:line>(13 240)(30 240)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 0 1)</ogo:connection>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(-20 40 9)</ogo:connection>
+ <ogo:connection>(-20 50 11)</ogo:connection>
+ <ogo:connection>(-20 60 13)</ogo:connection>
+ <ogo:connection>(-20 70 15)</ogo:connection>
+ <ogo:connection>(-20 80 17)</ogo:connection>
+ <ogo:connection>(-20 90 19)</ogo:connection>
+ <ogo:connection>(-20 100 21)</ogo:connection>
+ <ogo:connection>(-20 110 23)</ogo:connection>
+ <ogo:connection>(-20 120 25)</ogo:connection>
+ <ogo:connection>(-20 130 27)</ogo:connection>
+ <ogo:connection>(-20 140 29)</ogo:connection>
+ <ogo:connection>(-20 150 31)</ogo:connection>
+ <ogo:connection>(-20 160 33)</ogo:connection>
+ <ogo:connection>(-20 170 35)</ogo:connection>
+ <ogo:connection>(-20 180 37)</ogo:connection>
+ <ogo:connection>(-20 190 39)</ogo:connection>
+ <ogo:connection>(-20 200 41)</ogo:connection>
+ <ogo:connection>(-20 210 43)</ogo:connection>
+ <ogo:connection>(-20 220 45)</ogo:connection>
+ <ogo:connection>(-20 230 47)</ogo:connection>
+ <ogo:connection>(-20 240 49)</ogo:connection>
+ <ogo:connection>(30 0 2)</ogo:connection>
+ <ogo:connection>(30 10 4)</ogo:connection>
+ <ogo:connection>(30 20 6)</ogo:connection>
+ <ogo:connection>(30 30 8)</ogo:connection>
+ <ogo:connection>(30 40 10)</ogo:connection>
+ <ogo:connection>(30 50 12)</ogo:connection>
+ <ogo:connection>(30 60 14)</ogo:connection>
+ <ogo:connection>(30 70 16)</ogo:connection>
+ <ogo:connection>(30 80 18)</ogo:connection>
+ <ogo:connection>(30 90 20)</ogo:connection>
+ <ogo:connection>(30 100 22)</ogo:connection>
+ <ogo:connection>(30 110 24)</ogo:connection>
+ <ogo:connection>(30 120 26)</ogo:connection>
+ <ogo:connection>(30 130 28)</ogo:connection>
+ <ogo:connection>(30 140 30)</ogo:connection>
+ <ogo:connection>(30 150 32)</ogo:connection>
+ <ogo:connection>(30 160 34)</ogo:connection>
+ <ogo:connection>(30 170 36)</ogo:connection>
+ <ogo:connection>(30 180 38)</ogo:connection>
+ <ogo:connection>(30 190 40)</ogo:connection>
+ <ogo:connection>(30 200 42)</ogo:connection>
+ <ogo:connection>(30 210 44)</ogo:connection>
+ <ogo:connection>(30 220 46)</ogo:connection>
+ <ogo:connection>(30 230 48)</ogo:connection>
+ <ogo:connection>(30 240 50)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>pushbutton</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-3 -3)(3 3)</ogo:arc>
+ <ogo:arc>(7 -3)(13 3)</ogo:arc>
+ <ogo:line>(-20 0)(-3 0)</ogo:line>
+ <ogo:line>(13 0)(30 0)</ogo:line>
+ <ogo:line>(-5 -8)(15 -8)</ogo:line>
+ <ogo:line>(0 -8)(0 -13)(10 -13)(10 -8)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 0 1)</ogo:connection>
+ <ogo:connection>(30 0 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>switch</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-3 -3)(3 3)</ogo:arc>
+ <ogo:arc>(17 -3)(23 3)</ogo:arc>
+ <ogo:line>(-10 0)(-3 0)</ogo:line>
+ <ogo:line>(23 0)(30 0)</ogo:line>
+ <ogo:line>(2.1 -2.1)(14.1 -14.1)(9.1 -14.1)</ogo:line>
+ <ogo:line>(14.1 -14.1)(14.1 -9.1)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 0 1)</ogo:connection>
+ <ogo:connection>(30 0 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>switch2</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-3 -3)(3 3)</ogo:arc>
+ <ogo:arc>(17 -13)(23 -7)</ogo:arc>
+ <ogo:arc>(17 7)(23 13)</ogo:arc>
+ <ogo:line>(-10 0)(-3 0)</ogo:line>
+ <ogo:line>(23 -10)(30 -10)</ogo:line>
+ <ogo:line>(23 10)(30 10)</ogo:line>
+ <ogo:line>(3 0)(20 0)(16 -4)</ogo:line>
+ <ogo:line>(20 0)(16 4)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 0 1)</ogo:connection>
+ <ogo:connection>(30 -10 2)</ogo:connection>
+ <ogo:connection>(30 10 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>relay1p1t</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(7 -13)(13 -7)</ogo:arc>
+ <ogo:arc>(27 -13)(33 -7)</ogo:arc>
+ <ogo:line>(0 -10)(7 -10)</ogo:line>
+ <ogo:line>(33 -10)(40 -10)</ogo:line>
+ <ogo:line>(12.1 -12.1)(24.1 -24.1)(19.1 -24.1)</ogo:line>
+ <ogo:line>(24.1 -24.1)(24.1 -19.1)</ogo:line>
+
+ <ogo:line>(0 0)(10 0)(10 11)
+ (13.5 12.4)
+ (15.0 16.0)(13.5 19.6)(10 21.0)(6.0 19.0)(10 17.0)(13.5 18.4)(15.0 22.4)
+ (15.0 22.0)(13.5 25.6)(10 27.0)(6.0 25.0)(10 23.0)(13.5 24.4)(15.0 28.4)
+ (15.0 28.0)(13.5 31.6)(10 33.0)(6.0 31.0)(10 29.0)(13.5 30.4)(15.0 34.4)
+ (15.0 34.0)(13.5 37.6)(10 39.0)
+ (10 39)(10 50)(0 50)</ogo:line>
+ <ogo:line>(22 11)(22 39)</ogo:line>
+ <ogo:line>(20 11)(20 39)</ogo:line>
+ <ogo:line>(18 11)(18 39)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0 1)</ogo:connection>
+ <ogo:connection>(0 50 2)</ogo:connection>
+ <ogo:connection>(0 -10 3)</ogo:connection>
+ <ogo:connection>(40 -10 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>fuse</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-3 -3)(3 3)</ogo:arc>
+ <ogo:arc>(17 -3)(23 3)</ogo:arc>
+ <ogo:line>(-10 0)(-3 0)</ogo:line>
+ <ogo:line>(23 0)(30 0)</ogo:line>
+ <ogo:line>(1 -2.9)(2 -4)(4 -4.9)(5 -5)(6 -4.9)(8 -4)(9 -2.9)(10 0)</ogo:line>
+ <ogo:line>(10 0)(11 2.9)(12 4)(14 4.9)(15 5)(16 4.9)(18 4)(19 2.9)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 0 1)</ogo:connection>
+ <ogo:connection>(30 0 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>power220</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-3 -3)(3 3)</ogo:arc>
+ <ogo:arc>(17 -3)(23 3)</ogo:arc>
+ <ogo:arc>(7 2)(13 8)</ogo:arc>
+ <ogo:arc>(-5 -15)(25 15)</ogo:arc>
+ <ogo:line>(-10 0)(-3 0)</ogo:line>
+ <ogo:line>(23 0)(30 0)</ogo:line>
+ <ogo:line>(10 8)(10 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 0 1)</ogo:connection>
+ <ogo:connection>(30 0 2)</ogo:connection>
+ <ogo:connection>(10 20 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>power110</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(7 7)(13 13)</ogo:arc>
+ <ogo:arc>(-5 -12)(25 18)</ogo:arc>
+ <ogo:line>(-10 0)(5 0)</ogo:line>
+ <ogo:line>(15 0)(30 0)</ogo:line>
+ <ogo:line>(5 -5)(5 5)</ogo:line>
+ <ogo:line>(15 -5)(15 5)</ogo:line>
+ <ogo:line>(10 13)(10 30)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 0 1)</ogo:connection>
+ <ogo:connection>(30 0 2)</ogo:connection>
+ <ogo:connection>(10 30 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>bridge-d</ogo:name>
+ <ogo:objects>
+ <ogo:line>(6.5 -6.5)(0 0)(6.5 6.5)</ogo:line>
+ <ogo:line>(33.5 -6.5)(40 0)(33.5 6.5)</ogo:line>
+ <ogo:line>(13.5 -13.5)(20 -20)(26.5 -13.5)</ogo:line>
+ <ogo:line>(13.5 13.5)(20 20)(26.5 13.5)</ogo:line>
+ <ogo:line>(2.9 -10)(10 -2.9)(13.5 -13.5)(2.9 -10)</ogo:line>
+ <ogo:line>(10 -17.1)(17.1 -10)</ogo:line>
+ <ogo:line>(2.9 10)(10 2.9)(13.5 13.5)(2.9 10)</ogo:line>
+ <ogo:line>(10 17.1)(17.1 10)</ogo:line>
+ <ogo:line>(37.1 10)(30 2.9)</ogo:line>
+ <ogo:line>(30 17.1)(22.9 10)(33.5 6.5)(30 17.1)</ogo:line>
+ <ogo:line>(37.1 -10)(30 -2.9)</ogo:line>
+ <ogo:line>(30 -17.1)(22.9 -10)(33.5 -6.5)(30 -17.1)</ogo:line>
+ <ogo:line>(-10 0)(0 0)</ogo:line>
+ <ogo:line>(20 -30)(20 -20)</ogo:line>
+ <ogo:line>(20 30)(20 20)</ogo:line>
+ <ogo:line>(40 0)(50 0)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 0 1)</ogo:connection>
+ <ogo:connection>(20 -30 2)</ogo:connection>
+ <ogo:connection>(20 30 3)</ogo:connection>
+ <ogo:connection>(50 0 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>thyristor</ogo:name>
+ <ogo:objects>
+ <ogo:line>(10 -10)(10 10)</ogo:line>
+ <ogo:line>(0 10)(20 10)(10 20)(0 10)</ogo:line>
+ <ogo:line>(0 20)(20 20)</ogo:line>
+ <ogo:line>(10 20)(10 40)</ogo:line>
+ <ogo:line>(6 20)(0 30)(-10 30)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(10 -10 1)</ogo:connection>
+ <ogo:connection>(10 40 2)</ogo:connection>
+ <ogo:connection>(-10 30 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>triac</ogo:name>
+ <ogo:objects>
+ <ogo:line>(10 -20)(10 0)</ogo:line>
+ <ogo:line>(10 0)(5 10)(0 0)(20 0)</ogo:line>
+ <ogo:line>(10 10)(15 0)(20 10)(0 10)</ogo:line>
+ <ogo:line>(10 10)(10 30)</ogo:line>
+ <ogo:line>(7 10)(0 20)(-10 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(10 -20 1)</ogo:connection>
+ <ogo:connection>(10 30 2)</ogo:connection>
+ <ogo:connection>(-10 20 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>lamp</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-7.5 -7.5)(7.5 7.5)</ogo:arc>
+ <ogo:line>(0 -20)(0 -7.5)</ogo:line>
+ <ogo:line>(0 7.5)(0 20)</ogo:line>
+ <ogo:line>(-5.3 -5.3)(5.3 5.3)</ogo:line>
+ <ogo:line>(5.3 -5.3)(-5.3 5.3)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 -20 1)</ogo:connection>
+ <ogo:connection>(0 20 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>diac</ogo:name>
+ <ogo:objects>
+ <ogo:line>(10 -20)(10 0)</ogo:line>
+ <ogo:line>(10 0)(5 10)(0 0)(20 0)</ogo:line>
+ <ogo:line>(10 10)(15 0)(20 10)(0 10)</ogo:line>
+ <ogo:line>(10 10)(10 30)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(10 -20 1)</ogo:connection>
+ <ogo:connection>(10 30 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ <ogo:symbol>
+ <ogo:name>PMT-12</ogo:name>
+ <ogo:objects>
+ <ogo:line>(-10 -3)(10 -3)</ogo:line>
+ <ogo:line>(10 10)(30 10)</ogo:line>
+ <ogo:line>(10 30)(30 30)</ogo:line>
+ <ogo:line>(10 50)(30 50)</ogo:line>
+ <ogo:line>(10 70)(30 70)</ogo:line>
+ <ogo:line>(10 90)(30 90)</ogo:line>
+ <ogo:line>(10 110)(30 110)</ogo:line>
+ <ogo:line>(10 130)(30 130)</ogo:line>
+ <ogo:line>(10 150)(30 150)</ogo:line>
+ <ogo:line>(10 170)(30 170)</ogo:line>
+ <ogo:line>(10 190)(30 190)</ogo:line>
+ <ogo:line>(10 210)(30 210)</ogo:line>
+ <ogo:line>(-10 230)(30 230)</ogo:line>
+ <ogo:line>(0 -30)(0 -3)</ogo:line>
+ <ogo:line>(10 5)(10 15)</ogo:line>
+ <ogo:line>(10 25)(10 35)</ogo:line>
+ <ogo:line>(10 45)(10 55)</ogo:line>
+ <ogo:line>(10 65)(10 75)</ogo:line>
+ <ogo:line>(10 85)(10 95)</ogo:line>
+ <ogo:line>(10 105)(10 115)</ogo:line>
+ <ogo:line>(10 125)(10 135)</ogo:line>
+ <ogo:line>(10 145)(10 155)</ogo:line>
+ <ogo:line>(10 165)(10 175)</ogo:line>
+ <ogo:line>(10 185)(10 195)</ogo:line>
+ <ogo:line>(10 205)(10 215)</ogo:line>
+ <ogo:line>(15 0)(15 235)</ogo:line>
+ <ogo:line>(-15 0)(-15 235)</ogo:line>
+ <ogo:line>(-15 0)(-14 -5)(-12.5 -8)(-10 -11)(-7.5 -13)(-5 -14)(-2.5 -14.5)(0 -15)(2.5 -14.6)(5 -14)(7.5 -13)(10 -11)(12.5 -8)(14 -5)(15 0)</ogo:line>
+ <ogo:line>(-15 235)(-14 240)(-12.5 243)(-10 246)(-7.5 248)(-5 249)(-2.5 249.6)(0 250)(2.5 249.6)(5 249)(7.5 248)(10 246)(12.5 243)(14 240)(15 235)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(10 30 10)</ogo:connection>
+ <ogo:connection>(30 30 9)</ogo:connection>
+ <ogo:connection>(50 30 8)</ogo:connection>
+ <ogo:connection>(70 30 7)</ogo:connection>
+ <ogo:connection>(90 30 6)</ogo:connection>
+ <ogo:connection>(110 30 5)</ogo:connection>
+ <ogo:connection>(130 30 4)</ogo:connection>
+ <ogo:connection>(150 30 3)</ogo:connection>
+ <ogo:connection>(170 30 2)</ogo:connection>
+ <ogo:connection>(190 30 1)</ogo:connection>
+ <ogo:connection>(210 30 13)</ogo:connection>
+ <ogo:connection>(230 30 14)</ogo:connection>
+ <ogo:connection>(0 -30 11)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>PMT-10</ogo:name>
+ <ogo:objects>
+ <ogo:line>(-10 -3)(10 -3)</ogo:line>
+ <ogo:line>(10 10)(30 10)</ogo:line>
+ <ogo:line>(10 30)(30 30)</ogo:line>
+ <ogo:line>(10 50)(30 50)</ogo:line>
+ <ogo:line>(10 70)(30 70)</ogo:line>
+ <ogo:line>(10 90)(30 90)</ogo:line>
+ <ogo:line>(10 110)(30 110)</ogo:line>
+ <ogo:line>(10 130)(30 130)</ogo:line>
+ <ogo:line>(10 150)(30 150)</ogo:line>
+ <ogo:line>(10 170)(30 170)</ogo:line>
+ <ogo:line>(-10 190)(30 190)</ogo:line>
+ <ogo:line>(0 -30)(0 -3)</ogo:line>
+ <ogo:line>(10 5)(10 15)</ogo:line>
+ <ogo:line>(10 25)(10 35)</ogo:line>
+ <ogo:line>(10 45)(10 55)</ogo:line>
+ <ogo:line>(10 65)(10 75)</ogo:line>
+ <ogo:line>(10 85)(10 95)</ogo:line>
+ <ogo:line>(10 105)(10 115)</ogo:line>
+ <ogo:line>(10 125)(10 135)</ogo:line>
+ <ogo:line>(10 145)(10 155)</ogo:line>
+ <ogo:line>(10 165)(10 175)</ogo:line>
+ <ogo:line>(15 0)(15 195)</ogo:line>
+ <ogo:line>(-15 0)(-15 195)</ogo:line>
+ <ogo:line>(-15 0)(-14 -5)(-12.5 -8)(-10 -11)(-7.5 -13)(-5 -14)(-2.5 -14.5)(0 -15)(2.5 -14.6)(5 -14)(7.5 -13)(10 -11)(12.5 -8)(14 -5)(15 0)</ogo:line>
+ <ogo:line>(-15 195)(-14 200)(-12.5 203)(-10 206)(-7.5 208)(-5 209)(-2.5 209.6)(0 210)(2.5 209.6)(5 209)(7.5 208)(10 206)(12.5 203)(14 200)(15 195)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(10 30 9)</ogo:connection>
+ <ogo:connection>(30 30 8)</ogo:connection>
+ <ogo:connection>(50 30 7)</ogo:connection>
+ <ogo:connection>(70 30 6)</ogo:connection>
+ <ogo:connection>(90 30 5)</ogo:connection>
+ <ogo:connection>(110 30 4)</ogo:connection>
+ <ogo:connection>(130 30 3)</ogo:connection>
+ <ogo:connection>(150 30 2)</ogo:connection>
+ <ogo:connection>(170 30 1)</ogo:connection>
+ <ogo:connection>(190 30 11)</ogo:connection>
+ <ogo:connection>(0 -30 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>CRT-BW</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(80 -20)(90 -20)(90 50)(80 50)(60 30)(0 30)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)(10 15)(0 20)(-20 20)</ogo:line>
+ <ogo:line>(20 50)(20 5)(19.5 5)(19.5 25)(19 25)(19 5)(18.5 5)(18.5 25)(18 25)(18 5)</ogo:line>
+ <ogo:line>(30 50)(30 25)</ogo:line>
+ <ogo:line>(30 20)(30 15)</ogo:line>
+ <ogo:line>(30 10)(30 5)</ogo:line>
+ <ogo:line>(40 50)(40 25)</ogo:line>
+ <ogo:line>(40 20)(40 15)</ogo:line>
+ <ogo:line>(40 10)(40 5)</ogo:line>
+ <ogo:line>(50 50)(50 25)</ogo:line>
+ <ogo:line>(50 20)(50 15)</ogo:line>
+ <ogo:line>(50 10)(50 5)</ogo:line>
+ <ogo:line>(55 35)(60 35)(65 40)</ogo:line>
+ <ogo:line>(60 35)(60 50)</ogo:line>
+ <ogo:line>(70 60)(70 35)(80 45)(85 45)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 20 4)</ogo:connection>
+ <ogo:connection>(20 50 2)</ogo:connection>
+ <ogo:connection>(30 50 1)</ogo:connection>
+ <ogo:connection>(40 50 6)</ogo:connection>
+ <ogo:connection>(50 50 7)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(70 60)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>neon</ogo:name>
+ <ogo:objects>
+ <ogo:arc>(-7.5 -7.5)(7.5 7.5)</ogo:arc>
+ <ogo:line>(0 -20)(0 -5)</ogo:line>
+ <ogo:line>(0 5)(0 20)</ogo:line>
+ <ogo:arc>(-2 -5)(2 -1)</ogo:arc>
+ <ogo:arc>(-2 1)(2 5)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 -20 1)</ogo:connection>
+ <ogo:connection>(0 20 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>microphone</ogo:name>
+ <ogo:objects>
+ <ogo:line>(-2.5 -5)(0 -5)(5 -4)(7.5 -2.5)(9 0)(10 5)</ogo:line>
+ <ogo:line>(-2.5 15)(0 15)(5 14)(7.5 12.5)(9 10)(10 5)</ogo:line>
+ <ogo:line>(9 0)(20 0)</ogo:line>
+ <ogo:line>(9 10)(20 10)</ogo:line>
+ <ogo:line>(-2.5 -5)(-2.5 15)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(20 0 1)</ogo:connection>
+ <ogo:connection>(20 10 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>earphone-m</ogo:name>
+ <ogo:objects>
+ <ogo:line>(-15 0)(-14 -5)(-12.5 -8)(-10 -11)(-7.5 -13)(-5 -14)(-2.5 -14.5)(0 -15)(2.5 -14.6)(5 -14)(7.5 -13)(10 -11)(12.5 -8)(14 -5)(15 0)</ogo:line>
+ <ogo:line>(-22.5 10)(-30 10)</ogo:line>
+ <ogo:line>(15 15)(15 20)(-30 20)</ogo:line>
+ <ogo:arc>(-22.5 0)(-7.5 15)</ogo:arc>
+ <ogo:arc>(7.5 0)(22.5 15)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-30 10 1)</ogo:connection>
+ <ogo:connection>(-30 20 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>earphone-s</ogo:name>
+ <ogo:objects>
+ <ogo:line>(-15 0)(-14 -5)(-12.5 -8)(-10 -11)(-7.5 -13)(-5 -14)(-2.5 -14.5)(0 -15)(2.5 -14.6)(5 -14)(7.5 -13)(10 -11)(12.5 -8)(14 -5)(15 0)</ogo:line>
+ <ogo:line>(-22.5 10)(-30 10)</ogo:line>
+ <ogo:line>(-7.5 10)(7.5 10)</ogo:line>
+ <ogo:line>(0 10)(0 20)(-30 20)</ogo:line>
+ <ogo:line>(15 15)(15 30)(-30 30)</ogo:line>
+ <ogo:arc>(-22.5 0)(-7.5 15)</ogo:arc>
+ <ogo:arc>(7.5 0)(22.5 15)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-30 10 1)</ogo:connection>
+ <ogo:connection>(-30 20 2)</ogo:connection>
+ <ogo:connection>(-30 30 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+
+
+
+
+ </ogo:symbols>
+
+ <ogo:parts>
+
+ <ogo:part>
+ <ogo:name>Model</ogo:name>
+ <ogo:symbol>Model</ogo:symbol>
+ <ogo:description> Used to add a model</ogo:description>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>name</ogo:name>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>model</ogo:name>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>param</ogo:name>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>.model @name @model @param</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>model</ogo:name>
+ <ogo:position>(25 11)</ogo:position>
+ <ogo:text>@model</ogo:text>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Include</ogo:name>
+ <ogo:symbol>Include</ogo:symbol>
+ <ogo:description> Used to specify a include file</ogo:description>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>filename</ogo:name>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>.include @filename</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>filename</ogo:name>
+ <ogo:position>(25 11)</ogo:position>
+ <ogo:text>@filename</ogo:text>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>Jumper Cross</ogo:name>
+ <ogo:symbol>jumper4</ogo:symbol>
+ <ogo:description>Wire Jumper Cross</ogo:description>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>jumper4</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Jumper</ogo:name>
+ <ogo:symbol>jumper2</ogo:symbol>
+ <ogo:description>Wire Jumper</ogo:description>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>jumper2</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Antenna</ogo:name>
+ <ogo:symbol>antenna</ogo:symbol>
+ <ogo:description>Antenna</ogo:description>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>antenna</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Connection</ogo:name>
+ <ogo:symbol>connection</ogo:symbol>
+ <ogo:description>Wire Connection</ogo:description>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>connection</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Resistor</ogo:name>
+ <ogo:symbol>resistor</ogo:symbol>
+ <ogo:description>Resistor</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Resistance</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(0 30)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>R</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Res</ogo:name>
+ <ogo:value>1k</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Potentiometer</ogo:name>
+ <ogo:symbol>resistor-var1</ogo:symbol>
+ <ogo:description>Variable Resistor</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(5 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Resistance</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(5 30)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>R</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Res</ogo:name>
+ <ogo:value>1k</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 %3 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Potentiometer-2</ogo:name>
+ <ogo:symbol>resistor-var2</ogo:symbol>
+ <ogo:description>Variable Resistor</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(5 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Resistance</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(5 30)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>R</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Res</ogo:name>
+ <ogo:value>1k</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Thermistor</ogo:name>
+ <ogo:symbol>thermistor</ogo:symbol>
+ <ogo:description>Thermistor</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(5 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Resistance</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(5 30)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>R</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Res</ogo:name>
+ <ogo:value>1k</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Varistor</ogo:name>
+ <ogo:symbol>varistor</ogo:symbol>
+ <ogo:description>Varistor</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(5 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Resistance</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(5 50)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>V</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Res</ogo:name>
+ <ogo:value>270V</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Resistor Pack x8</ogo:name>
+ <ogo:symbol>resistor-pack8</ogo:symbol>
+ <ogo:description>Resistor pack</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 -15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Resistance</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(0 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(30 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(0 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(30 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(0 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(30 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(0 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(30 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(0 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(30 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(0 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(30 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(0 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(30 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(0 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(30 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>R</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Res</ogo:name>
+ <ogo:value>4k7</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Resistor Pack x8 common</ogo:name>
+ <ogo:symbol>resistor-pack8c</ogo:symbol>
+ <ogo:description>Resistor pack common point</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 -15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Resistance</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(10 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(33 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(33 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(33 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(33 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(33 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(33 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(33 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(33 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(33 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>R</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Res</ogo:name>
+ <ogo:value>4k7</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Speaker</ogo:name>
+ <ogo:symbol>speaker</ogo:symbol>
+ <ogo:description>Speaker</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>impedance</ogo:name>
+ <ogo:text>@ohm</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>L</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>ohm</ogo:name>
+ <ogo:value>8 ohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Capacitor</ogo:name>
+ <ogo:symbol>capacitor</ogo:symbol>
+ <ogo:description>Capacitor</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Capacitance</ogo:name>
+ <ogo:text>@cap</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>C</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Cap</ogo:name>
+ <ogo:value>1u</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>IC</ogo:name>
+ <ogo:value>0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>C_@refdes %1 %2 @cap IC=@IC</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Trimmer</ogo:name>
+ <ogo:symbol>capacitor-var1</ogo:symbol>
+ <ogo:description>Variable Capacitor</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Capacitance</ogo:name>
+ <ogo:text>@cap</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>C</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Cap</ogo:name>
+ <ogo:value>100p</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>C_@refdes %1 %2 @cap</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Trimmer-2</ogo:name>
+ <ogo:symbol>capacitor-var2</ogo:symbol>
+ <ogo:description>Variable Capacitor</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Capacitance</ogo:name>
+ <ogo:text>@cap</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>C</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Cap</ogo:name>
+ <ogo:value>30p</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>C_@refdes %1 %2 @cap</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>Cap.Pol.</ogo:name>
+ <ogo:symbol>cpol</ogo:symbol>
+ <ogo:description>Electrolytic Capacitor</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Capacitance</ogo:name>
+ <ogo:text>@cap</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>C</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Cap</ogo:name>
+ <ogo:value>1u</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>C_@refdes %1 %2 @cap</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Crystal</ogo:name>
+ <ogo:symbol>crystal</ogo:symbol>
+ <ogo:description>Crystal</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Frequency</ogo:name>
+ <ogo:text>@fre</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>X</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Frec.</ogo:name>
+ <ogo:value>3.58 MHz</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 @fre</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+
+ <ogo:part>
+ <ogo:name>Inductor</ogo:name>
+ <ogo:symbol>inductor</ogo:symbol>
+ <ogo:description>Inductor</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Inductance</ogo:name>
+ <ogo:text>@ind</ogo:text>
+ <ogo:position>(20 30)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>L</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Ind</ogo:name>
+ <ogo:value>1H</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>L_@refdes %1 %2 @ind</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Inductor iron</ogo:name>
+ <ogo:symbol>inductor-iron</ogo:symbol>
+ <ogo:description>Iron core Inductor</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Inductance</ogo:name>
+ <ogo:text>@ind</ogo:text>
+ <ogo:position>(20 30)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>L</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Ind</ogo:name>
+ <ogo:value>1H</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>L_@refdes %1 %2 @ind</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Transformer</ogo:name>
+ <ogo:symbol>transformer</ogo:symbol>
+ <ogo:description>Transformer</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(50 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Inductance</ogo:name>
+ <ogo:text>@ind</ogo:text>
+ <ogo:position>(50 20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>T</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Ind</ogo:name>
+ <ogo:value>1H</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>T_@refdes %1 %2 %3 %4 @ind</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Transformer-up</ogo:name>
+ <ogo:symbol>transformer2</ogo:symbol>
+ <ogo:description>Step Up Transformer</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(50 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Inductance</ogo:name>
+ <ogo:text>@ind</ogo:text>
+ <ogo:position>(50 20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>T</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Ind</ogo:name>
+ <ogo:value>1H</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>T_@refdes %1 %2 %3 %4 %5 @ind</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Diode</ogo:name>
+ <ogo:symbol>diode</ogo:symbol>
+ <ogo:description>General purpose silicon diode</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-5 -5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>D</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>1N4148</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>D_@refdes %1 %2 M_@refdes \n.model M_@refdes d(IS=0.1PA, RS=16 CJO=2PF TT=12N BV=100 IBV=0.1PA)</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Diode Tunnel</ogo:name>
+ <ogo:symbol>d_tunnel</ogo:symbol>
+ <ogo:description>Tunnel diode</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-5 -5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>D</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>tunnel diode</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>D_@refdes %1 %2 M_@refdes @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>Photodiode</ogo:name>
+ <ogo:symbol>photodiode</ogo:symbol>
+ <ogo:description>Photodiode</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>D</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>D_@refdes %1 %2 M_@refdes \n.model M_@refdes (IS=0.1PA, RS=16 CJO=2PF TT=12N BV=100 IBV=0.1PA)</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Diode Varactor</ogo:name>
+ <ogo:symbol>varactor</ogo:symbol>
+ <ogo:description>Varactor silicon diode</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>D</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>D_@refdes %1 %2 M_@refdes \n.model M_@refdes (IS=0.1PA, RS=16 CJO=20PF TT=12N BV=100 IBV=0.1PA)</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Diode Schottky</ogo:name>
+ <ogo:symbol>schottky</ogo:symbol>
+ <ogo:description>Schottky silicon diode</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>D</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>D_@refdes %1 %2 M_@refdes \n.model M_@refdes (IS=0.1PA, RS=16 CJO=2PF TT=12N BV=100 IBV=0.1PA)</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>Zener</ogo:name>
+ <ogo:symbol>zener</ogo:symbol>
+ <ogo:description>1N750 zener diode, Vz = 4.7V</ogo:description>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>D</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>D_@refdes %1 %2 @model</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>model</ogo:name>
+ <ogo:value>1N750</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>BJT NPN</ogo:name>
+ <ogo:symbol>NPN</ogo:symbol>
+ <ogo:description>Bipolar junction transistor, NPN</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(30 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>Q</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>NPN</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>Q_@refdes %c %b %e @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>BJT NPN-DAR</ogo:name>
+ <ogo:symbol>NPN-D</ogo:symbol>
+ <ogo:description>Bipolar Darlington transistor, NPN</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-20 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>Q</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>NPN</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>Q_@refdes %c %b %e @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>BJT PNP-DAR</ogo:name>
+ <ogo:symbol>PNP-D</ogo:symbol>
+ <ogo:description>Bipolar Darlington transistor, PNP</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-20 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>Q</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>PNP</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>Q_@refdes %c %b %e @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>BJT NPN-PHOTO</ogo:name>
+ <ogo:symbol>NPN-PHOTO</ogo:symbol>
+ <ogo:description>Bipolar junction photo-transistor, NPN</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(30 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>Q</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>PHOTO-NPN</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>Q_@refdes %c %b %e @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Opto Isolator</ogo:name>
+ <ogo:symbol>optoisolator</ogo:symbol>
+ <ogo:description>Opto Isolator</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(30 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>OPTO</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>Q_@refdes %c %e %K %a @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>BJT PNP-PHOTO</ogo:name>
+ <ogo:symbol>PNP-PHOTO</ogo:symbol>
+ <ogo:description>Bipolar junction photo-transistor</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>PNP-PHOTO</ogo:text>
+ <ogo:position>(30 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>Q</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>@model</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>Q_@refdes %c %b %e pnp</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>JFET-P</ogo:name>
+ <ogo:symbol>JFET-P</ogo:symbol>
+ <ogo:description>Channel P FET</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>JFET-P</ogo:text>
+ <ogo:position>(30 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>Q</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>@model</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>Q_@refdes %d %s %g pnp</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>JFET-N</ogo:name>
+ <ogo:symbol>JFET-N</ogo:symbol>
+ <ogo:description>Channel N FET</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>JFET-N</ogo:text>
+ <ogo:position>(30 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>Q</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>@model</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>Q_@refdes %d %s %g pnp</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>UJT</ogo:name>
+ <ogo:symbol>UJT</ogo:symbol>
+ <ogo:description>Unijunction Transistor</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>UJT</ogo:text>
+ <ogo:position>(30 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>Q</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>@model</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>Q_@refdes %b1 %b2 %e pnp</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>BJT PNP</ogo:name>
+ <ogo:symbol>PNP</ogo:symbol>
+ <ogo:description>Bipolar junction transistor</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>PNP</ogo:text>
+ <ogo:position>(30 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>Q</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>@model</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>Q_@refdes %c %b %e pnp</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>N-MOS</ogo:name>
+ <ogo:symbol>N-MOS</ogo:symbol>
+ <ogo:description>N MOSFET</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>M</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>M_@refdes %d %g %s %b nmos</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>N-MOS DUAL GATE</ogo:name>
+ <ogo:symbol>DGN-MOS</ogo:symbol>
+ <ogo:description>Dual Gate N MOSFET</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>M</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>M_@refdes %d %g1 %g2 %b nmos</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>P-MOS DUAL GATE</ogo:name>
+ <ogo:symbol>DGP-MOS</ogo:symbol>
+ <ogo:description>Dual Gate P MOSFET</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>M</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>M_@refdes %d %g1 %g2 %b nmos</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+
+
+ <ogo:part>
+ <ogo:name>P-MOS</ogo:name>
+ <ogo:symbol>P-MOS</ogo:symbol>
+ <ogo:description>P MOSFET</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>M</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>M_@refdes %d %g %s %b pmos</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Ideal OP</ogo:name>
+ <ogo:symbol>OPAMP</ogo:symbol>
+ <ogo:description>Ideal operation amplifier</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Mhos</ogo:name>
+ <ogo:value>100</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>G_@refdes %out 0 %in- %in+ @mhos</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Gnd</ogo:name>
+ <ogo:symbol>Ground</ogo:symbol>
+ <ogo:description>Ground</ogo:description>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>ground</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Test Clamp</ogo:name>
+ <ogo:symbol>Point</ogo:symbol>
+ <ogo:description>Point of test</ogo:description>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>point</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>type</ogo:name>
+ <ogo:value>v</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>ac_type</ogo:name>
+ <ogo:value>m</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>ac_db</ogo:name>
+ <ogo:value>false</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Marker</ogo:name>
+ <ogo:symbol>Marker</ogo:symbol>
+ <ogo:description>Node marker</ogo:description>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>marker</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Name</ogo:name>
+ <ogo:value>?</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Node name</ogo:name>
+ <ogo:text>@Name</ogo:text>
+ <ogo:position>(0 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>12AX7 (a)</ogo:name>
+ <ogo:symbol>Triode</ogo:symbol>
+ <ogo:description>1/2 12AX7 Vacuum tube</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 -27)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>p</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(34 -29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>g</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(5 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>c</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(62 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>h1</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(23 38)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>h2</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(33 38)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>h3</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(43 38)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(45 -27)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>V</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>12AX7A(a)</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %c %g %p %h1 %h2 %h3 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>12AX7 (b)</ogo:name>
+ <ogo:symbol>Triode2</ogo:symbol>
+ <ogo:description>1/2 12AX7 Vacuum tube</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 -27)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>p</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(34 -29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>g</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(5 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>c</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(62 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(45 -27)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>V</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>12AX7A(b)</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %c %g %p @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>6BQ5</ogo:name>
+ <ogo:symbol>Pentode</ogo:symbol>
+ <ogo:description>6BQ5 Vacuum tube</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 -30)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>p</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(34 -34)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>g1</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-5 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>g2</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(80 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>c</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(62 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>h1</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(23 43)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>h2</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(43 43)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(55 -30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>V</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>6BQ5</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %c %g1 %g2 %p %h1 %h2 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>VSIN</ogo:name>
+ <ogo:symbol>VSIN</ogo:symbol>
+ <ogo:description>Voltage source, sinusoidal</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>V</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Offset</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Amplitude</ogo:name>
+ <ogo:value>1.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Frequency</ogo:name>
+ <ogo:value>1.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>DC</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>AC</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>V_@refdes %+ %- dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0)</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>VAC</ogo:name>
+ <ogo:symbol>VSIN</ogo:symbol>
+ <ogo:description>AC voltage source, sinusoidal</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>AC Leyend</ogo:name>
+ <ogo:text>AC</ogo:text>
+ <ogo:position>(15 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>V</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Offset</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Amplitude</ogo:name>
+ <ogo:value>1.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Frequency</ogo:name>
+ <ogo:value>1.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>DC</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>V_@refdes %+ %- dc @dc ac 1.0 sin(@Offset @Amplitude @Frequency 0 0)</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>CCVS</ogo:name>
+ <ogo:symbol>CCVS</ogo:symbol>
+ <ogo:description>Current Controlled Voltage source</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Controlling source</ogo:name>
+ <ogo:text>@transresistance I ( @vcon )</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>H</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Transresistance</ogo:name>
+ <ogo:value>1.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>VCON</ogo:name>
+ <ogo:value>V1</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>H_@refdes %+ %- V_@vcon @transresistance</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>VCVS</ogo:name>
+ <ogo:symbol>VCVS</ogo:symbol>
+ <ogo:description>Voltage Controlled Voltage source</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Controlling voltage</ogo:name>
+ <ogo:text>@gain V ( @ncp , @ncn )</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>E</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>1.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>NCP</ogo:name>
+ <ogo:value>0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>NCN</ogo:name>
+ <ogo:value>0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>E_@refdes %+ %- @ncp @ncn @gain</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>VCCS</ogo:name>
+ <ogo:symbol>VCCS</ogo:symbol>
+ <ogo:description>Voltage Controlled Current source</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Controlling voltage</ogo:name>
+ <ogo:text>@transconductance V ( @ncp , @ncn )</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>G</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Transconductance</ogo:name>
+ <ogo:value>1.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>NCP</ogo:name>
+ <ogo:value>0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>NCN</ogo:name>
+ <ogo:value>0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>G_@refdes %+ %- @ncp @ncn @transconductance</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>CCCS</ogo:name>
+ <ogo:symbol>CCCS</ogo:symbol>
+ <ogo:description>Current Controlled Current source</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Controlling source</ogo:name>
+ <ogo:text>@gain I ( @vcon )</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>F</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>1.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>VCON</ogo:name>
+ <ogo:value>V1</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>F_@refdes %+ %- V_@vcon @gain</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>ISIN</ogo:name>
+ <ogo:symbol>ISIN</ogo:symbol>
+ <ogo:description>Current source, sinusoidal</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>I</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Offset</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Amplitude</ogo:name>
+ <ogo:value>1.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Frequency</ogo:name>
+ <ogo:value>1.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>DC</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>AC</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>I_@refdes %+ %- dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0)</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>VPULSE</ogo:name>
+ <ogo:symbol>VPULSE</ogo:symbol>
+ <ogo:description>Voltage source, pulse</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>V</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>DC</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>AC</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>v1</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>v2</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>td</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>tr</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>tf</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>pw</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>per</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>V_@refdes %+ %- dc @dc ac @ac PULSE @v1 @v2 @td @tr @tf @pw @per</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>VDC</ogo:name>
+ <ogo:symbol>VDC</ogo:symbol>
+ <ogo:description>Voltage source, direct current</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>V</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>DC</ogo:name>
+ <ogo:value>1.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>V_@refdes %+ %- dc @DC</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Module Port-R</ogo:name>
+ <ogo:symbol>MPR</ogo:symbol>
+ <ogo:description>Node marker</ogo:description>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>marker</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Name</ogo:name>
+ <ogo:value>?</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Node name</ogo:name>
+ <ogo:text>@Name</ogo:text>
+ <ogo:position>(10 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Module Port-L</ogo:name>
+ <ogo:symbol>MPL</ogo:symbol>
+ <ogo:description>Node marker</ogo:description>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>marker</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Name</ogo:name>
+ <ogo:value>?</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Node name</ogo:name>
+ <ogo:text>@Name</ogo:text>
+ <ogo:position>(-45 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Module Port-B</ogo:name>
+ <ogo:symbol>MPB</ogo:symbol>
+ <ogo:description>Node marker</ogo:description>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>internal</ogo:name>
+ <ogo:value>marker</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Name</ogo:name>
+ <ogo:value>?</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Node name</ogo:name>
+ <ogo:text>@Name</ogo:text>
+ <ogo:position>(10 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>DB-9</ogo:name>
+ <ogo:symbol>DB9</ogo:symbol>
+ <ogo:description>connector DB-9</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(26 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(26 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(26 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(26 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(26 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(26 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(26 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(26 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(26 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>DB-9</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>DB-15</ogo:name>
+ <ogo:symbol>DB15</ogo:symbol>
+ <ogo:description>connector DB-15</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(26 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(26 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(26 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(26 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(26 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(26 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(26 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(26 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(26 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(26 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(26 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(26 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(26 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(26 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(26 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>DB-15</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>DB-25</ogo:name>
+ <ogo:symbol>DB25</ogo:symbol>
+ <ogo:description>connector DB-25</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(26 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(26 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(26 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(26 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(26 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(26 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(26 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(26 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(26 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(26 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(26 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(26 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(26 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(26 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(26 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(26 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(26 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(26 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(26 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(26 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(26 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(26 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(26 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(26 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(26 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>DB-25</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>DB-37</ogo:name>
+ <ogo:symbol>DB37</ogo:symbol>
+ <ogo:description>connector DB-37</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(26 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(26 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(26 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(26 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(26 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(26 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(26 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(26 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(26 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(26 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(26 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(26 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(26 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(26 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(26 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(26 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(26 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(26 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(26 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>29</ogo:name>
+ <ogo:text>29</ogo:text>
+ <ogo:position>(26 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(26 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(26 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(26 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(26 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(26 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(26 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(26 250)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>33</ogo:name>
+ <ogo:text>33</ogo:text>
+ <ogo:position>(26 260)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(26 270)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>34</ogo:name>
+ <ogo:text>34</ogo:text>
+ <ogo:position>(26 280)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(26 290)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>35</ogo:name>
+ <ogo:text>35</ogo:text>
+ <ogo:position>(26 300)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(26 310)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>36</ogo:name>
+ <ogo:text>36</ogo:text>
+ <ogo:position>(26 320)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(26 330)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>37</ogo:name>
+ <ogo:text>37</ogo:text>
+ <ogo:position>(26 340)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(26 350)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>DB-37</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 %35 %36 %37 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>BNC</ogo:name>
+ <ogo:symbol>BNC</ogo:symbol>
+ <ogo:description>BNC connector</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>BNC</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 2x2</ogo:name>
+ <ogo:symbol>H2x2</ogo:symbol>
+ <ogo:description>connector Header 2x2 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>H2x2</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 2</ogo:name>
+ <ogo:symbol>Hx2</ogo:symbol>
+ <ogo:description>connector Header 2 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>Hx2</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 3x2</ogo:name>
+ <ogo:symbol>H3x2</ogo:symbol>
+ <ogo:description>Header 3x2 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>H3x2</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 3</ogo:name>
+ <ogo:symbol>Hx3</ogo:symbol>
+ <ogo:description>Header 3 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>Hx3</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 4x2</ogo:name>
+ <ogo:symbol>H4x2</ogo:symbol>
+ <ogo:description>Header 4x2 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>H4x2</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 4</ogo:name>
+ <ogo:symbol>Hx4</ogo:symbol>
+ <ogo:description>Header 4 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>Hx4</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 5x2</ogo:name>
+ <ogo:symbol>H5x2</ogo:symbol>
+ <ogo:description>Header 5x2 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>H5x2</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 5</ogo:name>
+ <ogo:symbol>Hx5</ogo:symbol>
+ <ogo:description>Header 5 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>Hx5</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 6x2</ogo:name>
+ <ogo:symbol>H6x2</ogo:symbol>
+ <ogo:description>Header 6x2 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>H6x2</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 6</ogo:name>
+ <ogo:symbol>Hx6</ogo:symbol>
+ <ogo:description>Header 6 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>Hx6</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 7x2</ogo:name>
+ <ogo:symbol>H7x2</ogo:symbol>
+ <ogo:description>Header 7x2 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>H7x2</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 7</ogo:name>
+ <ogo:symbol>Hx7</ogo:symbol>
+ <ogo:description>Header 7 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>Hx7</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 8x2</ogo:name>
+ <ogo:symbol>H8x2</ogo:symbol>
+ <ogo:description>Header 8x2 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>H8x2</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 8</ogo:name>
+ <ogo:symbol>Hx8</ogo:symbol>
+ <ogo:description>Header 8 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>Hx8</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 9</ogo:name>
+ <ogo:symbol>Hx9</ogo:symbol>
+ <ogo:description>Header 9 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>Hx9</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 10x2</ogo:name>
+ <ogo:symbol>H10x2</ogo:symbol>
+ <ogo:description>Header 10x2 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>H10x2</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 10</ogo:name>
+ <ogo:symbol>Hx10</ogo:symbol>
+ <ogo:description>Header 10 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>Hx10</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 13x2</ogo:name>
+ <ogo:symbol>H13x2</ogo:symbol>
+ <ogo:description>Header 13x2 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(15 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(15 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>H13x2</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 17x2</ogo:name>
+ <ogo:symbol>H17x2</ogo:symbol>
+ <ogo:description>Header 17x2 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(15 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(15 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-15 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(15 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>29</ogo:name>
+ <ogo:text>29</ogo:text>
+ <ogo:position>(-15 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(15 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(-15 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(15 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>33</ogo:name>
+ <ogo:text>33</ogo:text>
+ <ogo:position>(-15 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>34</ogo:name>
+ <ogo:text>34</ogo:text>
+ <ogo:position>(15 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>H17x2</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 20x2</ogo:name>
+ <ogo:symbol>H20x2</ogo:symbol>
+ <ogo:description>Header 20x2 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(15 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(15 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-15 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(15 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>29</ogo:name>
+ <ogo:text>29</ogo:text>
+ <ogo:position>(-15 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(15 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(-15 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(15 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>33</ogo:name>
+ <ogo:text>33</ogo:text>
+ <ogo:position>(-15 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>34</ogo:name>
+ <ogo:text>34</ogo:text>
+ <ogo:position>(15 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>35</ogo:name>
+ <ogo:text>35</ogo:text>
+ <ogo:position>(-15 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>36</ogo:name>
+ <ogo:text>36</ogo:text>
+ <ogo:position>(15 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>37</ogo:name>
+ <ogo:text>37</ogo:text>
+ <ogo:position>(-15 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>38</ogo:name>
+ <ogo:text>38</ogo:text>
+ <ogo:position>(15 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>39</ogo:name>
+ <ogo:text>39</ogo:text>
+ <ogo:position>(-15 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>40</ogo:name>
+ <ogo:text>40</ogo:text>
+ <ogo:position>(15 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>H20x2</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 % 35 %36 %37 %38 %39 %40 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Header 25x2</ogo:name>
+ <ogo:symbol>H25x2</ogo:symbol>
+ <ogo:description>Header 25x2 pins</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(15 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(15 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-15 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(15 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>29</ogo:name>
+ <ogo:text>29</ogo:text>
+ <ogo:position>(-15 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(15 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(-15 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(15 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>33</ogo:name>
+ <ogo:text>33</ogo:text>
+ <ogo:position>(-15 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>34</ogo:name>
+ <ogo:text>34</ogo:text>
+ <ogo:position>(15 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>35</ogo:name>
+ <ogo:text>35</ogo:text>
+ <ogo:position>(-15 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>36</ogo:name>
+ <ogo:text>36</ogo:text>
+ <ogo:position>(15 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>37</ogo:name>
+ <ogo:text>37</ogo:text>
+ <ogo:position>(-15 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>38</ogo:name>
+ <ogo:text>38</ogo:text>
+ <ogo:position>(15 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>39</ogo:name>
+ <ogo:text>39</ogo:text>
+ <ogo:position>(-15 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>40</ogo:name>
+ <ogo:text>40</ogo:text>
+ <ogo:position>(15 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>41</ogo:name>
+ <ogo:text>41</ogo:text>
+ <ogo:position>(-15 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>42</ogo:name>
+ <ogo:text>42</ogo:text>
+ <ogo:position>(15 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>43</ogo:name>
+ <ogo:text>43</ogo:text>
+ <ogo:position>(-15 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>44</ogo:name>
+ <ogo:text>44</ogo:text>
+ <ogo:position>(15 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>45</ogo:name>
+ <ogo:text>45</ogo:text>
+ <ogo:position>(-15 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>46</ogo:name>
+ <ogo:text>46</ogo:text>
+ <ogo:position>(15 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>47</ogo:name>
+ <ogo:text>47</ogo:text>
+ <ogo:position>(-15 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>48</ogo:name>
+ <ogo:text>48</ogo:text>
+ <ogo:position>(15 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>49</ogo:name>
+ <ogo:text>49</ogo:text>
+ <ogo:position>(-15 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>50</ogo:name>
+ <ogo:text>50</ogo:text>
+ <ogo:position>(15 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>H25x2</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 % 35 %36 %37 %38 %39 %40 %41 %42 %43 %44 %45 %46 %47 %48 %49 %50 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Pushbutton</ogo:name>
+ <ogo:symbol>pushbutton</ogo:symbol>
+ <ogo:description>pushbutton Switch</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(5 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>SW</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>Push-SW</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>SW_@refdes %1 %2 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Switch 1P1T</ogo:name>
+ <ogo:symbol>switch</ogo:symbol>
+ <ogo:description>Switch 1P1T</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(5 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>SW</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>Switch</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>SW_@refdes %1 %2 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Switch 1P2T</ogo:name>
+ <ogo:symbol>switch2</ogo:symbol>
+ <ogo:description>Switch 1P2T </ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(5 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>SW</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>Switch 1P2T</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>SW_@refdes %1 %2 %3 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Relay 1P1T</ogo:name>
+ <ogo:symbol>relay1p1t</ogo:symbol>
+ <ogo:description>Relay 1P1T </ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(5 -25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>RL</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>Relay 1P1T</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>RL_@refdes %1 %2 %3 %4 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Fuse</ogo:name>
+ <ogo:symbol>fuse</ogo:symbol>
+ <ogo:description>Fuse</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>A</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(10 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>F</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>res</ogo:name>
+ <ogo:value>1A</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>F_@refdes %1 %2 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>AC Power 110V</ogo:name>
+ <ogo:symbol>power110</ogo:symbol>
+ <ogo:description>AC Power 110V</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Frequency</ogo:name>
+ <ogo:text>60 Hz</ogo:text>
+ <ogo:position>(30 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V</ogo:name>
+ <ogo:text>110 V</ogo:text>
+ <ogo:position>(30 -25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Offset</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Amplitude</ogo:name>
+ <ogo:value>110.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Frequency</ogo:name>
+ <ogo:value>60.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>DC</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>AC</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>J_@refdes %1 %2 %3 dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0)</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>AC Power 220V</ogo:name>
+ <ogo:symbol>power220</ogo:symbol>
+ <ogo:description>AC Power 220V</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Frequency</ogo:name>
+ <ogo:text>50 Hz</ogo:text>
+ <ogo:position>(30 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V</ogo:name>
+ <ogo:text>220 V</ogo:text>
+ <ogo:position>(30 -25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>J</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Offset</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Amplitude</ogo:name>
+ <ogo:value>220.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Frequency</ogo:name>
+ <ogo:value>50.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>DC</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>AC</ogo:name>
+ <ogo:value>0.0</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>J_@refdes %1 %2 %3 dc @dc ac @ac sin(@Offset @Amplitude @Frequency 0 0)</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Diode Bridge</ogo:name>
+ <ogo:symbol>bridge-d</ogo:symbol>
+ <ogo:description>Power silicon diode bridge</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 -15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>D</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 @model</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>DiodeBridge</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Thyristor</ogo:name>
+ <ogo:symbol>thyristor</ogo:symbol>
+ <ogo:description>Thyristor</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>TH</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>TH_@refdes %1 %2 %3 M_@refdes \n.model M_@refdes (IS=1.0PA, RS=1 CJO=20PF TT=1200N BV=800 IBV=1.0PA)</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Triac</ogo:name>
+ <ogo:symbol>triac</ogo:symbol>
+ <ogo:description>Triac</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>TH</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>TH_@refdes %1 %2 %3 M_@refdes \n.model M_@refdes (IS=1.0PA, RS=1 CJO=20PF TT=1200N BV=800 IBV=1.0PA)</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Lamp</ogo:name>
+ <ogo:symbol>lamp</ogo:symbol>
+ <ogo:description>Lamp</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V</ogo:name>
+ <ogo:text>12 V</ogo:text>
+ <ogo:position>(30 -25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>L</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>L_@refdes %1 %2 </ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Diac</ogo:name>
+ <ogo:symbol>diac</ogo:symbol>
+ <ogo:description>Diac</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>D</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>D_@refdes %1 %2 </ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>PMT 12 Stage</ogo:name>
+ <ogo:symbol>PMT-12</ogo:symbol>
+ <ogo:description>12 Stage Photomultiplier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(17 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(17 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(17 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(17 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(17 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(17 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>V</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>PMT</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %13 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>PMT 10 Stage</ogo:name>
+ <ogo:symbol>PMT-10</ogo:symbol>
+ <ogo:description>10 Stage Photomultiplier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(17 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(17 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(17 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(17 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>V</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>PMT</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Motor Stepper</ogo:name>
+ <ogo:symbol>motor-stepper</ogo:symbol>
+ <ogo:description>Motor Stepper 4 phases</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>M</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>M_@refdes %1 %2 %3 %4 %5 %6 </ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Motor Stepper-2</ogo:name>
+ <ogo:symbol>motor-stepper2</ogo:symbol>
+ <ogo:description>Motor Stepper 2 phases</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>M</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>M_@refdes %1 %2 %3 %4 </ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>CRT BW</ogo:name>
+ <ogo:symbol>CRT-BW</ogo:symbol>
+ <ogo:description>Black and White Cathode Ray Tube</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(12 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(32 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(42 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(60 -25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>V</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>CRT BW</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>XV_@refdes %1 %2 %3 %4 %6 %7 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Neon</ogo:name>
+ <ogo:symbol>neon</ogo:symbol>
+ <ogo:description>Neon Lamp</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V</ogo:name>
+ <ogo:text>90 V</ogo:text>
+ <ogo:position>(30 -25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>L</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>L_@refdes %1 %2 </ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Microphone</ogo:name>
+ <ogo:symbol>microphone</ogo:symbol>
+ <ogo:description>Microphone</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>M</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>L_@refdes %1 %2 </ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Earphone-M</ogo:name>
+ <ogo:symbol>earphone-m</ogo:symbol>
+ <ogo:description>Earphone (Mono)</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>E</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>L_@refdes %1 %2 </ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Earphone-S</ogo:name>
+ <ogo:symbol>earphone-s</ogo:symbol>
+ <ogo:description>Earphone (Stereo)</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>E</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>L_@refdes %1 %2 %3</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+
+ </ogo:parts>
+</ogo:library>
diff --git a/data/libraries/interface.oreglib b/data/libraries/interface.oreglib
new file mode 100644
index 0000000..c7a83ad
--- /dev/null
+++ b/data/libraries/interface.oreglib
@@ -0,0 +1,357 @@
+<?xml version="1.0"?>
+<ogo:library xmlns:ogo="http://www.dtek.chalmers.se/~d4hult/oregano/v1">
+ <ogo:name>Interface</ogo:name>
+ <ogo:description>Interface Library</ogo:description>
+ <ogo:version>0.1</ogo:version>
+ <ogo:author>Hector Bellesi</ogo:author>
+ <ogo:last-updated>29-Jun-2001</ogo:last-updated>
+
+ <ogo:symbols>
+
+ <ogo:symbol>
+ <ogo:name>MAX232</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 160)(0 160)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(50 160)(50 180)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 90)(80 90)</ogo:line>
+ <ogo:line>(60 100)(80 100)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 1)</ogo:connection>
+ <ogo:connection>(-20 40 3)</ogo:connection>
+ <ogo:connection>(-20 60 4)</ogo:connection>
+ <ogo:connection>(-20 90 5)</ogo:connection>
+ <ogo:connection>(-20 110 11)</ogo:connection>
+ <ogo:connection>(-20 120 10)</ogo:connection>
+ <ogo:connection>(-20 140 12)</ogo:connection>
+ <ogo:connection>(-20 150 9)</ogo:connection>
+ <ogo:connection>(30 -20 16)</ogo:connection>
+ <ogo:connection>(50 180 15)</ogo:connection>
+ <ogo:connection>(80 10 2)</ogo:connection>
+ <ogo:connection>(80 40 6)</ogo:connection>
+ <ogo:connection>(80 60 14)</ogo:connection>
+ <ogo:connection>(80 70 7)</ogo:connection>
+ <ogo:connection>(80 90 13)</ogo:connection>
+ <ogo:connection>(80 100 8)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>optodiac</ogo:name>
+ <ogo:objects>
+ <ogo:line>(-3 10)(3 15)(3 10)(8 15) (8 12)</ogo:line>
+ <ogo:line>(8 15)(5 15)</ogo:line>
+ <ogo:line>(-3 20)(3 25)(3 20)(8 25) (8 22)</ogo:line>
+ <ogo:line>(8 25)(5 25)</ogo:line>
+ <ogo:line>(-20 0)(-20 15)</ogo:line>
+ <ogo:line>(-26 15)(-14 15)(-20 25)(-26 15)</ogo:line>
+ <ogo:line>(-26 25)(-14 25)</ogo:line>
+ <ogo:line>(-20 25)(-20 40)</ogo:line>
+ <ogo:line>(20 0)(20 15)(10 15)(15 25)(20 15)(30 15)</ogo:line>
+ <ogo:line>(10 25)(30 25)(25 15)(20 25)(20 40)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(20 0 6)</ogo:connection>
+ <ogo:connection>(20 40 4)</ogo:connection>
+ <ogo:connection>(-20 0 1)</ogo:connection>
+ <ogo:connection>(-20 40 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+
+
+
+
+ </ogo:symbols>
+
+
+
+ <ogo:parts>
+
+
+ <ogo:part>
+ <ogo:name>MAX232</ogo:name>
+ <ogo:symbol>MAX232</ogo:symbol>
+ <ogo:description>TTL to RS232 Interface</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C1+</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C1-</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C2+</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C2-</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TDI</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RTSI</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RDO</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CTSO</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(18 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(25 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>]
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(38 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(45 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+B</ogo:text>
+ <ogo:position>(43 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-B</ogo:text>
+ <ogo:position>(43 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TDO</ogo:text>
+ <ogo:position>(38 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RTS</ogo:text>
+ <ogo:position>(38 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RDI</ogo:text>
+ <ogo:position>(38 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(67 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CTSI</ogo:text>
+ <ogo:position>(33 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-20 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>MAX232</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Opto Diac</ogo:name>
+ <ogo:symbol>optodiac</ogo:symbol>
+ <ogo:description>Opto Diac</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-30 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-30 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(30 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>MOC3041</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>Q_@refdes %1 %2 %4 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+
+ </ogo:parts>
+</ogo:library>
diff --git a/data/libraries/linear.oreglib b/data/libraries/linear.oreglib
new file mode 100644
index 0000000..1850e90
--- /dev/null
+++ b/data/libraries/linear.oreglib
@@ -0,0 +1,996 @@
+<?xml version="1.0"?>
+<ogo:library xmlns:ogo="http://www.dtek.chalmers.se/~d4hult/oregano/v1">
+ <ogo:name>Linear</ogo:name>
+ <ogo:description>Linear Library</ogo:description>
+ <ogo:version>0.2</ogo:version>
+ <ogo:author>Hector Bellesi</ogo:author>
+ <ogo:last-updated>4-Aug-2001</ogo:last-updated>
+
+ <ogo:symbols>
+ <ogo:symbol>
+ <ogo:name>555</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 60)(0 60)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(20 60)(20 80)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 7)</ogo:connection>
+ <ogo:connection>(-20 30 6)</ogo:connection>
+ <ogo:connection>(-20 50 2)</ogo:connection>
+ <ogo:connection>(20 -20 4)</ogo:connection>
+ <ogo:connection>(30 -20 8)</ogo:connection>
+ <ogo:connection>(20 80 1)</ogo:connection>
+ <ogo:connection>(60 20 3)</ogo:connection>
+ <ogo:connection>(60 50 5)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>78XX</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 30)(0 30)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(20 30)(20 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 1)</ogo:connection>
+ <ogo:connection>(60 10 3)</ogo:connection>
+ <ogo:connection>(30 50 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>79XX</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 30)(0 30)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(20 30)(20 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(60 10 3)</ogo:connection>
+ <ogo:connection>(30 50 1)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>LM317</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 30)(0 30)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(20 30)(20 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(60 10 2)</ogo:connection>
+ <ogo:connection>(30 50 1)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>LM723</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(80 0)(80 70)(0 70)(0 0)</ogo:line>
+ <ogo:line>(0 10)(40 30)(0 50)</ogo:line>
+ <ogo:line>(20 -20)(20 20)</ogo:line>
+ <ogo:line>(20 40)(20 90)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(40 -20)(40 40)(50 50)(40 60)(40 90)</ogo:line>
+ <ogo:line>(40 55)(40 60)(45 60)</ogo:line>
+ <ogo:line>(50 44)(50 56)</ogo:line>
+ <ogo:line>(50 50)(60 50)(60 90)</ogo:line>
+ <ogo:line>(40 30)(50 30)</ogo:line>
+ <ogo:line>(50 24)(50 36)</ogo:line>
+ <ogo:line>(60 -20)(60 20)(50 30)(60 40)(100 40)</ogo:line>
+ <ogo:line>(60 35)(60 40)(55 40)</ogo:line>
+ <ogo:line>(70 40)(70 50)(75 60)(65 60)(70 50)</ogo:line>
+ <ogo:line>(70 60)(70 90)</ogo:line>
+ <ogo:line>(62 45)(65 50)(75 50)(78 55)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 4)</ogo:connection>
+ <ogo:connection>(-20 40 5)</ogo:connection>
+ <ogo:connection>(-20 60 6)</ogo:connection>
+ <ogo:connection>(20 -20 12)</ogo:connection>
+ <ogo:connection>(40 -20 13)</ogo:connection>
+ <ogo:connection>(60 -20 11)</ogo:connection>
+ <ogo:connection>(100 40 10)</ogo:connection>
+ <ogo:connection>(20 90 7)</ogo:connection>
+ <ogo:connection>(40 90 3)</ogo:connection>
+ <ogo:connection>(60 90 2)</ogo:connection>
+ <ogo:connection>(70 90 9)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>LM567</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 40)(0 40)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(10 40)(10 60)</ogo:line>
+ <ogo:line>(30 40)(30 60)</ogo:line>
+ <ogo:line>(50 40)(50 60)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 10 1)</ogo:connection>
+ <ogo:connection>(80 10 8)</ogo:connection>
+ <ogo:connection>(80 20 7)</ogo:connection>
+ <ogo:connection>(30 -20 4)</ogo:connection>
+ <ogo:connection>(10 60 5)</ogo:connection>
+ <ogo:connection>(30 60 6)</ogo:connection>
+ <ogo:connection>(50 60 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>LM390</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 30)(0 60)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(10 5)(10 -20)</ogo:line>
+ <ogo:line>(30 15)(30 -10)</ogo:line>
+ <ogo:line>(50 25)(50 0)</ogo:line>
+ <ogo:line>(10 55)(10 80)</ogo:line>
+ <ogo:line>(20 50)(20 80)</ogo:line>
+ <ogo:line>(30 45)(30 80)</ogo:line>
+ <ogo:line>(40 40)(40 60)</ogo:line>
+ <ogo:line>(50 35)(50 60)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 7)</ogo:connection>
+ <ogo:connection>(-20 20 10)</ogo:connection>
+ <ogo:connection>(-20 30 11)</ogo:connection>
+ <ogo:connection>(-20 40 12)</ogo:connection>
+ <ogo:connection>(-20 50 8)</ogo:connection>
+ <ogo:connection>(80 30 13)</ogo:connection>
+ <ogo:connection>(10 -20 14)</ogo:connection>
+ <ogo:connection>(30 -10 1)</ogo:connection>
+ <ogo:connection>(50 0 9)</ogo:connection>
+ <ogo:connection>(10 80 3)</ogo:connection>
+ <ogo:connection>(20 80 4)</ogo:connection>
+ <ogo:connection>(30 80 5)</ogo:connection>
+ <ogo:connection>(40 60 2)</ogo:connection>
+ <ogo:connection>(50 60 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+ </ogo:symbols>
+
+ <ogo:parts>
+ <ogo:part>
+ <ogo:name>LM555</ogo:name>
+ <ogo:symbol>555</ogo:symbol>
+ <ogo:description>555 timer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>T</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>G</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(12 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(17 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(22 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>V+</ogo:text>
+ <ogo:position>(27 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Out</ogo:text>
+ <ogo:position>(23 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(13 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>V-</ogo:text>
+ <ogo:position>(17 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LM555</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7805</ogo:name>
+ <ogo:symbol>78XX</ogo:symbol>
+ <ogo:description>5V Positive Regulator</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 -18)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IN</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(12 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>GND</ogo:text>
+ <ogo:position>(7 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OUT</ogo:text>
+ <ogo:position>(17 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(5 -5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7805</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7905</ogo:name>
+ <ogo:symbol>79XX</ogo:symbol>
+ <ogo:description>5V Negative Regulator</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 -18)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IN</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(12 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>GND</ogo:text>
+ <ogo:position>(7 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OUT</ogo:text>
+ <ogo:position>(17 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(5 -5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7905</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LM317</ogo:name>
+ <ogo:symbol>LM317</ogo:symbol>
+ <ogo:description>Adjustable Positive Regulator</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 -18)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IN</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(12 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ADJ</ogo:text>
+ <ogo:position>(7 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OUT</ogo:text>
+ <ogo:position>(17 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(5 -5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LM317</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LM337</ogo:name>
+ <ogo:symbol>79XX</ogo:symbol>
+ <ogo:description>Adjustable Negative Regulator</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 -18)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IN</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(12 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ADJ</ogo:text>
+ <ogo:position>(7 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OUT</ogo:text>
+ <ogo:position>(17 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(5 -5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LM337</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LM723</ogo:name>
+ <ogo:symbol>LM723</ogo:symbol>
+ <ogo:description>Adjustable Regulator</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 -5)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(1 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(1 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Rf</ogo:text>
+ <ogo:position>(1 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(8 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(28 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>c</ogo:text>
+ <ogo:position>(32 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(48 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Vc</ogo:text>
+ <ogo:position>(48 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(86 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Vo</ogo:text>
+ <ogo:position>(68 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(13 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(13 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(33 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>cs</ogo:text>
+ <ogo:position>(30 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(52 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>cl</ogo:text>
+ <ogo:position>(52 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(63 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>z</ogo:text>
+ <ogo:position>(65 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(75 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LM723</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2 %3 %4 %5 %6 %7 %9 %10 %11 %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LM567</ogo:name>
+ <ogo:symbol>LM567</ogo:symbol>
+ <ogo:description>Tone Decoder</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 -18)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IN</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OF</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(3 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TR</ogo:text>
+ <ogo:position>(7 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(23 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TC</ogo:text>
+ <ogo:position>(27 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(43 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>LF</ogo:text>
+ <ogo:position>(46 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OUT</ogo:text>
+ <ogo:position>(40 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>V-</ogo:text>
+ <ogo:position>(47 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(23 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>V+</ogo:text>
+ <ogo:position>(27 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LM567</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LM390</ogo:name>
+ <ogo:symbol>LM390</ogo:symbol>
+ <ogo:description>1 W Audio Amplifier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>gnd</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>v+</ogo:text>
+ <ogo:position>(10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(22 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(40 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(66 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>out</ogo:text>
+ <ogo:position>(40 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(3 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(13 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>gnd</ogo:text>
+ <ogo:position>(15 44)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(23 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(33 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(43 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(55 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LM390</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+ </ogo:parts>
+</ogo:library>
diff --git a/data/libraries/memory.oreglib b/data/libraries/memory.oreglib
new file mode 100644
index 0000000..df67ede
--- /dev/null
+++ b/data/libraries/memory.oreglib
@@ -0,0 +1,6586 @@
+<?xml version="1.0"?>
+<ogo:library xmlns:ogo="http://www.dtek.chalmers.se/~d4hult/oregano/v1">
+ <ogo:name>Memory</ogo:name>
+ <ogo:description>Memory Library</ogo:description>
+ <ogo:version>0.26</ogo:version>
+ <ogo:author>Hector Bellesi</ogo:author>
+ <ogo:last-updated>11-Aug-2001</ogo:last-updated>
+
+ <ogo:symbols>
+
+ <ogo:symbol>
+ <ogo:name>74S288</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 90)(0 90)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 90)(20 110)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 10)</ogo:connection>
+ <ogo:connection>(-20 20 11)</ogo:connection>
+ <ogo:connection>(-20 30 12)</ogo:connection>
+ <ogo:connection>(-20 40 13)</ogo:connection>
+ <ogo:connection>(-20 50 14)</ogo:connection>
+ <ogo:connection>(-20 80 15)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 110 8)</ogo:connection>
+ <ogo:connection>(60 10 1)</ogo:connection>
+ <ogo:connection>(60 20 2)</ogo:connection>
+ <ogo:connection>(60 30 3)</ogo:connection>
+ <ogo:connection>(60 40 4)</ogo:connection>
+ <ogo:connection>(60 50 5)</ogo:connection>
+ <ogo:connection>(60 60 6)</ogo:connection>
+ <ogo:connection>(60 70 7)</ogo:connection>
+ <ogo:connection>(60 80 9)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>2716</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 120)(0 120)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 120)(30 140)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(60 90)(80 90)</ogo:line>
+ <ogo:line>(66 100)(80 100)</ogo:line>
+ <ogo:line>(66 110)(80 110)</ogo:line>
+ <ogo:arc>(60 97)(66 103)</ogo:arc>
+ <ogo:arc>(60 107)(66 113)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 8)</ogo:connection>
+ <ogo:connection>(-20 20 7)</ogo:connection>
+ <ogo:connection>(-20 30 6)</ogo:connection>
+ <ogo:connection>(-20 40 5)</ogo:connection>
+ <ogo:connection>(-20 50 4)</ogo:connection>
+ <ogo:connection>(-20 60 3)</ogo:connection>
+ <ogo:connection>(-20 70 2)</ogo:connection>
+ <ogo:connection>(-20 80 1)</ogo:connection>
+ <ogo:connection>(-20 90 23)</ogo:connection>
+ <ogo:connection>(-20 100 22)</ogo:connection>
+ <ogo:connection>(-20 110 19)</ogo:connection>
+ <ogo:connection>(30 -20 24)</ogo:connection>
+ <ogo:connection>(30 140 12)</ogo:connection>
+ <ogo:connection>(80 10 9)</ogo:connection>
+ <ogo:connection>(80 20 10)</ogo:connection>
+ <ogo:connection>(80 30 11)</ogo:connection>
+ <ogo:connection>(80 40 13)</ogo:connection>
+ <ogo:connection>(80 50 14)</ogo:connection>
+ <ogo:connection>(80 60 15)</ogo:connection>
+ <ogo:connection>(80 70 16)</ogo:connection>
+ <ogo:connection>(80 80 17)</ogo:connection>
+ <ogo:connection>(80 90 21)</ogo:connection>
+ <ogo:connection>(80 100 18)</ogo:connection>
+ <ogo:connection>(80 110 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>2732</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 130)(0 130)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 130)(30 150)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(66 100)(80 100)</ogo:line>
+ <ogo:line>(66 110)(80 110)</ogo:line>
+ <ogo:arc>(60 97)(66 103)</ogo:arc>
+ <ogo:arc>(60 107)(66 113)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 8)</ogo:connection>
+ <ogo:connection>(-20 20 7)</ogo:connection>
+ <ogo:connection>(-20 30 6)</ogo:connection>
+ <ogo:connection>(-20 40 5)</ogo:connection>
+ <ogo:connection>(-20 50 4)</ogo:connection>
+ <ogo:connection>(-20 60 3)</ogo:connection>
+ <ogo:connection>(-20 70 2)</ogo:connection>
+ <ogo:connection>(-20 80 1)</ogo:connection>
+ <ogo:connection>(-20 90 23)</ogo:connection>
+ <ogo:connection>(-20 100 22)</ogo:connection>
+ <ogo:connection>(-20 110 19)</ogo:connection>
+ <ogo:connection>(-20 120 21)</ogo:connection>
+ <ogo:connection>(30 -20 24)</ogo:connection>
+ <ogo:connection>(30 150 12)</ogo:connection>
+ <ogo:connection>(80 10 9)</ogo:connection>
+ <ogo:connection>(80 20 10)</ogo:connection>
+ <ogo:connection>(80 30 11)</ogo:connection>
+ <ogo:connection>(80 40 13)</ogo:connection>
+ <ogo:connection>(80 50 14)</ogo:connection>
+ <ogo:connection>(80 60 15)</ogo:connection>
+ <ogo:connection>(80 70 16)</ogo:connection>
+ <ogo:connection>(80 80 17)</ogo:connection>
+ <ogo:connection>(80 100 18)</ogo:connection>
+ <ogo:connection>(80 110 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>2764</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 140)(0 140)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 140)(30 160)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(60 100)(80 100)</ogo:line>
+ <ogo:line>(66 110)(80 110)</ogo:line>
+ <ogo:line>(66 120)(80 120)</ogo:line>
+ <ogo:line>(66 130)(80 130)</ogo:line>
+ <ogo:arc>(60 107)(66 113)</ogo:arc>
+ <ogo:arc>(60 127)(66 133)</ogo:arc>
+ <ogo:arc>(60 117)(66 123)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 10)</ogo:connection>
+ <ogo:connection>(-20 20 9)</ogo:connection>
+ <ogo:connection>(-20 30 8)</ogo:connection>
+ <ogo:connection>(-20 40 7)</ogo:connection>
+ <ogo:connection>(-20 50 6)</ogo:connection>
+ <ogo:connection>(-20 60 5)</ogo:connection>
+ <ogo:connection>(-20 70 4)</ogo:connection>
+ <ogo:connection>(-20 80 3)</ogo:connection>
+ <ogo:connection>(-20 90 25)</ogo:connection>
+ <ogo:connection>(-20 100 24)</ogo:connection>
+ <ogo:connection>(-20 110 21)</ogo:connection>
+ <ogo:connection>(-20 120 23)</ogo:connection>
+ <ogo:connection>(-20 130 2)</ogo:connection>
+ <ogo:connection>(30 -20 28)</ogo:connection>
+ <ogo:connection>(30 160 14)</ogo:connection>
+ <ogo:connection>(80 10 11)</ogo:connection>
+ <ogo:connection>(80 20 12)</ogo:connection>
+ <ogo:connection>(80 30 13)</ogo:connection>
+ <ogo:connection>(80 40 15)</ogo:connection>
+ <ogo:connection>(80 50 16)</ogo:connection>
+ <ogo:connection>(80 60 17)</ogo:connection>
+ <ogo:connection>(80 70 18)</ogo:connection>
+ <ogo:connection>(80 80 19)</ogo:connection>
+ <ogo:connection>(80 100 1)</ogo:connection>
+ <ogo:connection>(80 110 27)</ogo:connection>
+ <ogo:connection>(80 120 22)</ogo:connection>
+ <ogo:connection>(80 130 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ <ogo:symbol>
+ <ogo:name>27128</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 150)(0 150)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 150)(30 170)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(60 100)(80 100)</ogo:line>
+ <ogo:line>(66 110)(80 110)</ogo:line>
+ <ogo:line>(66 130)(80 130)</ogo:line>
+ <ogo:line>(66 140)(80 140)</ogo:line>
+ <ogo:arc>(60 107)(66 113)</ogo:arc>
+ <ogo:arc>(60 127)(66 133)</ogo:arc>
+ <ogo:arc>(60 137)(66 143)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 10)</ogo:connection>
+ <ogo:connection>(-20 20 9)</ogo:connection>
+ <ogo:connection>(-20 30 8)</ogo:connection>
+ <ogo:connection>(-20 40 7)</ogo:connection>
+ <ogo:connection>(-20 50 6)</ogo:connection>
+ <ogo:connection>(-20 60 5)</ogo:connection>
+ <ogo:connection>(-20 70 4)</ogo:connection>
+ <ogo:connection>(-20 80 3)</ogo:connection>
+ <ogo:connection>(-20 90 25)</ogo:connection>
+ <ogo:connection>(-20 100 24)</ogo:connection>
+ <ogo:connection>(-20 110 21)</ogo:connection>
+ <ogo:connection>(-20 120 23)</ogo:connection>
+ <ogo:connection>(-20 130 2)</ogo:connection>
+ <ogo:connection>(-20 140 26)</ogo:connection>
+ <ogo:connection>(30 -20 28)</ogo:connection>
+ <ogo:connection>(30 170 14)</ogo:connection>
+ <ogo:connection>(80 10 11)</ogo:connection>
+ <ogo:connection>(80 20 12)</ogo:connection>
+ <ogo:connection>(80 30 13)</ogo:connection>
+ <ogo:connection>(80 40 15)</ogo:connection>
+ <ogo:connection>(80 50 16)</ogo:connection>
+ <ogo:connection>(80 60 17)</ogo:connection>
+ <ogo:connection>(80 70 18)</ogo:connection>
+ <ogo:connection>(80 80 19)</ogo:connection>
+ <ogo:connection>(80 100 1)</ogo:connection>
+ <ogo:connection>(80 110 27)</ogo:connection>
+ <ogo:connection>(80 130 22)</ogo:connection>
+ <ogo:connection>(80 140 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>27256</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 160)(0 160)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 160)(30 180)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(60 100)(80 100)</ogo:line>
+ <ogo:line>(66 120)(80 120)</ogo:line>
+ <ogo:line>(66 140)(80 140)</ogo:line>
+ <ogo:arc>(60 117)(66 123)</ogo:arc>
+ <ogo:arc>(60 137)(66 143)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 10)</ogo:connection>
+ <ogo:connection>(-20 20 9)</ogo:connection>
+ <ogo:connection>(-20 30 8)</ogo:connection>
+ <ogo:connection>(-20 40 7)</ogo:connection>
+ <ogo:connection>(-20 50 6)</ogo:connection>
+ <ogo:connection>(-20 60 5)</ogo:connection>
+ <ogo:connection>(-20 70 4)</ogo:connection>
+ <ogo:connection>(-20 80 3)</ogo:connection>
+ <ogo:connection>(-20 90 25)</ogo:connection>
+ <ogo:connection>(-20 100 24)</ogo:connection>
+ <ogo:connection>(-20 110 21)</ogo:connection>
+ <ogo:connection>(-20 120 23)</ogo:connection>
+ <ogo:connection>(-20 130 2)</ogo:connection>
+ <ogo:connection>(-20 140 26)</ogo:connection>
+ <ogo:connection>(-20 150 27)</ogo:connection>
+ <ogo:connection>(30 -20 28)</ogo:connection>
+ <ogo:connection>(30 180 14)</ogo:connection>
+ <ogo:connection>(80 10 11)</ogo:connection>
+ <ogo:connection>(80 20 12)</ogo:connection>
+ <ogo:connection>(80 30 13)</ogo:connection>
+ <ogo:connection>(80 40 15)</ogo:connection>
+ <ogo:connection>(80 50 16)</ogo:connection>
+ <ogo:connection>(80 60 17)</ogo:connection>
+ <ogo:connection>(80 70 18)</ogo:connection>
+ <ogo:connection>(80 80 19)</ogo:connection>
+ <ogo:connection>(80 100 1)</ogo:connection>
+ <ogo:connection>(80 120 22)</ogo:connection>
+ <ogo:connection>(80 140 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>27512</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 170)(0 170)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 170)(30 190)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(66 120)(80 120)</ogo:line>
+ <ogo:line>(66 140)(80 140)</ogo:line>
+ <ogo:arc>(60 117)(66 123)</ogo:arc>
+ <ogo:arc>(60 137)(66 143)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 10)</ogo:connection>
+ <ogo:connection>(-20 20 9)</ogo:connection>
+ <ogo:connection>(-20 30 8)</ogo:connection>
+ <ogo:connection>(-20 40 7)</ogo:connection>
+ <ogo:connection>(-20 50 6)</ogo:connection>
+ <ogo:connection>(-20 60 5)</ogo:connection>
+ <ogo:connection>(-20 70 4)</ogo:connection>
+ <ogo:connection>(-20 80 3)</ogo:connection>
+ <ogo:connection>(-20 90 25)</ogo:connection>
+ <ogo:connection>(-20 100 24)</ogo:connection>
+ <ogo:connection>(-20 110 21)</ogo:connection>
+ <ogo:connection>(-20 120 23)</ogo:connection>
+ <ogo:connection>(-20 130 2)</ogo:connection>
+ <ogo:connection>(-20 140 26)</ogo:connection>
+ <ogo:connection>(-20 150 27)</ogo:connection>
+ <ogo:connection>(-20 160 1)</ogo:connection>
+ <ogo:connection>(30 -20 28)</ogo:connection>
+ <ogo:connection>(30 190 14)</ogo:connection>
+ <ogo:connection>(80 10 11)</ogo:connection>
+ <ogo:connection>(80 20 12)</ogo:connection>
+ <ogo:connection>(80 30 13)</ogo:connection>
+ <ogo:connection>(80 40 15)</ogo:connection>
+ <ogo:connection>(80 50 16)</ogo:connection>
+ <ogo:connection>(80 60 17)</ogo:connection>
+ <ogo:connection>(80 70 18)</ogo:connection>
+ <ogo:connection>(80 80 19)</ogo:connection>
+ <ogo:connection>(80 120 22)</ogo:connection>
+ <ogo:connection>(80 140 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>27010</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 180)(0 180)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(-20 170)(0 170)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 180)(30 200)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(60 100)(80 100)</ogo:line>
+ <ogo:line>(66 120)(80 120)</ogo:line>
+ <ogo:line>(66 140)(80 140)</ogo:line>
+ <ogo:line>(66 160)(80 160)</ogo:line>
+ <ogo:arc>(60 117)(66 123)</ogo:arc>
+ <ogo:arc>(60 137)(66 143)</ogo:arc>
+ <ogo:arc>(60 157)(66 163)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 12)</ogo:connection>
+ <ogo:connection>(-20 20 11)</ogo:connection>
+ <ogo:connection>(-20 30 10)</ogo:connection>
+ <ogo:connection>(-20 40 9)</ogo:connection>
+ <ogo:connection>(-20 50 8)</ogo:connection>
+ <ogo:connection>(-20 60 7)</ogo:connection>
+ <ogo:connection>(-20 70 6)</ogo:connection>
+ <ogo:connection>(-20 80 5)</ogo:connection>
+ <ogo:connection>(-20 90 27)</ogo:connection>
+ <ogo:connection>(-20 100 26)</ogo:connection>
+ <ogo:connection>(-20 110 23)</ogo:connection>
+ <ogo:connection>(-20 120 25)</ogo:connection>
+ <ogo:connection>(-20 130 4)</ogo:connection>
+ <ogo:connection>(-20 140 28)</ogo:connection>
+ <ogo:connection>(-20 150 3)</ogo:connection>
+ <ogo:connection>(-20 160 31)</ogo:connection>
+ <ogo:connection>(-20 170 2)</ogo:connection>
+ <ogo:connection>(30 -20 32)</ogo:connection>
+ <ogo:connection>(30 200 16)</ogo:connection>
+ <ogo:connection>(80 10 13)</ogo:connection>
+ <ogo:connection>(80 20 14)</ogo:connection>
+ <ogo:connection>(80 30 15)</ogo:connection>
+ <ogo:connection>(80 40 17)</ogo:connection>
+ <ogo:connection>(80 50 18)</ogo:connection>
+ <ogo:connection>(80 60 19)</ogo:connection>
+ <ogo:connection>(80 70 20)</ogo:connection>
+ <ogo:connection>(80 80 21)</ogo:connection>
+ <ogo:connection>(80 100 1)</ogo:connection>
+ <ogo:connection>(80 120 31)</ogo:connection>
+ <ogo:connection>(80 140 24)</ogo:connection>
+ <ogo:connection>(80 160 22)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>27020</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 190)(0 190)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(-20 170)(0 170)</ogo:line>
+ <ogo:line>(-20 180)(0 180)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 190)(30 210)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(60 100)(80 100)</ogo:line>
+ <ogo:line>(66 120)(80 120)</ogo:line>
+ <ogo:line>(66 140)(80 140)</ogo:line>
+ <ogo:line>(66 160)(80 160)</ogo:line>
+ <ogo:arc>(60 117)(66 123)</ogo:arc>
+ <ogo:arc>(60 137)(66 143)</ogo:arc>
+ <ogo:arc>(60 157)(66 163)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 12)</ogo:connection>
+ <ogo:connection>(-20 20 11)</ogo:connection>
+ <ogo:connection>(-20 30 10)</ogo:connection>
+ <ogo:connection>(-20 40 9)</ogo:connection>
+ <ogo:connection>(-20 50 8)</ogo:connection>
+ <ogo:connection>(-20 60 7)</ogo:connection>
+ <ogo:connection>(-20 70 6)</ogo:connection>
+ <ogo:connection>(-20 80 5)</ogo:connection>
+ <ogo:connection>(-20 90 27)</ogo:connection>
+ <ogo:connection>(-20 100 26)</ogo:connection>
+ <ogo:connection>(-20 110 23)</ogo:connection>
+ <ogo:connection>(-20 120 25)</ogo:connection>
+ <ogo:connection>(-20 130 4)</ogo:connection>
+ <ogo:connection>(-20 140 28)</ogo:connection>
+ <ogo:connection>(-20 150 3)</ogo:connection>
+ <ogo:connection>(-20 160 31)</ogo:connection>
+ <ogo:connection>(-20 170 2)</ogo:connection>
+ <ogo:connection>(-20 180 30)</ogo:connection>
+ <ogo:connection>(30 -20 32)</ogo:connection>
+ <ogo:connection>(30 210 16)</ogo:connection>
+ <ogo:connection>(80 10 13)</ogo:connection>
+ <ogo:connection>(80 20 14)</ogo:connection>
+ <ogo:connection>(80 30 15)</ogo:connection>
+ <ogo:connection>(80 40 17)</ogo:connection>
+ <ogo:connection>(80 50 18)</ogo:connection>
+ <ogo:connection>(80 60 19)</ogo:connection>
+ <ogo:connection>(80 70 20)</ogo:connection>
+ <ogo:connection>(80 80 21)</ogo:connection>
+ <ogo:connection>(80 100 1)</ogo:connection>
+ <ogo:connection>(80 120 31)</ogo:connection>
+ <ogo:connection>(80 140 24)</ogo:connection>
+ <ogo:connection>(80 160 22)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>27040</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 200)(0 200)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(-20 170)(0 170)</ogo:line>
+ <ogo:line>(-20 180)(0 180)</ogo:line>
+ <ogo:line>(-20 190)(0 190)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 200)(30 220)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(60 100)(80 100)</ogo:line>
+ <ogo:line>(66 140)(80 140)</ogo:line>
+ <ogo:line>(66 160)(80 160)</ogo:line>
+ <ogo:arc>(60 137)(66 143)</ogo:arc>
+ <ogo:arc>(60 157)(66 163)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 12)</ogo:connection>
+ <ogo:connection>(-20 20 11)</ogo:connection>
+ <ogo:connection>(-20 30 10)</ogo:connection>
+ <ogo:connection>(-20 40 9)</ogo:connection>
+ <ogo:connection>(-20 50 8)</ogo:connection>
+ <ogo:connection>(-20 60 7)</ogo:connection>
+ <ogo:connection>(-20 70 6)</ogo:connection>
+ <ogo:connection>(-20 80 5)</ogo:connection>
+ <ogo:connection>(-20 90 27)</ogo:connection>
+ <ogo:connection>(-20 100 26)</ogo:connection>
+ <ogo:connection>(-20 110 23)</ogo:connection>
+ <ogo:connection>(-20 120 25)</ogo:connection>
+ <ogo:connection>(-20 130 4)</ogo:connection>
+ <ogo:connection>(-20 140 28)</ogo:connection>
+ <ogo:connection>(-20 150 3)</ogo:connection>
+ <ogo:connection>(-20 160 31)</ogo:connection>
+ <ogo:connection>(-20 170 2)</ogo:connection>
+ <ogo:connection>(-20 180 30)</ogo:connection>
+ <ogo:connection>(-20 190 31)</ogo:connection>
+ <ogo:connection>(30 -20 32)</ogo:connection>
+ <ogo:connection>(30 220 16)</ogo:connection>
+ <ogo:connection>(80 10 13)</ogo:connection>
+ <ogo:connection>(80 20 14)</ogo:connection>
+ <ogo:connection>(80 30 15)</ogo:connection>
+ <ogo:connection>(80 40 17)</ogo:connection>
+ <ogo:connection>(80 50 18)</ogo:connection>
+ <ogo:connection>(80 60 19)</ogo:connection>
+ <ogo:connection>(80 70 20)</ogo:connection>
+ <ogo:connection>(80 80 21)</ogo:connection>
+ <ogo:connection>(80 100 1)</ogo:connection>
+ <ogo:connection>(80 140 24)</ogo:connection>
+ <ogo:connection>(80 160 22)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>27080</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 210)(0 210)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(-20 170)(0 170)</ogo:line>
+ <ogo:line>(-20 180)(0 180)</ogo:line>
+ <ogo:line>(-20 190)(0 190)</ogo:line>
+ <ogo:line>(-20 200)(0 200)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 210)(30 230)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(66 140)(80 140)</ogo:line>
+ <ogo:line>(66 160)(80 160)</ogo:line>
+ <ogo:arc>(60 137)(66 143)</ogo:arc>
+ <ogo:arc>(60 157)(66 163)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 12)</ogo:connection>
+ <ogo:connection>(-20 20 11)</ogo:connection>
+ <ogo:connection>(-20 30 10)</ogo:connection>
+ <ogo:connection>(-20 40 9)</ogo:connection>
+ <ogo:connection>(-20 50 8)</ogo:connection>
+ <ogo:connection>(-20 60 7)</ogo:connection>
+ <ogo:connection>(-20 70 6)</ogo:connection>
+ <ogo:connection>(-20 80 5)</ogo:connection>
+ <ogo:connection>(-20 90 27)</ogo:connection>
+ <ogo:connection>(-20 100 26)</ogo:connection>
+ <ogo:connection>(-20 110 23)</ogo:connection>
+ <ogo:connection>(-20 120 25)</ogo:connection>
+ <ogo:connection>(-20 130 4)</ogo:connection>
+ <ogo:connection>(-20 140 28)</ogo:connection>
+ <ogo:connection>(-20 150 3)</ogo:connection>
+ <ogo:connection>(-20 160 31)</ogo:connection>
+ <ogo:connection>(-20 170 2)</ogo:connection>
+ <ogo:connection>(-20 180 30)</ogo:connection>
+ <ogo:connection>(-20 190 31)</ogo:connection>
+ <ogo:connection>(-20 200 1)</ogo:connection>
+ <ogo:connection>(30 -20 32)</ogo:connection>
+ <ogo:connection>(30 230 16)</ogo:connection>
+ <ogo:connection>(80 10 13)</ogo:connection>
+ <ogo:connection>(80 20 14)</ogo:connection>
+ <ogo:connection>(80 30 15)</ogo:connection>
+ <ogo:connection>(80 40 17)</ogo:connection>
+ <ogo:connection>(80 50 18)</ogo:connection>
+ <ogo:connection>(80 60 19)</ogo:connection>
+ <ogo:connection>(80 70 20)</ogo:connection>
+ <ogo:connection>(80 80 21)</ogo:connection>
+ <ogo:connection>(80 140 24)</ogo:connection>
+ <ogo:connection>(80 160 22)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ <ogo:symbol>
+ <ogo:name>6116</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 120)(0 120)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 120)(30 140)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(66 90)(80 90)</ogo:line>
+ <ogo:line>(66 100)(80 100)</ogo:line>
+ <ogo:line>(66 110)(80 110)</ogo:line>
+ <ogo:arc>(60 87)(66 93)</ogo:arc>
+ <ogo:arc>(60 97)(66 103)</ogo:arc>
+ <ogo:arc>(60 107)(66 113)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 8)</ogo:connection>
+ <ogo:connection>(-20 20 7)</ogo:connection>
+ <ogo:connection>(-20 30 6)</ogo:connection>
+ <ogo:connection>(-20 40 5)</ogo:connection>
+ <ogo:connection>(-20 50 4)</ogo:connection>
+ <ogo:connection>(-20 60 3)</ogo:connection>
+ <ogo:connection>(-20 70 2)</ogo:connection>
+ <ogo:connection>(-20 80 1)</ogo:connection>
+ <ogo:connection>(-20 90 23)</ogo:connection>
+ <ogo:connection>(-20 100 22)</ogo:connection>
+ <ogo:connection>(-20 110 19)</ogo:connection>
+ <ogo:connection>(30 -20 24)</ogo:connection>
+ <ogo:connection>(30 140 12)</ogo:connection>
+ <ogo:connection>(80 10 9)</ogo:connection>
+ <ogo:connection>(80 20 10)</ogo:connection>
+ <ogo:connection>(80 30 11)</ogo:connection>
+ <ogo:connection>(80 40 13)</ogo:connection>
+ <ogo:connection>(80 50 14)</ogo:connection>
+ <ogo:connection>(80 60 15)</ogo:connection>
+ <ogo:connection>(80 70 16)</ogo:connection>
+ <ogo:connection>(80 80 17)</ogo:connection>
+ <ogo:connection>(80 90 21)</ogo:connection>
+ <ogo:connection>(80 100 18)</ogo:connection>
+ <ogo:connection>(80 110 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>6064</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 140)(0 140)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 140)(30 160)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(60 100)(80 100)</ogo:line>
+ <ogo:line>(66 110)(80 110)</ogo:line>
+ <ogo:line>(66 120)(80 120)</ogo:line>
+ <ogo:line>(66 130)(80 130)</ogo:line>
+ <ogo:arc>(60 107)(66 113)</ogo:arc>
+ <ogo:arc>(60 117)(66 123)</ogo:arc>
+ <ogo:arc>(60 127)(66 133)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 10)</ogo:connection>
+ <ogo:connection>(-20 20 9)</ogo:connection>
+ <ogo:connection>(-20 30 8)</ogo:connection>
+ <ogo:connection>(-20 40 7)</ogo:connection>
+ <ogo:connection>(-20 50 6)</ogo:connection>
+ <ogo:connection>(-20 60 5)</ogo:connection>
+ <ogo:connection>(-20 70 4)</ogo:connection>
+ <ogo:connection>(-20 80 3)</ogo:connection>
+ <ogo:connection>(-20 90 25)</ogo:connection>
+ <ogo:connection>(-20 100 24)</ogo:connection>
+ <ogo:connection>(-20 110 21)</ogo:connection>
+ <ogo:connection>(-20 120 23)</ogo:connection>
+ <ogo:connection>(-20 130 2)</ogo:connection>
+ <ogo:connection>(30 -20 28)</ogo:connection>
+ <ogo:connection>(30 160 14)</ogo:connection>
+ <ogo:connection>(80 10 11)</ogo:connection>
+ <ogo:connection>(80 20 12)</ogo:connection>
+ <ogo:connection>(80 30 13)</ogo:connection>
+ <ogo:connection>(80 40 15)</ogo:connection>
+ <ogo:connection>(80 50 16)</ogo:connection>
+ <ogo:connection>(80 60 17)</ogo:connection>
+ <ogo:connection>(80 70 18)</ogo:connection>
+ <ogo:connection>(80 80 19)</ogo:connection>
+ <ogo:connection>(80 100 26)</ogo:connection>
+ <ogo:connection>(80 110 20)</ogo:connection>
+ <ogo:connection>(80 120 22)</ogo:connection>
+ <ogo:connection>(80 130 27)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>60256</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 160)(0 160)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 160)(30 180)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(66 100)(80 100)</ogo:line>
+ <ogo:line>(66 120)(80 120)</ogo:line>
+ <ogo:line>(66 140)(80 140)</ogo:line>
+ <ogo:arc>(60 97)(66 103)</ogo:arc>
+ <ogo:arc>(60 117)(66 123)</ogo:arc>
+ <ogo:arc>(60 137)(66 143)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 10)</ogo:connection>
+ <ogo:connection>(-20 20 9)</ogo:connection>
+ <ogo:connection>(-20 30 8)</ogo:connection>
+ <ogo:connection>(-20 40 7)</ogo:connection>
+ <ogo:connection>(-20 50 6)</ogo:connection>
+ <ogo:connection>(-20 60 5)</ogo:connection>
+ <ogo:connection>(-20 70 4)</ogo:connection>
+ <ogo:connection>(-20 80 3)</ogo:connection>
+ <ogo:connection>(-20 90 25)</ogo:connection>
+ <ogo:connection>(-20 100 24)</ogo:connection>
+ <ogo:connection>(-20 110 21)</ogo:connection>
+ <ogo:connection>(-20 120 23)</ogo:connection>
+ <ogo:connection>(-20 130 2)</ogo:connection>
+ <ogo:connection>(-20 140 26)</ogo:connection>
+ <ogo:connection>(-20 150 1)</ogo:connection>
+ <ogo:connection>(30 -20 28)</ogo:connection>
+ <ogo:connection>(30 180 14)</ogo:connection>
+ <ogo:connection>(80 10 11)</ogo:connection>
+ <ogo:connection>(80 20 12)</ogo:connection>
+ <ogo:connection>(80 30 13)</ogo:connection>
+ <ogo:connection>(80 40 15)</ogo:connection>
+ <ogo:connection>(80 50 16)</ogo:connection>
+ <ogo:connection>(80 60 17)</ogo:connection>
+ <ogo:connection>(80 70 18)</ogo:connection>
+ <ogo:connection>(80 80 19)</ogo:connection>
+ <ogo:connection>(80 100 27)</ogo:connection>
+ <ogo:connection>(80 120 22)</ogo:connection>
+ <ogo:connection>(80 140 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ <ogo:symbol>
+ <ogo:name>55100</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 180)(0 180)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(-20 170)(0 170)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 180)(30 200)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(60 100)(80 100)</ogo:line>
+ <ogo:line>(66 110)(80 110)</ogo:line>
+ <ogo:line>(60 130)(80 130)</ogo:line>
+ <ogo:line>(66 140)(80 140)</ogo:line>
+ <ogo:arc>(60 107)(66 113)</ogo:arc>
+ <ogo:arc>(60 137)(66 143)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 12)</ogo:connection>
+ <ogo:connection>(-20 20 11)</ogo:connection>
+ <ogo:connection>(-20 30 10)</ogo:connection>
+ <ogo:connection>(-20 40 9)</ogo:connection>
+ <ogo:connection>(-20 50 8)</ogo:connection>
+ <ogo:connection>(-20 60 7)</ogo:connection>
+ <ogo:connection>(-20 70 6)</ogo:connection>
+ <ogo:connection>(-20 80 5)</ogo:connection>
+ <ogo:connection>(-20 90 27)</ogo:connection>
+ <ogo:connection>(-20 100 26)</ogo:connection>
+ <ogo:connection>(-20 110 23)</ogo:connection>
+ <ogo:connection>(-20 120 25)</ogo:connection>
+ <ogo:connection>(-20 130 4)</ogo:connection>
+ <ogo:connection>(-20 140 28)</ogo:connection>
+ <ogo:connection>(-20 150 3)</ogo:connection>
+ <ogo:connection>(-20 160 31)</ogo:connection>
+ <ogo:connection>(-20 170 2)</ogo:connection>
+ <ogo:connection>(30 -20 32)</ogo:connection>
+ <ogo:connection>(30 200 16)</ogo:connection>
+ <ogo:connection>(80 10 13)</ogo:connection>
+ <ogo:connection>(80 20 14)</ogo:connection>
+ <ogo:connection>(80 30 15)</ogo:connection>
+ <ogo:connection>(80 40 17)</ogo:connection>
+ <ogo:connection>(80 50 18)</ogo:connection>
+ <ogo:connection>(80 60 19)</ogo:connection>
+ <ogo:connection>(80 70 20)</ogo:connection>
+ <ogo:connection>(80 80 21)</ogo:connection>
+ <ogo:connection>(80 100 29)</ogo:connection>
+ <ogo:connection>(80 110 24)</ogo:connection>
+ <ogo:connection>(80 130 30)</ogo:connection>
+ <ogo:connection>(80 140 22)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>NM93C06</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 40)(0 40)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 40)(30 60)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 3)</ogo:connection>
+ <ogo:connection>(-20 20 2)</ogo:connection>
+ <ogo:connection>(-20 30 1)</ogo:connection>
+ <ogo:connection>(30 -20 8)</ogo:connection>
+ <ogo:connection>(30 60 5)</ogo:connection>
+ <ogo:connection>(80 20 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>74S287</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 90)(0 90)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 90)(20 110)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(46 70)(60 70)</ogo:line>
+ <ogo:line>(46 80)(60 80)</ogo:line>
+ <ogo:arc>(40 67)(46 73)</ogo:arc>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 5)</ogo:connection>
+ <ogo:connection>(-20 20 6)</ogo:connection>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(-20 40 4)</ogo:connection>
+ <ogo:connection>(-20 50 3)</ogo:connection>
+ <ogo:connection>(-20 60 2)</ogo:connection>
+ <ogo:connection>(-20 70 1)</ogo:connection>
+ <ogo:connection>(-20 80 15)</ogo:connection>
+ <ogo:connection>(20 -20 16)</ogo:connection>
+ <ogo:connection>(20 110 8)</ogo:connection>
+ <ogo:connection>(60 10 12)</ogo:connection>
+ <ogo:connection>(60 20 11)</ogo:connection>
+ <ogo:connection>(60 30 10)</ogo:connection>
+ <ogo:connection>(60 40 9)</ogo:connection>
+ <ogo:connection>(60 70 13)</ogo:connection>
+ <ogo:connection>(60 80 14)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+
+
+
+
+
+ </ogo:symbols>
+
+
+
+ <ogo:parts>
+
+
+
+ <ogo:part>
+ <ogo:name>74S288</ogo:name>
+ <ogo:symbol>74S288</ogo:symbol>
+ <ogo:description>32 bytes PROM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(9 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(14 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(24 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(24 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(47 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(24 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(47 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(24 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(47 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(24 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(47 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(24 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(47 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(24 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(24 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(25 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74S288</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>2716</ogo:name>
+ <ogo:symbol>2716</ogo:symbol>
+ <ogo:description>2K EPROM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A9</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A10</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(14 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(14 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(42 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(42 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(42 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(42 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(42 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(42 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(42 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(42 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(67 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Vpp</ogo:text>
+ <ogo:position>(40 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(67 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CE</ogo:text>
+ <ogo:position>(42 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(67 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(42 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>2716</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>2732</ogo:name>
+ <ogo:symbol>2732</ogo:symbol>
+ <ogo:description>4K EPROM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A9</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A10</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A11</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(14 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(14 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(42 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(42 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(42 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(42 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(42 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(42 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(42 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(42 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(67 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CE</ogo:text>
+ <ogo:position>(42 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(67 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(42 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>2732</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>2764</ogo:name>
+ <ogo:symbol>2764</ogo:symbol>
+ <ogo:description>8K EPROM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A9</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A10</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A11</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A12</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(14 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(14 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(42 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(42 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(42 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(42 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(42 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(42 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(42 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(42 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(67 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Vpp</ogo:text>
+ <ogo:position>(40 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(67 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PGM</ogo:text>
+ <ogo:position>(36 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(67 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(42 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(67 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS</ogo:text>
+ <ogo:position>(42 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>2764</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %27 %28 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>27128</ogo:name>
+ <ogo:symbol>27128</ogo:symbol>
+ <ogo:description>16K EPROM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A9</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A10</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A11</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A12</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A13</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(14 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(14 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(42 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(42 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(42 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(42 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(42 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(42 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(42 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(42 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(67 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Vpp</ogo:text>
+ <ogo:position>(40 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(67 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PGM</ogo:text>
+ <ogo:position>(36 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(67 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(42 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(67 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS</ogo:text>
+ <ogo:position>(42 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>27128</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>27256</ogo:name>
+ <ogo:symbol>27256</ogo:symbol>
+ <ogo:description>32K EPROM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A9</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A10</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A11</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A12</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A13</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-17 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A14</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(14 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(14 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(42 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(42 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(42 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(42 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(42 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(42 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(42 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(42 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(67 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Vpp</ogo:text>
+ <ogo:position>(40 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(67 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(42 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(67 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS</ogo:text>
+ <ogo:position>(42 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>27256</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>27512</ogo:name>
+ <ogo:symbol>27512</ogo:symbol>
+ <ogo:description>64K EPROM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A9</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A10</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A11</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A12</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A13</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-17 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A14</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A15</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(14 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(14 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(42 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(42 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(42 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(42 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(42 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(42 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(42 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(42 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(67 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(42 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(67 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS</ogo:text>
+ <ogo:position>(42 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>27512</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>27C010</ogo:name>
+ <ogo:symbol>27010</ogo:symbol>
+ <ogo:description>128Kx8 EPROM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A9</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A10</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A11</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A12</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A13</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A14</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(-17 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A15</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A16</ogo:text>
+ <ogo:position>(2 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(14 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(14 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(42 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(42 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(42 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(42 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(42 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(42 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(42 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(42 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(67 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Vpp</ogo:text>
+ <ogo:position>(36 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(67 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PGM</ogo:text>
+ <ogo:position>(36 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(67 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(42 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(67 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS</ogo:text>
+ <ogo:position>(42 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-35 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>27C010</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %31 %32 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>27C020</ogo:name>
+ <ogo:symbol>27020</ogo:symbol>
+ <ogo:description>256Kx8 EPROM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A9</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A10</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A11</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A12</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A13</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A14</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(-17 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A15</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A16</ogo:text>
+ <ogo:position>(2 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(-17 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A17</ogo:text>
+ <ogo:position>(2 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(14 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(14 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(42 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(42 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(42 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(42 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(42 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(42 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(42 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(42 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(67 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Vpp</ogo:text>
+ <ogo:position>(36 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(67 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PGM</ogo:text>
+ <ogo:position>(36 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(67 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(42 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(67 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS</ogo:text>
+ <ogo:position>(42 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-35 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>27C020</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %31 %32 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>27C040</ogo:name>
+ <ogo:symbol>27040</ogo:symbol>
+ <ogo:description>512Kx8 EPROM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A9</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A10</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A11</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A12</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A13</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A14</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(-17 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A15</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A16</ogo:text>
+ <ogo:position>(2 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(-17 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A17</ogo:text>
+ <ogo:position>(2 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(-17 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A18</ogo:text>
+ <ogo:position>(2 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(14 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(14 215)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(42 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(42 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(42 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(42 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(42 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(42 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(42 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(42 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(67 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Vpp</ogo:text>
+ <ogo:position>(36 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(67 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(42 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(67 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS</ogo:text>
+ <ogo:position>(42 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-35 215)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>27C040</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %31 %32 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>27C080</ogo:name>
+ <ogo:symbol>27080</ogo:symbol>
+ <ogo:description>1Mx8 EPROM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A9</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A10</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A11</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A12</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A13</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A14</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(-17 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A15</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A16</ogo:text>
+ <ogo:position>(2 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(-17 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A17</ogo:text>
+ <ogo:position>(2 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(-17 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A18</ogo:text>
+ <ogo:position>(2 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A19</ogo:text>
+ <ogo:position>(2 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(14 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(14 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(42 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(42 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(42 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(42 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(42 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(42 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(42 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(42 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(67 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(42 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(67 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS</ogo:text>
+ <ogo:position>(42 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-35 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>27C080</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %31 %32 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>6116</ogo:name>
+ <ogo:symbol>6116</ogo:symbol>
+ <ogo:description>2K Static RAM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A9</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A10</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(14 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(14 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(42 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(42 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(42 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(42 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(42 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(42 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(42 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(42 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(67 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>W</ogo:text>
+ <ogo:position>(45 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(67 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CE</ogo:text>
+ <ogo:position>(42 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(67 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(42 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>6116</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>6064</ogo:name>
+ <ogo:symbol>6064</ogo:symbol>
+ <ogo:description>8K Static RAM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A9</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A10</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A11</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A12</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(14 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(14 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(42 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(42 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(42 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(42 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(42 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(42 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(42 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(42 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(67 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E2</ogo:text>
+ <ogo:position>(42 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(67 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E1</ogo:text>
+ <ogo:position>(42 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(67 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(42 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(67 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>W</ogo:text>
+ <ogo:position>(45 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>6064</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>60256</ogo:name>
+ <ogo:symbol>60256</ogo:symbol>
+ <ogo:description>32K Static RAM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A9</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A10</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A11</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A12</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A13</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A14</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(14 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(14 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(42 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(42 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(42 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(42 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(42 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(42 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(42 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(42 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(67 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>W</ogo:text>
+ <ogo:position>(45 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(67 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(42 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(67 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CE</ogo:text>
+ <ogo:position>(42 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>60256</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>55100</ogo:name>
+ <ogo:symbol>55100</ogo:symbol>
+ <ogo:description>128Kx8 Static RAM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-17 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A9</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A10</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A11</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A12</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A13</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A14</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(-17 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A15</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A16</ogo:text>
+ <ogo:position>(2 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(14 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(14 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(42 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(42 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(42 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(42 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(42 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(42 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(42 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(42 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>29</ogo:name>
+ <ogo:text>29</ogo:text>
+ <ogo:position>(67 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R|W</ogo:text>
+ <ogo:position>(36 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(67 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(42 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(67 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CE2</ogo:text>
+ <ogo:position>(36 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(67 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CE1</ogo:text>
+ <ogo:position>(36 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>55100</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>NM93C06</ogo:name>
+ <ogo:symbol>NM93C06</ogo:symbol>
+ <ogo:description>256 bit serial EEPROM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>DI</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(20 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(25 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(20 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(25 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(47 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>DO</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>NM93C06</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>NM93C46</ogo:name>
+ <ogo:symbol>NM93C06</ogo:symbol>
+ <ogo:description>1024 bit serial EEPROM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>DI</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(20 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(25 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(20 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(25 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(47 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>DO</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>NM93C46</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>NM93C56</ogo:name>
+ <ogo:symbol>NM93C06</ogo:symbol>
+ <ogo:description>2048 bit serial EEPROM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>DI</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(20 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(25 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(20 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(25 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(47 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>DO</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>NM93C56</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>NM93C66</ogo:name>
+ <ogo:symbol>NM93C06</ogo:symbol>
+ <ogo:description>4096 bit serial EEPROM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>DI</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(20 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(25 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(20 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(25 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(47 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>DO</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>NM93C66</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74S287</ogo:name>
+ <ogo:symbol>74S287</ogo:symbol>
+ <ogo:description>256x4 bits PROM</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(9 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(14 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(24 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(24 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(24 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(24 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E1</ogo:text>
+ <ogo:position>(24 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E2</ogo:text>
+ <ogo:position>(24 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(25 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74S287</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+
+
+
+ </ogo:parts>
+</ogo:library>
diff --git a/data/libraries/miscellaneous.oreglib b/data/libraries/miscellaneous.oreglib
new file mode 100644
index 0000000..f2e248f
--- /dev/null
+++ b/data/libraries/miscellaneous.oreglib
@@ -0,0 +1,1263 @@
+<?xml version="1.0"?>
+<ogo:library xmlns:ogo="http://www.dtek.chalmers.se/~d4hult/oregano/v1">
+ <ogo:name>Miscellaneous</ogo:name>
+ <ogo:description>Miscellaneous Library</ogo:description>
+ <ogo:version>0.21</ogo:version>
+ <ogo:author>Hector Bellesi</ogo:author>
+ <ogo:last-updated>19-Aug-2001</ogo:last-updated>
+
+ <ogo:symbols>
+
+ <ogo:symbol>
+ <ogo:name>5369</ogo:name>
+ <ogo:objects>
+ <ogo:line>(20 -10)(60 -10)(60 40)(20 40)(20 -10)</ogo:line>
+ <ogo:line>(0 0)(20 0)</ogo:line>
+ <ogo:line>(0 30)(20 30)</ogo:line>
+ <ogo:line>(40 -30)(40 -10)</ogo:line>
+ <ogo:line>(40 40)(40 60)</ogo:line>
+ <ogo:line>(60 0)(80 0)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0 5)</ogo:connection>
+ <ogo:connection>(0 30 6)</ogo:connection>
+ <ogo:connection>(40 -30 8)</ogo:connection>
+ <ogo:connection>(40 60 2)</ogo:connection>
+ <ogo:connection>(80 0 1)</ogo:connection>
+ <ogo:connection>(80 30 7)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ <ogo:symbol>
+ <ogo:name>RD104</ogo:name>
+ <ogo:objects>
+ <ogo:line>(20 -10)(60 -10)(60 40)(20 40)(20 -10)</ogo:line>
+ <ogo:line>(0 0)(20 0)</ogo:line>
+ <ogo:line>(0 30)(20 30)</ogo:line>
+ <ogo:line>(40 -30)(40 -10)</ogo:line>
+ <ogo:line>(40 40)(40 60)</ogo:line>
+ <ogo:line>(60 0)(80 0)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0 5)</ogo:connection>
+ <ogo:connection>(0 30 6)</ogo:connection>
+ <ogo:connection>(40 -30 8)</ogo:connection>
+ <ogo:connection>(40 60 3)</ogo:connection>
+ <ogo:connection>(80 0 7)</ogo:connection>
+ <ogo:connection>(80 10 1)</ogo:connection>
+ <ogo:connection>(80 20 2)</ogo:connection>
+ <ogo:connection>(80 30 4)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>ICL7660</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(50 0)(50 50)(0 50)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 50)(20 70)</ogo:line>
+ <ogo:line>(50 10)(70 10)</ogo:line>
+ <ogo:line>(50 30)(70 30)</ogo:line>
+ <ogo:line>(50 40)(70 40)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(-20 40 4)</ogo:connection>
+ <ogo:connection>(20 -20 8)</ogo:connection>
+ <ogo:connection>(20 70 3)</ogo:connection>
+ <ogo:connection>(70 10 5)</ogo:connection>
+ <ogo:connection>(70 30 7)</ogo:connection>
+ <ogo:connection>(70 40 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>MC14499</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 140)(0 140)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 140)(20 160)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(40 100)(60 100)</ogo:line>
+ <ogo:line>(40 110)(60 110)</ogo:line>
+ <ogo:line>(40 120)(60 120)</ogo:line>
+ <ogo:line>(40 130)(60 130)</ogo:line>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(-20 40 13)</ogo:connection>
+ <ogo:connection>(-20 60 6)</ogo:connection>
+ <ogo:connection>(-20 80 12)</ogo:connection>
+ <ogo:connection>(20 -20 18)</ogo:connection>
+ <ogo:connection>(20 160 9)</ogo:connection>
+ <ogo:connection>(60 10 4)</ogo:connection>
+ <ogo:connection>(60 20 3)</ogo:connection>
+ <ogo:connection>(60 30 2)</ogo:connection>
+ <ogo:connection>(60 40 1)</ogo:connection>
+ <ogo:connection>(60 50 17)</ogo:connection>
+ <ogo:connection>(60 60 16)</ogo:connection>
+ <ogo:connection>(60 70 15)</ogo:connection>
+ <ogo:connection>(60 80 14)</ogo:connection>
+ <ogo:connection>(60 100 11)</ogo:connection>
+ <ogo:connection>(60 110 10)</ogo:connection>
+ <ogo:connection>(60 120 8)</ogo:connection>
+ <ogo:connection>(60 130 7)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>PAL16L8</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 110)(0 110)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 130)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(40 90)(60 90)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 1)</ogo:connection>
+ <ogo:connection>(-20 20 2)</ogo:connection>
+ <ogo:connection>(-20 30 3)</ogo:connection>
+ <ogo:connection>(-20 40 4)</ogo:connection>
+ <ogo:connection>(-20 50 5)</ogo:connection>
+ <ogo:connection>(-20 60 6)</ogo:connection>
+ <ogo:connection>(-20 70 7)</ogo:connection>
+ <ogo:connection>(-20 80 8)</ogo:connection>
+ <ogo:connection>(-20 90 9)</ogo:connection>
+ <ogo:connection>(-20 100 11)</ogo:connection>
+ <ogo:connection>(20 -20 20)</ogo:connection>
+ <ogo:connection>(20 130 10)</ogo:connection>
+ <ogo:connection>(60 20 12)</ogo:connection>
+ <ogo:connection>(60 30 13)</ogo:connection>
+ <ogo:connection>(60 40 14)</ogo:connection>
+ <ogo:connection>(60 50 15)</ogo:connection>
+ <ogo:connection>(60 60 16)</ogo:connection>
+ <ogo:connection>(60 70 17)</ogo:connection>
+ <ogo:connection>(60 80 18)</ogo:connection>
+ <ogo:connection>(60 90 19)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+
+
+
+
+ </ogo:symbols>
+
+
+
+ <ogo:parts>
+
+
+ <ogo:part>
+ <ogo:name>MM5369AA</ogo:name>
+ <ogo:symbol>5369</ogo:symbol>
+ <ogo:description>Frequency Divisor</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Xa</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(5 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Xb</ogo:text>
+ <ogo:position>(22 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vc</ogo:text>
+ <ogo:position>(37 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vs</ogo:text>
+ <ogo:position>(37 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(67 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>T</ogo:text>
+ <ogo:position>(50 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>MM5369AA</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %5 %6 %7 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>RD104</ogo:name>
+ <ogo:symbol>RD104</ogo:symbol>
+ <ogo:description>Frequency Divisor</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(5 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Xa</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(5 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Xb</ogo:text>
+ <ogo:position>(22 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vc</ogo:text>
+ <ogo:position>(37 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vs</ogo:text>
+ <ogo:position>(37 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(67 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(50 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(50 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(50 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>RD104</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>ICL7660</ogo:name>
+ <ogo:symbol>ICL7660</ogo:symbol>
+ <ogo:description>DC DC Converter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>c+</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>c-</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(10 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vc</ogo:text>
+ <ogo:position>(17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(10 62)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vs</ogo:text>
+ <ogo:position>(17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(56 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Out</ogo:text>
+ <ogo:position>(35 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(56 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>osc</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(56 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>LV</ogo:text>
+ <ogo:position>(35 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>ICL7660</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2 %3 %4 %5 %6 %7 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>MC14499</ogo:name>
+ <ogo:symbol>MC14499</ogo:symbol>
+ <ogo:description>4 digits display serial interface</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OSC</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ENB</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(8 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vc</ogo:text>
+ <ogo:position>(17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(10 152)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vs</ogo:text>
+ <ogo:position>(17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a</ogo:text>
+ <ogo:position>(35 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b</ogo:text>
+ <ogo:position>(35 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>c</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>d</ogo:text>
+ <ogo:position>(35 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>e</ogo:text>
+ <ogo:position>(35 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>f</ogo:text>
+ <ogo:position>(35 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>g</ogo:text>
+ <ogo:position>(35 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>dp</ogo:text>
+ <ogo:position>(30 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(35 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(35 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(46 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(35 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(35 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(25 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>MC14499</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>PAL16L8</ogo:name>
+ <ogo:symbol>PAL16L8</ogo:symbol>
+ <ogo:description>Programmable Array Logic</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I9</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(8 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vc</ogo:text>
+ <ogo:position>(17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(8 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vs</ogo:text>
+ <ogo:position>(17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>O1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IO2</ogo:text>
+ <ogo:position>(22 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IO3</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IO4</ogo:text>
+ <ogo:position>(22 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IO5</ogo:text>
+ <ogo:position>(22 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IO6</ogo:text>
+ <ogo:position>(22 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IO7</ogo:text>
+ <ogo:position>(22 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>O8</ogo:text>
+ <ogo:position>(27 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(25 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>16L8</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>PAL16R8</ogo:name>
+ <ogo:symbol>PAL16L8</ogo:symbol>
+ <ogo:description>Programmable Array Logic</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ck</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>I8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>od</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(8 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vc</ogo:text>
+ <ogo:position>(17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(8 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vs</ogo:text>
+ <ogo:position>(17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>O1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>O2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>O3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>O4</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>O5</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>O6</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>O7</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>O8</ogo:text>
+ <ogo:position>(27 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(25 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>16R8</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ </ogo:parts>
+</ogo:library>
diff --git a/data/libraries/opamplib.oreglib b/data/libraries/opamplib.oreglib
new file mode 100644
index 0000000..8b6dedf
--- /dev/null
+++ b/data/libraries/opamplib.oreglib
@@ -0,0 +1,2786 @@
+<?xml version="1.0"?>
+<ogo:library xmlns:ogo="http://www.dtek.chalmers.se/~d4hult/oregano/v1">
+ <ogo:name>Opamps</ogo:name>
+ <ogo:description>OpAmp Library</ogo:description>
+ <ogo:version>0.26</ogo:version>
+ <ogo:author>Hector Bellesi / Dietmar Eberhard, Dietmar.Eberhard@ipm.fhg.de</ogo:author>
+<ogo:last-updated>19-Aug-2001</ogo:last-updated> <ogo:symbols>
+
+ <ogo:symbol>
+ <ogo:name>LF353b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 30 5)</ogo:connection>
+ <ogo:connection>(-20 10 6)</ogo:connection>
+ <ogo:connection>(60 20 7)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>LF347c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 30 10)</ogo:connection>
+ <ogo:connection>(-20 10 9)</ogo:connection>
+ <ogo:connection>(60 20 8)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>LF347d</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 30 12)</ogo:connection>
+ <ogo:connection>(-20 10 13)</ogo:connection>
+ <ogo:connection>(60 20 14)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>LM339b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 30 7)</ogo:connection>
+ <ogo:connection>(-20 10 6)</ogo:connection>
+ <ogo:connection>(60 20 1)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>LM339c</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 30 9)</ogo:connection>
+ <ogo:connection>(-20 10 8)</ogo:connection>
+ <ogo:connection>(60 20 14)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>LM339d</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 30 11)</ogo:connection>
+ <ogo:connection>(-20 10 10)</ogo:connection>
+ <ogo:connection>(60 20 13)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ <ogo:symbol>
+ <ogo:name>LF353a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(20 10)(20 -10)</ogo:line>
+ <ogo:line>(20 30)(20 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 30 3)</ogo:connection>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(20 -10 8)</ogo:connection>
+ <ogo:connection>(20 50 4)</ogo:connection>
+ <ogo:connection>(60 20 1)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>LF347a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(20 10)(20 -10)</ogo:line>
+ <ogo:line>(20 30)(20 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 30 3)</ogo:connection>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(20 -10 4)</ogo:connection>
+ <ogo:connection>(20 50 11)</ogo:connection>
+ <ogo:connection>(60 20 1)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>LM339a</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(20 10)(20 -10)</ogo:line>
+ <ogo:line>(20 30)(20 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 30 5)</ogo:connection>
+ <ogo:connection>(-20 10 4)</ogo:connection>
+ <ogo:connection>(20 -10 3)</ogo:connection>
+ <ogo:connection>(20 50 12)</ogo:connection>
+ <ogo:connection>(60 20 2)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ <ogo:symbol>
+ <ogo:name>LM741</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(10 5)(10 -10)</ogo:line>
+ <ogo:line>(20 30)(20 50)</ogo:line>
+ <ogo:line>(10 35)(10 50)</ogo:line>
+ <ogo:line>(30 25)(30 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 30 3)</ogo:connection>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(10 -10 7)</ogo:connection>
+ <ogo:connection>(10 50 4)</ogo:connection>
+ <ogo:connection>(20 50 1)</ogo:connection>
+ <ogo:connection>(30 50 5)</ogo:connection>
+ <ogo:connection>(60 20 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>OP77</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(10 5)(10 -10)</ogo:line>
+ <ogo:line>(20 30)(20 50)</ogo:line>
+ <ogo:line>(10 35)(10 50)</ogo:line>
+ <ogo:line>(30 25)(30 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 30 3)</ogo:connection>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(10 -10 7)</ogo:connection>
+ <ogo:connection>(10 50 4)</ogo:connection>
+ <ogo:connection>(20 50 1)</ogo:connection>
+ <ogo:connection>(30 50 8)</ogo:connection>
+ <ogo:connection>(60 20 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>LF356</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(10 5)(10 -10)</ogo:line>
+ <ogo:line>(20 10)(20 -10)</ogo:line>
+ <ogo:line>(10 35)(10 50)</ogo:line>
+ <ogo:line>(30 15)(30 -10)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 30 3)</ogo:connection>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(10 -10 7)</ogo:connection>
+ <ogo:connection>(20 -10 1)</ogo:connection>
+ <ogo:connection>(30 -10 5)</ogo:connection>
+ <ogo:connection>(10 50 4)</ogo:connection>
+ <ogo:connection>(60 20 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>CA3140</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(10 5)(10 -10)</ogo:line>
+ <ogo:line>(20 10)(20 -10)</ogo:line>
+ <ogo:line>(20 30)(20 50)</ogo:line>
+ <ogo:line>(10 35)(10 50)</ogo:line>
+ <ogo:line>(30 25)(30 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 30 3)</ogo:connection>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(10 -10 7)</ogo:connection>
+ <ogo:connection>(20 -10 8)</ogo:connection>
+ <ogo:connection>(10 50 4)</ogo:connection>
+ <ogo:connection>(20 50 1)</ogo:connection>
+ <ogo:connection>(30 50 5)</ogo:connection>
+ <ogo:connection>(60 20 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>LM318</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(10 5)(10 -10)</ogo:line>
+ <ogo:line>(20 10)(20 -10)</ogo:line>
+ <ogo:line>(20 30)(20 50)</ogo:line>
+ <ogo:line>(10 35)(10 50)</ogo:line>
+ <ogo:line>(30 25)(30 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 30 3)</ogo:connection>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(10 -10 8)</ogo:connection>
+ <ogo:connection>(20 -10 7)</ogo:connection>
+ <ogo:connection>(10 50 4)</ogo:connection>
+ <ogo:connection>(20 50 1)</ogo:connection>
+ <ogo:connection>(30 50 5)</ogo:connection>
+ <ogo:connection>(60 20 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>LM311</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(10 5)(10 -10)</ogo:line>
+ <ogo:line>(20 10)(20 -10)</ogo:line>
+ <ogo:line>(20 30)(20 50)</ogo:line>
+ <ogo:line>(10 35)(10 50)</ogo:line>
+ <ogo:line>(30 25)(30 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 30 3)</ogo:connection>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(10 -10 8)</ogo:connection>
+ <ogo:connection>(20 -10 5)</ogo:connection>
+ <ogo:connection>(10 50 4)</ogo:connection>
+ <ogo:connection>(20 50 1)</ogo:connection>
+ <ogo:connection>(30 50 6)</ogo:connection>
+ <ogo:connection>(60 20 7)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>CA3130</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(10 5)(10 -10)</ogo:line>
+ <ogo:line>(20 10)(20 -10)</ogo:line>
+ <ogo:line>(20 30)(20 50)</ogo:line>
+ <ogo:line>(10 35)(10 50)</ogo:line>
+ <ogo:line>(30 25)(30 50)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 30 3)</ogo:connection>
+ <ogo:connection>(-20 10 2)</ogo:connection>
+ <ogo:connection>(10 -10 7)</ogo:connection>
+ <ogo:connection>(20 -10 4)</ogo:connection>
+ <ogo:connection>(10 50 8)</ogo:connection>
+ <ogo:connection>(20 50 1)</ogo:connection>
+ <ogo:connection>(30 50 5)</ogo:connection>
+ <ogo:connection>(60 20 6)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>U_NonLin</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(30 40)(30 0)(0 0)</ogo:line>
+ <ogo:line>(17.5 17.5)(17.5 22.5)(20 25)(25 25)(27.5 22.5)
+ (27.5 17.5)(25 15)(20 15)(17.5 17.5)</ogo:line>
+ <ogo:line>(30 30)(22.5 30)(22.5 25)</ogo:line>
+ <ogo:line>(22.5 15)(22.5 10)(30 10)</ogo:line>
+ <ogo:line>(22.5 17.5)(22.5 22.5)(21 20)
+ (24 20)(22.5 22.5)</ogo:line>
+
+ <ogo:line>(-10 10)(0 10)</ogo:line>
+ <ogo:line>(-10 30)(0 30)</ogo:line>
+
+ <ogo:line>(30 10)(40 10)</ogo:line>
+ <ogo:line>(30 30)(40 30)</ogo:line>
+
+ <ogo:line>(5 30)(10 30)</ogo:line>
+ <ogo:line>(5 10)(10 10)</ogo:line>
+ <ogo:line>(7.5 7.5)(7.5 12.5)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(40 10)</ogo:connection>
+ <ogo:connection>(40 30)</ogo:connection>
+ <ogo:connection>(-10 10)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>MULT</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(25 15)(0 30)(0 0)</ogo:line>
+ <ogo:line>(0 50)(25 65)(0 80)(0 50)</ogo:line>
+
+ <ogo:line>(25 15)(30 15)(30 30)(25 30)(20 35)(20 45)
+ (25 50)(35 50)(40 45)(40 35)(35 30)(30 30)</ogo:line>
+ <ogo:line>(30 50)(30 65)(25 65)</ogo:line>
+
+ <ogo:line>(25 35)(35 45)</ogo:line>
+ <ogo:line>(35 35)(25 45)</ogo:line>
+
+ <ogo:line>(3 10)(9 10)</ogo:line>
+ <ogo:line>(6 7)(6 13)</ogo:line>
+ <ogo:line>(3 20)(9 20)</ogo:line>
+ <ogo:line>(3 60)(9 60)</ogo:line>
+ <ogo:line>(6 57)(6 63)</ogo:line>
+ <ogo:line>(3 70)(9 70)</ogo:line>
+
+ <ogo:line>(-10 10)(0 10)</ogo:line>
+ <ogo:line>(-10 20)(0 20)</ogo:line>
+ <ogo:line>(-10 60)(0 60)</ogo:line>
+ <ogo:line>(-10 70)(0 70)</ogo:line>
+
+ <ogo:line>(40 40)(44 40)(44 38)(48 40)
+ (44 42)(44 40)(50 40)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(50 40)</ogo:connection>
+ <ogo:connection>(-10 10)</ogo:connection>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(-10 60)</ogo:connection>
+ <ogo:connection>(-10 70)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ </ogo:symbols>
+
+ <ogo:parts>
+
+
+
+ <ogo:part>
+ <ogo:name>OP77</ogo:name>
+ <ogo:symbol>OP77</ogo:symbol>
+ <ogo:description>Precision Operational Amplifier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V+</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(3 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V-</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(4 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo+</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(14 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo-</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(24 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>5000 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>SR</ogo:name>
+ <ogo:value>0.3 V/us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>CMRR</ogo:name>
+ <ogo:value>0.1 uV/V</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rin</ogo:name>
+ <ogo:value>45 Mohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rout</ogo:name>
+ <ogo:value>60 ohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>PSRR</ogo:name>
+ <ogo:value>0.7 uV/V</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>45 uV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>OP77</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %V+ %V- %Vo+ %Vo- %out @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>U=f(U)</ogo:name>
+ <ogo:symbol>U_NonLin</ogo:symbol>
+ <ogo:description>Voltage controlled nonlin voltage source</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 -5)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Function designator</ogo:name>
+ <ogo:text>U=@func</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>B</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Func</ogo:name>
+ <ogo:value>sin</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+<ogo:value>B_@refdes %out+ %out- V= @func (V( %i+ , %i- ))</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>IdealMult</ogo:name>
+ <ogo:symbol>MULT</ogo:symbol>
+ <ogo:description>Ideal multiplier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 5)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>UMULT</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+<ogo:value>B_@refdes %out 0 V=V( %i1+ , %i1- )*V( %i2+ , %i2- )</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>OP37</ogo:name>
+ <ogo:symbol>OP77</ogo:symbol>
+ <ogo:description>Fast Precision Operational Amplifier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V+</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(3 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V-</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(4 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo+</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(14 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo-</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(24 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>1500 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>SR</ogo:name>
+ <ogo:value>17 V/us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>CMRR</ogo:name>
+ <ogo:value>120 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rin</ogo:name>
+ <ogo:value>2 Gohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rout</ogo:name>
+ <ogo:value>70 ohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>PSRR</ogo:name>
+ <ogo:value>2 uV/V</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>30 uV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>OP37</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %V+ %V- %Vo+ %Vo- %out @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LF356</ogo:name>
+ <ogo:symbol>LF356</ogo:symbol>
+ <ogo:description>JFET Input Operational Amplifier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V+</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(3 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V-</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(4 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo+</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(14 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo-</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(24 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>200 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>SR</ogo:name>
+ <ogo:value>12 V/us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>CMRR</ogo:name>
+ <ogo:value>100 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rin</ogo:name>
+ <ogo:value>1 Tohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rout</ogo:name>
+ <ogo:value>150 ohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>PSRR</ogo:name>
+ <ogo:value>100 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>3 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LF356</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %V+ %V- %Vo+ %Vo- %out @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LF357</ogo:name>
+ <ogo:symbol>LF356</ogo:symbol>
+ <ogo:description>Fast JFET Input Operational Amplifier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V+</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(3 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V-</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(4 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo+</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(14 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo-</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(24 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>200 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>SR</ogo:name>
+ <ogo:value>50 V/us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>CMRR</ogo:name>
+ <ogo:value>100 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rin</ogo:name>
+ <ogo:value>1 Tohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rout</ogo:name>
+ <ogo:value>150 ohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>PSRR</ogo:name>
+ <ogo:value>100 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>3 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LF357</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %V+ %V- %Vo+ %Vo- %out @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LM318</ogo:name>
+ <ogo:symbol>LM318</ogo:symbol>
+ <ogo:description>Fast Operational Amplifier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V+</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(13 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>cmp</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(3 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V-</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(4 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo+</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(14 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo-</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(24 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>200 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>SR</ogo:name>
+ <ogo:value>50 V/us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>CMRR</ogo:name>
+ <ogo:value>100 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rin</ogo:name>
+ <ogo:value>3 Mohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rout</ogo:name>
+ <ogo:value>150 ohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>PSRR</ogo:name>
+ <ogo:value>80 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>4 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LM318</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %V+ %V- %cmp %Vo+ %Vo- %out @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LM741</ogo:name>
+ <ogo:symbol>LM741</ogo:symbol>
+ <ogo:description>General Purpose Operational Amplifier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V+</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(3 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V-</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(4 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo+</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(14 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo-</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(24 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>200 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>SR</ogo:name>
+ <ogo:value>0.5 V/us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>CMRR</ogo:name>
+ <ogo:value>90 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rin</ogo:name>
+ <ogo:value>2 Mohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rout</ogo:name>
+ <ogo:value>75 ohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>PSRR</ogo:name>
+ <ogo:value>96 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>2 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LM741</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %V+ %V- %Vo+ %Vo- %out @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LF353a</ogo:name>
+ <ogo:symbol>LF353a</ogo:symbol>
+ <ogo:description>Dual JFET Input Operational Amplifier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V+</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(12 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V-</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>100 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>SR</ogo:name>
+ <ogo:value>13 V/us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>CMRR</ogo:name>
+ <ogo:value>100 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rin</ogo:name>
+ <ogo:value>1 Tohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rout</ogo:name>
+ <ogo:value>150 ohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>PSRR</ogo:name>
+ <ogo:value>100 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>5 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LF353a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %V+ %V- %out @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LF353b</ogo:name>
+ <ogo:symbol>LF353b</ogo:symbol>
+ <ogo:description>Dual JFET Input Operational Amplifier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>100 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>SR</ogo:name>
+ <ogo:value>13 V/us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>CMRR</ogo:name>
+ <ogo:value>100 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rin</ogo:name>
+ <ogo:value>1 Tohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rout</ogo:name>
+ <ogo:value>150 ohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>PSRR</ogo:name>
+ <ogo:value>100 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>5 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LF353b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %out @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LF347a</ogo:name>
+ <ogo:symbol>LF347a</ogo:symbol>
+ <ogo:description>Quad JFET Input Operational Amplifier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V+</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(12 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V-</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(9 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>100 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>SR</ogo:name>
+ <ogo:value>13 V/us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>CMRR</ogo:name>
+ <ogo:value>100 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rin</ogo:name>
+ <ogo:value>1 Tohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rout</ogo:name>
+ <ogo:value>150 ohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>PSRR</ogo:name>
+ <ogo:value>100 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>5 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LF347a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %V+ %V- %out @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LF347b</ogo:name>
+ <ogo:symbol>LF353b</ogo:symbol>
+ <ogo:description>Quad JFET Input Operational Amplifier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>100 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>SR</ogo:name>
+ <ogo:value>13 V/us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>CMRR</ogo:name>
+ <ogo:value>100 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rin</ogo:name>
+ <ogo:value>1 Tohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rout</ogo:name>
+ <ogo:value>150 ohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>PSRR</ogo:name>
+ <ogo:value>100 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>5 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LF347b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %out @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LF347c</ogo:name>
+ <ogo:symbol>LF347c</ogo:symbol>
+ <ogo:description>Quad JFET Input Operational Amplifier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>100 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>SR</ogo:name>
+ <ogo:value>13 V/us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>CMRR</ogo:name>
+ <ogo:value>100 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rin</ogo:name>
+ <ogo:value>1 Tohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rout</ogo:name>
+ <ogo:value>150 ohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>PSRR</ogo:name>
+ <ogo:value>100 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>5 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LF347c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %out @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LF347d</ogo:name>
+ <ogo:symbol>LF347d</ogo:symbol>
+ <ogo:description>Quad JFET Input Operational Amplifier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>100 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>SR</ogo:name>
+ <ogo:value>13 V/us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>CMRR</ogo:name>
+ <ogo:value>100 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rin</ogo:name>
+ <ogo:value>1 Tohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rout</ogo:name>
+ <ogo:value>150 ohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>PSRR</ogo:name>
+ <ogo:value>100 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>5 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LF347d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %out @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LM311</ogo:name>
+ <ogo:symbol>LM311</ogo:symbol>
+ <ogo:description>Comparator</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V+</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(3 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo+</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(13 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V-</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(4 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>gnd</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(14 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo-</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(24 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>200 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>RT</ogo:name>
+ <ogo:value>200 ns</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Iin</ogo:name>
+ <ogo:value>100 nA</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>2 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LM311</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %V+ %V- %gnd %Vo+ %Vo- %out @Vos @Gain @Iin @RT @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LM393a</ogo:name>
+ <ogo:symbol>LF353a</ogo:symbol>
+ <ogo:description>Dual Comparators</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V+</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(12 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V-</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>200 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>RT</ogo:name>
+ <ogo:value>1.3 us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Iin</ogo:name>
+ <ogo:value>25 nA</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>1 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LM393a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %V+ %V- %out @Vos @Gain @Iin @RT @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LM393b</ogo:name>
+ <ogo:symbol>LF353b</ogo:symbol>
+ <ogo:description>Dual Comparators</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>200 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>RT</ogo:name>
+ <ogo:value>1.3 us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Iin</ogo:name>
+ <ogo:value>25 nA</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>1 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LF393b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %out @Vos @Gain @Iin @RT @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LM339a</ogo:name>
+ <ogo:symbol>LM339a</ogo:symbol>
+ <ogo:description>Quad Low Power Compatators</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V+</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(12 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V-</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(9 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>200 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>RT</ogo:name>
+ <ogo:value>1.3 us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Iin</ogo:name>
+ <ogo:value>25 nA</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>2 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LM339a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %V+ %V- %out @Vos @Gain @Iin @RT @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LM339b</ogo:name>
+ <ogo:symbol>LM339b</ogo:symbol>
+ <ogo:description>Quad Low Power Compatators</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>200 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>RT</ogo:name>
+ <ogo:value>1.3 us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Iin</ogo:name>
+ <ogo:value>25 nA</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>2 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LM339b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %out @Vos @Gain @Iin @RT @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LM339c</ogo:name>
+ <ogo:symbol>LM339c</ogo:symbol>
+ <ogo:description>Quad Low Power Compatators</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>200 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>RT</ogo:name>
+ <ogo:value>1.3 us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Iin</ogo:name>
+ <ogo:value>25 nA</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>2 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LM339c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %out @Vos @Gain @Iin @RT @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LM339d</ogo:name>
+ <ogo:symbol>LM339d</ogo:symbol>
+ <ogo:description>Quad Low Power Compatators</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>200 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>RT</ogo:name>
+ <ogo:value>1.3 us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Iin</ogo:name>
+ <ogo:value>25 nA</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>2 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LM339d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %out @Vos @Gain @Iin @RT @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>LF311</ogo:name>
+ <ogo:symbol>LM311</ogo:symbol>
+ <ogo:description>FET Input Comparator</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V+</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(3 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo+</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(13 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V-</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(4 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>gnd</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(14 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo-</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(24 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>200 V/mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>RT</ogo:name>
+ <ogo:value>200 ns</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Iin</ogo:name>
+ <ogo:value>20 pA</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>1 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>LF311</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %V+ %V- %gnd %Vo+ %Vo- %out @Vos @Gain @Iin @RT @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>OPA128</ogo:name>
+ <ogo:symbol>CA3140</ogo:symbol>
+ <ogo:description>Low Bias Current Operational Amplifier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V+</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(3 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>gnd</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(13 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V-</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(4 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo+</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(14 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo-</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(24 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>128 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>SR</ogo:name>
+ <ogo:value>3 V/us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>CMRR</ogo:name>
+ <ogo:value>118 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rin</ogo:name>
+ <ogo:value>10 Tohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rout</ogo:name>
+ <ogo:value>100 ohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>PSRR</ogo:name>
+ <ogo:value>120 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>140 uV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>OPA128</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %V+ %V- %gnd %Vo+ %Vo- %out @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>CA3130</ogo:name>
+ <ogo:symbol>CA3130</ogo:symbol>
+ <ogo:description>MOSFET Input CMOS Output Operational Amplifier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V+</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(3 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V-</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(13 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>cmp</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(4 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo+</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(14 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo-</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(24 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>110 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>SR</ogo:name>
+ <ogo:value>30 V/us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>CMRR</ogo:name>
+ <ogo:value>90 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rin</ogo:name>
+ <ogo:value>1.5 Tohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rout</ogo:name>
+ <ogo:value>100 ohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>PSRR</ogo:name>
+ <ogo:value>32 uV/V</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>8 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>CA3130</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %V+ %V- %cmp %Vo+ %Vo- %out @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>CA3140</ogo:name>
+ <ogo:symbol>CA3140</ogo:symbol>
+ <ogo:description>MOSFET Input Operational Amplifier</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 35)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in-</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>-</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>in+</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>+</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V+</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(3 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>stb</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(13 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>V-</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(4 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>out</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo+</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(14 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Vo-</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(24 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Gain</ogo:name>
+ <ogo:value>100 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>SR</ogo:name>
+ <ogo:value>7 V/us</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>CMRR</ogo:name>
+ <ogo:value>90 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rin</ogo:name>
+ <ogo:value>1.5 Tohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Rout</ogo:name>
+ <ogo:value>60 ohm</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>PSRR</ogo:name>
+ <ogo:value>80 dB</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Vos</ogo:name>
+ <ogo:value>5 mV</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>CA3140</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %in+ %in- %V+ %V- %stb %Vo+ %Vo- %out @Vos @PSRR @CMRR @Gain @Rout @Rin @SR @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+
+
+
+
+ </ogo:parts>
+</ogo:library>
diff --git a/data/libraries/peripheral.oreglib b/data/libraries/peripheral.oreglib
new file mode 100644
index 0000000..d32d1c3
--- /dev/null
+++ b/data/libraries/peripheral.oreglib
@@ -0,0 +1,3544 @@
+<?xml version="1.0"?>
+<ogo:library xmlns:ogo="http://www.dtek.chalmers.se/~d4hult/oregano/v1">
+ <ogo:name>Peripheral</ogo:name>
+ <ogo:description>Peripheral Library</ogo:description>
+ <ogo:version>0.21</ogo:version>
+ <ogo:author>Hector Bellesi</ogo:author>
+ <ogo:last-updated>17-Jul-2001</ogo:last-updated>
+
+ <ogo:symbols>
+
+ <ogo:symbol>
+ <ogo:name>8255</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 270)(0 270)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(-6 100)</ogo:line>
+ <ogo:line>(-20 120)(-6 120)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(-20 170)(0 170)</ogo:line>
+ <ogo:line>(-20 200)(0 200)</ogo:line>
+ <ogo:line>(-20 230)(-6 230)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 270)(30 290)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(60 100)(80 100)</ogo:line>
+ <ogo:line>(60 110)(80 110)</ogo:line>
+ <ogo:line>(60 120)(80 120)</ogo:line>
+ <ogo:line>(60 130)(80 130)</ogo:line>
+ <ogo:line>(60 140)(80 140)</ogo:line>
+ <ogo:line>(60 150)(80 150)</ogo:line>
+ <ogo:line>(60 160)(80 160)</ogo:line>
+ <ogo:line>(60 170)(80 170)</ogo:line>
+ <ogo:line>(60 190)(80 190)</ogo:line>
+ <ogo:line>(60 200)(80 200)</ogo:line>
+ <ogo:line>(60 210)(80 210)</ogo:line>
+ <ogo:line>(60 220)(80 220)</ogo:line>
+ <ogo:line>(60 230)(80 230)</ogo:line>
+ <ogo:line>(60 240)(80 240)</ogo:line>
+ <ogo:line>(60 250)(80 250)</ogo:line>
+ <ogo:line>(60 260)(80 260)</ogo:line>
+ <ogo:arc>(-6 97)(0 103)</ogo:arc>
+ <ogo:arc>(-6 117)(0 123)</ogo:arc>
+ <ogo:arc>(-6 227)(0 233)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 34)</ogo:connection>
+ <ogo:connection>(-20 20 33)</ogo:connection>
+ <ogo:connection>(-20 30 32)</ogo:connection>
+ <ogo:connection>(-20 40 31)</ogo:connection>
+ <ogo:connection>(-20 50 30)</ogo:connection>
+ <ogo:connection>(-20 60 29)</ogo:connection>
+ <ogo:connection>(-20 70 28)</ogo:connection>
+ <ogo:connection>(-20 80 27)</ogo:connection>
+ <ogo:connection>(-20 100 5)</ogo:connection>
+ <ogo:connection>(-20 120 36)</ogo:connection>
+ <ogo:connection>(-20 150 9)</ogo:connection>
+ <ogo:connection>(-20 170 8)</ogo:connection>
+ <ogo:connection>(-20 200 35)</ogo:connection>
+ <ogo:connection>(-20 230 6)</ogo:connection>
+ <ogo:connection>(30 -20 26)</ogo:connection>
+ <ogo:connection>(30 290 7)</ogo:connection>
+ <ogo:connection>(80 10 4)</ogo:connection>
+ <ogo:connection>(80 20 3)</ogo:connection>
+ <ogo:connection>(80 30 2)</ogo:connection>
+ <ogo:connection>(80 40 1)</ogo:connection>
+ <ogo:connection>(80 50 40)</ogo:connection>
+ <ogo:connection>(80 60 39)</ogo:connection>
+ <ogo:connection>(80 70 38)</ogo:connection>
+ <ogo:connection>(80 80 37)</ogo:connection>
+ <ogo:connection>(80 100 18)</ogo:connection>
+ <ogo:connection>(80 110 19)</ogo:connection>
+ <ogo:connection>(80 120 20)</ogo:connection>
+ <ogo:connection>(80 130 21)</ogo:connection>
+ <ogo:connection>(80 140 22)</ogo:connection>
+ <ogo:connection>(80 150 23)</ogo:connection>
+ <ogo:connection>(80 160 24)</ogo:connection>
+ <ogo:connection>(80 170 25)</ogo:connection>
+ <ogo:connection>(80 190 14)</ogo:connection>
+ <ogo:connection>(80 200 15)</ogo:connection>
+ <ogo:connection>(80 210 16)</ogo:connection>
+ <ogo:connection>(80 220 17)</ogo:connection>
+ <ogo:connection>(80 230 13)</ogo:connection>
+ <ogo:connection>(80 240 12)</ogo:connection>
+ <ogo:connection>(80 250 11)</ogo:connection>
+ <ogo:connection>(80 260 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>8253</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 160)(0 160)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(-6 100)</ogo:line>
+ <ogo:line>(-20 110)(-6 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 150)(-6 150)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 160)(30 180)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(60 90)(80 90)</ogo:line>
+ <ogo:line>(60 110)(80 110)</ogo:line>
+ <ogo:line>(60 120)(80 120)</ogo:line>
+ <ogo:line>(60 130)(80 130)</ogo:line>
+ <ogo:arc>(-6 97)(0 103)</ogo:arc>
+ <ogo:arc>(-6 107)(0 113)</ogo:arc>
+ <ogo:arc>(-6 147)(0 153)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 8)</ogo:connection>
+ <ogo:connection>(-20 20 7)</ogo:connection>
+ <ogo:connection>(-20 30 6)</ogo:connection>
+ <ogo:connection>(-20 40 5)</ogo:connection>
+ <ogo:connection>(-20 50 4)</ogo:connection>
+ <ogo:connection>(-20 60 3)</ogo:connection>
+ <ogo:connection>(-20 70 2)</ogo:connection>
+ <ogo:connection>(-20 80 1)</ogo:connection>
+ <ogo:connection>(-20 100 22)</ogo:connection>
+ <ogo:connection>(-20 110 23)</ogo:connection>
+ <ogo:connection>(-20 120 19)</ogo:connection>
+ <ogo:connection>(-20 130 20)</ogo:connection>
+ <ogo:connection>(-20 150 21)</ogo:connection>
+ <ogo:connection>(30 -20 24)</ogo:connection>
+ <ogo:connection>(30 180 12)</ogo:connection>
+ <ogo:connection>(80 30 9)</ogo:connection>
+ <ogo:connection>(80 40 11)</ogo:connection>
+ <ogo:connection>(80 50 10)</ogo:connection>
+ <ogo:connection>(80 70 15)</ogo:connection>
+ <ogo:connection>(80 80 14)</ogo:connection>
+ <ogo:connection>(80 90 13)</ogo:connection>
+ <ogo:connection>(80 110 18)</ogo:connection>
+ <ogo:connection>(80 120 16)</ogo:connection>
+ <ogo:connection>(80 130 17)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>eq</ogo:name>
+ <ogo:objects>
+ </ogo:objects>
+ <ogo:connections>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>MC146818</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 150)(0 150)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(-6 130)</ogo:line>
+ <ogo:line>(-20 140)(-6 140)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 150)(30 170)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(66 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(66 70)(80 70)</ogo:line>
+ <ogo:line>(60 90)(80 90)</ogo:line>
+ <ogo:line>(60 140)(80 140)</ogo:line>
+ <ogo:arc>(-6 127)(0 133)</ogo:arc>
+ <ogo:arc>(-6 137)(0 143)</ogo:arc>
+ <ogo:arc>(60 17)(66 23)</ogo:arc>
+ <ogo:arc>(60 67)(66 73)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 4)</ogo:connection>
+ <ogo:connection>(-20 20 5)</ogo:connection>
+ <ogo:connection>(-20 30 6)</ogo:connection>
+ <ogo:connection>(-20 40 7)</ogo:connection>
+ <ogo:connection>(-20 50 8)</ogo:connection>
+ <ogo:connection>(-20 60 9)</ogo:connection>
+ <ogo:connection>(-20 70 10)</ogo:connection>
+ <ogo:connection>(-20 80 11)</ogo:connection>
+ <ogo:connection>(-20 100 15)</ogo:connection>
+ <ogo:connection>(-20 110 14)</ogo:connection>
+ <ogo:connection>(-20 120 17)</ogo:connection>
+ <ogo:connection>(-20 130 18)</ogo:connection>
+ <ogo:connection>(-20 140 13)</ogo:connection>
+ <ogo:connection>(30 -20 24)</ogo:connection>
+ <ogo:connection>(30 170 12)</ogo:connection>
+ <ogo:connection>(80 10 22)</ogo:connection>
+ <ogo:connection>(80 20 19)</ogo:connection>
+ <ogo:connection>(80 30 23)</ogo:connection>
+ <ogo:connection>(80 40 21)</ogo:connection>
+ <ogo:connection>(80 50 20)</ogo:connection>
+ <ogo:connection>(80 60 1)</ogo:connection>
+ <ogo:connection>(80 70 16)</ogo:connection>
+ <ogo:connection>(80 90 2)</ogo:connection>
+ <ogo:connection>(80 140 3)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>ICL7109</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 260)(0 260)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(-20 170)(0 170)</ogo:line>
+ <ogo:line>(-20 180)(0 180)</ogo:line>
+ <ogo:line>(-20 200)(-6 200)</ogo:line>
+ <ogo:line>(-20 210)(-6 210)</ogo:line>
+ <ogo:line>(-20 220)(-6 220)</ogo:line>
+ <ogo:line>(-20 240)(0 240)</ogo:line>
+ <ogo:line>(-20 250)(0 250)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 260)(30 280)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(60 90)(80 90)</ogo:line>
+ <ogo:line>(60 110)(80 110)</ogo:line>
+ <ogo:line>(60 130)(80 130)</ogo:line>
+ <ogo:line>(60 140)(80 140)</ogo:line>
+ <ogo:line>(60 150)(80 150)</ogo:line>
+ <ogo:line>(60 170)(80 170)</ogo:line>
+ <ogo:line>(60 190)(80 190)</ogo:line>
+ <ogo:line>(60 210)(80 210)</ogo:line>
+ <ogo:line>(60 250)(80 250)</ogo:line>
+ <ogo:arc>(-6 197)(0 203)</ogo:arc>
+ <ogo:arc>(-6 207)(0 213)</ogo:arc>
+ <ogo:arc>(-6 217)(0 223)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 16)</ogo:connection>
+ <ogo:connection>(-20 20 15)</ogo:connection>
+ <ogo:connection>(-20 30 14)</ogo:connection>
+ <ogo:connection>(-20 40 13)</ogo:connection>
+ <ogo:connection>(-20 50 12)</ogo:connection>
+ <ogo:connection>(-20 60 11)</ogo:connection>
+ <ogo:connection>(-20 70 10)</ogo:connection>
+ <ogo:connection>(-20 80 9)</ogo:connection>
+ <ogo:connection>(-20 90 8)</ogo:connection>
+ <ogo:connection>(-20 100 7)</ogo:connection>
+ <ogo:connection>(-20 110 6)</ogo:connection>
+ <ogo:connection>(-20 120 5)</ogo:connection>
+ <ogo:connection>(-20 130 4)</ogo:connection>
+ <ogo:connection>(-20 140 3)</ogo:connection>
+ <ogo:connection>(-20 160 17)</ogo:connection>
+ <ogo:connection>(-20 170 2)</ogo:connection>
+ <ogo:connection>(-20 180 26)</ogo:connection>
+ <ogo:connection>(-20 200 18)</ogo:connection>
+ <ogo:connection>(-20 210 19)</ogo:connection>
+ <ogo:connection>(-20 220 20)</ogo:connection>
+ <ogo:connection>(-20 240 28)</ogo:connection>
+ <ogo:connection>(-20 250 21)</ogo:connection>
+ <ogo:connection>(30 -20 40)</ogo:connection>
+ <ogo:connection>(30 280 1)</ogo:connection>
+ <ogo:connection>(80 10 27)</ogo:connection>
+ <ogo:connection>(80 20 36)</ogo:connection>
+ <ogo:connection>(80 30 37)</ogo:connection>
+ <ogo:connection>(80 50 38)</ogo:connection>
+ <ogo:connection>(80 60 35)</ogo:connection>
+ <ogo:connection>(80 70 34)</ogo:connection>
+ <ogo:connection>(80 80 39)</ogo:connection>
+ <ogo:connection>(80 90 33)</ogo:connection>
+ <ogo:connection>(80 110 32)</ogo:connection>
+ <ogo:connection>(80 130 31)</ogo:connection>
+ <ogo:connection>(80 140 29)</ogo:connection>
+ <ogo:connection>(80 150 30)</ogo:connection>
+ <ogo:connection>(80 170 25)</ogo:connection>
+ <ogo:connection>(80 290 24)</ogo:connection>
+ <ogo:connection>(80 210 24)</ogo:connection>
+ <ogo:connection>(80 250 22)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>AD7528</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 130)(0 130)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(-6 100)</ogo:line>
+ <ogo:line>(-20 110)(-6 110)</ogo:line>
+ <ogo:line>(-20 120)(-6 120)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 130)(30 150)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 90)(80 90)</ogo:line>
+ <ogo:line>(60 110)(80 110)</ogo:line>
+ <ogo:line>(60 120)(80 120)</ogo:line>
+ <ogo:arc>(-6 97)(0 103)</ogo:arc>
+ <ogo:arc>(-6 107)(0 113)</ogo:arc>
+ <ogo:arc>(-6 117)(0 123)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 14)</ogo:connection>
+ <ogo:connection>(-20 20 13)</ogo:connection>
+ <ogo:connection>(-20 30 12)</ogo:connection>
+ <ogo:connection>(-20 40 11)</ogo:connection>
+ <ogo:connection>(-20 50 10)</ogo:connection>
+ <ogo:connection>(-20 60 9)</ogo:connection>
+ <ogo:connection>(-20 70 8)</ogo:connection>
+ <ogo:connection>(-20 80 7)</ogo:connection>
+ <ogo:connection>(-20 100 6)</ogo:connection>
+ <ogo:connection>(-20 110 16)</ogo:connection>
+ <ogo:connection>(-20 120 15)</ogo:connection>
+ <ogo:connection>(30 -20 17)</ogo:connection>
+ <ogo:connection>(30 150 5)</ogo:connection>
+ <ogo:connection>(80 10 2)</ogo:connection>
+ <ogo:connection>(80 30 3)</ogo:connection>
+ <ogo:connection>(80 50 4)</ogo:connection>
+ <ogo:connection>(80 70 20)</ogo:connection>
+ <ogo:connection>(80 90 19)</ogo:connection>
+ <ogo:connection>(80 110 18)</ogo:connection>
+ <ogo:connection>(80 120 1)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>6821</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 230)(0 230)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(-20 180)(-6 180)</ogo:line>
+ <ogo:line>(-20 190)(-6 190)</ogo:line>
+ <ogo:line>(-20 210)(-6 210)</ogo:line>
+ <ogo:line>(-20 220)(0 220)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 230)(30 250)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 20)(80 20)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(60 100)(80 100)</ogo:line>
+ <ogo:line>(60 110)(80 110)</ogo:line>
+ <ogo:line>(60 120)(80 120)</ogo:line>
+ <ogo:line>(60 130)(80 130)</ogo:line>
+ <ogo:line>(60 140)(80 140)</ogo:line>
+ <ogo:line>(60 150)(80 150)</ogo:line>
+ <ogo:line>(60 160)(80 160)</ogo:line>
+ <ogo:line>(60 170)(80 170)</ogo:line>
+ <ogo:line>(60 190)(80 190)</ogo:line>
+ <ogo:line>(60 200)(80 200)</ogo:line>
+ <ogo:line>(66 210)(80 210)</ogo:line>
+ <ogo:line>(60 220)(80 220)</ogo:line>
+ <ogo:arc>(-6 177)(0 183)</ogo:arc>
+ <ogo:arc>(-6 187)(0 193)</ogo:arc>
+ <ogo:arc>(-6 207)(0 213)</ogo:arc>
+ <ogo:arc>(60 207)(66 213)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 33)</ogo:connection>
+ <ogo:connection>(-20 20 32)</ogo:connection>
+ <ogo:connection>(-20 30 31)</ogo:connection>
+ <ogo:connection>(-20 40 30)</ogo:connection>
+ <ogo:connection>(-20 50 29)</ogo:connection>
+ <ogo:connection>(-20 60 28)</ogo:connection>
+ <ogo:connection>(-20 70 27)</ogo:connection>
+ <ogo:connection>(-20 80 26)</ogo:connection>
+ <ogo:connection>(-20 100 40)</ogo:connection>
+ <ogo:connection>(-20 120 18)</ogo:connection>
+ <ogo:connection>(-20 150 39)</ogo:connection>
+ <ogo:connection>(-20 170 19)</ogo:connection>
+ <ogo:connection>(-20 200 36)</ogo:connection>
+ <ogo:connection>(-20 230 35)</ogo:connection>
+ <ogo:connection>(30 -20 20)</ogo:connection>
+ <ogo:connection>(30 290 1)</ogo:connection>
+ <ogo:connection>(80 10 2)</ogo:connection>
+ <ogo:connection>(80 20 3)</ogo:connection>
+ <ogo:connection>(80 30 4)</ogo:connection>
+ <ogo:connection>(80 40 5)</ogo:connection>
+ <ogo:connection>(80 50 6)</ogo:connection>
+ <ogo:connection>(80 60 7)</ogo:connection>
+ <ogo:connection>(80 70 8)</ogo:connection>
+ <ogo:connection>(80 80 9)</ogo:connection>
+ <ogo:connection>(80 100 10)</ogo:connection>
+ <ogo:connection>(80 110 11)</ogo:connection>
+ <ogo:connection>(80 120 12)</ogo:connection>
+ <ogo:connection>(80 130 13)</ogo:connection>
+ <ogo:connection>(80 140 14)</ogo:connection>
+ <ogo:connection>(80 150 15)</ogo:connection>
+ <ogo:connection>(80 160 16)</ogo:connection>
+ <ogo:connection>(80 170 17)</ogo:connection>
+ <ogo:connection>(80 190 22)</ogo:connection>
+ <ogo:connection>(80 200 24)</ogo:connection>
+ <ogo:connection>(80 210 23)</ogo:connection>
+ <ogo:connection>(80 220 21)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>UART</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 280)(0 280)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(-20 170)(0 170)</ogo:line>
+ <ogo:line>(-20 190)(-6 190)</ogo:line>
+ <ogo:line>(-20 200)(-6 200)</ogo:line>
+ <ogo:line>(-20 220)(0 220)</ogo:line>
+ <ogo:line>(-20 230)(0 230)</ogo:line>
+ <ogo:line>(-20 240)(0 240)</ogo:line>
+ <ogo:line>(-20 250)(0 250)</ogo:line>
+ <ogo:line>(-20 260)(-6 260)</ogo:line>
+ <ogo:line>(-20 270)(-6 270)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(50 280)(50 300)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 60)(80 60)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 80)(80 80)</ogo:line>
+ <ogo:line>(60 100)(80 100)</ogo:line>
+ <ogo:line>(60 110)(80 110)</ogo:line>
+ <ogo:line>(60 130)(80 130)</ogo:line>
+ <ogo:line>(60 140)(80 140)</ogo:line>
+ <ogo:line>(60 160)(80 160)</ogo:line>
+ <ogo:line>(60 180)(80 180)</ogo:line>
+ <ogo:line>(60 200)(80 200)</ogo:line>
+ <ogo:line>(60 250)(80 250)</ogo:line>
+ <ogo:arc>(-6 187)(0 193)</ogo:arc>
+ <ogo:arc>(-6 197)(0 203)</ogo:arc>
+ <ogo:arc>(-6 257)(0 263)</ogo:arc>
+ <ogo:arc>(-6 267)(0 273)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 26)</ogo:connection>
+ <ogo:connection>(-20 20 27)</ogo:connection>
+ <ogo:connection>(-20 30 28)</ogo:connection>
+ <ogo:connection>(-20 40 29)</ogo:connection>
+ <ogo:connection>(-20 50 30)</ogo:connection>
+ <ogo:connection>(-20 60 31)</ogo:connection>
+ <ogo:connection>(-20 70 32)</ogo:connection>
+ <ogo:connection>(-20 80 33)</ogo:connection>
+ <ogo:connection>(-20 100 12)</ogo:connection>
+ <ogo:connection>(-20 110 11)</ogo:connection>
+ <ogo:connection>(-20 120 10)</ogo:connection>
+ <ogo:connection>(-20 130 9)</ogo:connection>
+ <ogo:connection>(-20 140 8)</ogo:connection>
+ <ogo:connection>(-20 150 7)</ogo:connection>
+ <ogo:connection>(-20 160 6)</ogo:connection>
+ <ogo:connection>(-20 170 5)</ogo:connection>
+ <ogo:connection>(-20 190 23)</ogo:connection>
+ <ogo:connection>(-20 200 4)</ogo:connection>
+ <ogo:connection>(-20 220 37)</ogo:connection>
+ <ogo:connection>(-20 230 38)</ogo:connection>
+ <ogo:connection>(-20 240 19)</ogo:connection>
+ <ogo:connection>(-20 250 22)</ogo:connection>
+ <ogo:connection>(-20 260 16)</ogo:connection>
+ <ogo:connection>(-20 270 18)</ogo:connection>
+ <ogo:connection>(30 -20 1)</ogo:connection>
+ <ogo:connection>(50 300 3)</ogo:connection>
+ <ogo:connection>(80 10 34)</ogo:connection>
+ <ogo:connection>(80 30 2)</ogo:connection>
+ <ogo:connection>(80 50 35)</ogo:connection>
+ <ogo:connection>(80 60 36)</ogo:connection>
+ <ogo:connection>(80 70 39)</ogo:connection>
+ <ogo:connection>(80 80 24)</ogo:connection>
+ <ogo:connection>(80 100 20)</ogo:connection>
+ <ogo:connection>(80 110 25)</ogo:connection>
+ <ogo:connection>(80 130 17)</ogo:connection>
+ <ogo:connection>(80 140 40)</ogo:connection>
+ <ogo:connection>(80 160 13)</ogo:connection>
+ <ogo:connection>(80 180 14)</ogo:connection>
+ <ogo:connection>(80 200 15)</ogo:connection>
+ <ogo:connection>(80 250 21)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>8284</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 160)(0 160)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 120)(-6 120)</ogo:line>
+ <ogo:line>(-20 130)(-6 130)</ogo:line>
+ <ogo:line>(-20 140)(-6 140)</ogo:line>
+ <ogo:line>(-20 150)(-6 150)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 160)(30 180)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(60 30)(80 30)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(60 70)(80 70)</ogo:line>
+ <ogo:line>(60 90)(80 90)</ogo:line>
+ <ogo:arc>(-6 117)(0 123)</ogo:arc>
+ <ogo:arc>(-6 127)(0 133)</ogo:arc>
+ <ogo:arc>(-6 137)(0 143)</ogo:arc>
+ <ogo:arc>(-6 147)(0 153)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10 17)</ogo:connection>
+ <ogo:connection>(-20 40 16)</ogo:connection>
+ <ogo:connection>(-20 60 13)</ogo:connection>
+ <ogo:connection>(-20 70 14)</ogo:connection>
+ <ogo:connection>(-20 80 1)</ogo:connection>
+ <ogo:connection>(-20 90 4)</ogo:connection>
+ <ogo:connection>(-20 100 6)</ogo:connection>
+ <ogo:connection>(-20 120 3)</ogo:connection>
+ <ogo:connection>(-20 130 7)</ogo:connection>
+ <ogo:connection>(-20 140 15)</ogo:connection>
+ <ogo:connection>(-20 150 11)</ogo:connection>
+ <ogo:connection>(30 -20 18)</ogo:connection>
+ <ogo:connection>(30 180 9)</ogo:connection>
+ <ogo:connection>(80 10 8)</ogo:connection>
+ <ogo:connection>(80 30 5)</ogo:connection>
+ <ogo:connection>(80 50 10)</ogo:connection>
+ <ogo:connection>(80 70 2)</ogo:connection>
+ <ogo:connection>(80 90 12)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+
+
+
+
+
+
+
+
+ </ogo:symbols>
+
+
+
+ <ogo:parts>
+
+
+ <ogo:part>
+ <ogo:name>8255</ogo:name>
+ <ogo:symbol>8255</ogo:symbol>
+ <ogo:description>Paralel Port</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>34</ogo:name>
+ <ogo:text>34</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>33</ogo:name>
+ <ogo:text>33</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(-17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>29</ogo:name>
+ <ogo:text>29</ogo:text>
+ <ogo:position>(-17 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RD</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>36</ogo:name>
+ <ogo:text>36</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>WR</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>35</ogo:name>
+ <ogo:text>35</ogo:text>
+ <ogo:position>(-17 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MR</ogo:text>
+ <ogo:position>(2 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS</ogo:text>
+ <ogo:position>(2 235)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(17 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(22 285)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA0</ogo:text>
+ <ogo:position>(38 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA1</ogo:text>
+ <ogo:position>(38 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA2</ogo:text>
+ <ogo:position>(38 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA3</ogo:text>
+ <ogo:position>(38 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>40</ogo:name>
+ <ogo:text>40</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA4</ogo:text>
+ <ogo:position>(38 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>39</ogo:name>
+ <ogo:text>39</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA5</ogo:text>
+ <ogo:position>(38 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>38</ogo:name>
+ <ogo:text>38</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA6</ogo:text>
+ <ogo:position>(38 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>37</ogo:name>
+ <ogo:text>37</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA7</ogo:text>
+ <ogo:position>(38 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(67 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB0</ogo:text>
+ <ogo:position>(38 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(67 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB1</ogo:text>
+ <ogo:position>(38 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(67 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB2</ogo:text>
+ <ogo:position>(38 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(67 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB3</ogo:text>
+ <ogo:position>(38 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(67 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB4</ogo:text>
+ <ogo:position>(38 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(67 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB5</ogo:text>
+ <ogo:position>(38 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(67 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB6</ogo:text>
+ <ogo:position>(38 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(67 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB7</ogo:text>
+ <ogo:position>(38 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(67 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC0</ogo:text>
+ <ogo:position>(38 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC1</ogo:text>
+ <ogo:position>(38 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(67 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC2</ogo:text>
+ <ogo:position>(38 215)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(67 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC3</ogo:text>
+ <ogo:position>(38 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC4</ogo:text>
+ <ogo:position>(38 235)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(67 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC5</ogo:text>
+ <ogo:position>(38 245)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(67 250)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC6</ogo:text>
+ <ogo:position>(38 255)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(67 260)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC7</ogo:text>
+ <ogo:position>(38 265)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-20 285)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>8255</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %40 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>8253</ogo:name>
+ <ogo:symbol>8253</ogo:symbol>
+ <ogo:description>Triple Timer / Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RD</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>WR</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(-17 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(17 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(17 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK0</ogo:text>
+ <ogo:position>(38 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>G0</ogo:text>
+ <ogo:position>(42 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OT0</ogo:text>
+ <ogo:position>(38 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK1</ogo:text>
+ <ogo:position>(38 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>G1</ogo:text>
+ <ogo:position>(42 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OT1</ogo:text>
+ <ogo:position>(38 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(67 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK2</ogo:text>
+ <ogo:position>(38 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(67 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>G2</ogo:text>
+ <ogo:position>(42 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(67 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OT2</ogo:text>
+ <ogo:position>(38 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-20 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>8253</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>8254</ogo:name>
+ <ogo:symbol>eq</ogo:symbol>
+ <ogo:description>See 8253</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>MC146818</ogo:name>
+ <ogo:symbol>MC146818</ogo:symbol>
+ <ogo:description>Real Time Clock</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R|W</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AS</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>DS</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MR</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(17 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(17 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PS</ogo:text>
+ <ogo:position>(42 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IRQ</ogo:text>
+ <ogo:position>(38 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>SQW</ogo:text>
+ <ogo:position>(38 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CKO</ogo:text>
+ <ogo:position>(38 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CKF</ogo:text>
+ <ogo:position>(38 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MOT</ogo:text>
+ <ogo:position>(38 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Stby</ogo:text>
+ <ogo:position>(37 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(67 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X1</ogo:text>
+ <ogo:position>(42 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(67 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X2</ogo:text>
+ <ogo:position>(42 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>MC146818</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>ICL7109</ogo:name>
+ <ogo:symbol>ICL7109</ogo:symbol>
+ <ogo:description>12 bit ADC</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D9</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D10</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D11</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OR</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>POL</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TST</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-12 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>EOC</ogo:text>
+ <ogo:position>(2 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(-17 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R|H</ogo:text>
+ <ogo:position>(2 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>LB</ogo:text>
+ <ogo:position>(2 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-17 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>HB</ogo:text>
+ <ogo:position>(2 215)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(-17 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS</ogo:text>
+ <ogo:position>(2 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(-17 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VE</ogo:text>
+ <ogo:position>(2 245)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 250)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MO</ogo:text>
+ <ogo:position>(2 255)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>40</ogo:name>
+ <ogo:text>40</ogo:text>
+ <ogo:position>(17 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(22 275)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>SND</ogo:text>
+ <ogo:position>(38 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>36</ogo:name>
+ <ogo:text>36</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VR+</ogo:text>
+ <ogo:position>(38 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>37</ogo:name>
+ <ogo:text>37</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CR+</ogo:text>
+ <ogo:position>(38 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>38</ogo:name>
+ <ogo:text>38</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CR-</ogo:text>
+ <ogo:position>(38 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>35</ogo:name>
+ <ogo:text>35</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IN+</ogo:text>
+ <ogo:position>(38 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>34</ogo:name>
+ <ogo:text>34</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IN-</ogo:text>
+ <ogo:position>(38 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>39</ogo:name>
+ <ogo:text>39</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VR-</ogo:text>
+ <ogo:position>(38 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>33</ogo:name>
+ <ogo:text>33</ogo:text>
+ <ogo:position>(67 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AGND</ogo:text>
+ <ogo:position>(30 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(67 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>INT</ogo:text>
+ <ogo:position>(38 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(67 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AZ</ogo:text>
+ <ogo:position>(38 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>29</ogo:name>
+ <ogo:text>29</ogo:text>
+ <ogo:position>(67 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>REF</ogo:text>
+ <ogo:position>(38 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(67 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>BUF</ogo:text>
+ <ogo:position>(38 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(67 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OSCb</ogo:text>
+ <ogo:position>(34 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(67 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OSCs</ogo:text>
+ <ogo:position>(34 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(67 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OSCo</ogo:text>
+ <ogo:position>(34 215)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(67 250)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OSCi</ogo:text>
+ <ogo:position>(32 255)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 275)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>ICL7109</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %40 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>AD7528</ogo:name>
+ <ogo:symbol>AD7528</ogo:symbol>
+ <ogo:description>Dual 8 bit DAC</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A|B</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>WR</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(17 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(17 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OutA</ogo:text>
+ <ogo:position>(35 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RfA</ogo:text>
+ <ogo:position>(38 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VrA</ogo:text>
+ <ogo:position>(38 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OutB</ogo:text>
+ <ogo:position>(35 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(67 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RfB</ogo:text>
+ <ogo:position>(38 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(67 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VrB</ogo:text>
+ <ogo:position>(38 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(67 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Agnd</ogo:text>
+ <ogo:position>(35 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(45 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>AD7528</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>6821</ogo:name>
+ <ogo:symbol>6821</ogo:symbol>
+ <ogo:description>Paralel Interface Adapter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>33</ogo:name>
+ <ogo:text>33</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>29</ogo:name>
+ <ogo:text>29</ogo:text>
+ <ogo:position>(-17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(-17 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>40</ogo:name>
+ <ogo:text>40</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CA1</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CB1</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>39</ogo:name>
+ <ogo:text>39</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CA2</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-17 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CB2</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>36</ogo:name>
+ <ogo:text>36</ogo:text>
+ <ogo:position>(-17 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RS0</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>35</ogo:name>
+ <ogo:text>35</ogo:text>
+ <ogo:position>(-17 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RS1</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>38</ogo:name>
+ <ogo:text>38</ogo:text>
+ <ogo:position>(-17 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IRQA</ogo:text>
+ <ogo:position>(2 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>37</ogo:name>
+ <ogo:text>37</ogo:text>
+ <ogo:position>(-17 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IRQB</ogo:text>
+ <ogo:position>(2 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>34</ogo:name>
+ <ogo:text>34</ogo:text>
+ <ogo:position>(-17 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RESET</ogo:text>
+ <ogo:position>(2 215)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-17 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(2 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(17 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(22 245)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA0</ogo:text>
+ <ogo:position>(38 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(67 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA1</ogo:text>
+ <ogo:position>(38 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA2</ogo:text>
+ <ogo:position>(38 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(67 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA3</ogo:text>
+ <ogo:position>(38 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA4</ogo:text>
+ <ogo:position>(38 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA5</ogo:text>
+ <ogo:position>(38 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA6</ogo:text>
+ <ogo:position>(38 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA7</ogo:text>
+ <ogo:position>(38 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(67 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB0</ogo:text>
+ <ogo:position>(38 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(67 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB1</ogo:text>
+ <ogo:position>(38 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(67 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB2</ogo:text>
+ <ogo:position>(38 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB3</ogo:text>
+ <ogo:position>(38 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(67 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB4</ogo:text>
+ <ogo:position>(38 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB5</ogo:text>
+ <ogo:position>(38 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(67 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB6</ogo:text>
+ <ogo:position>(38 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(67 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB7</ogo:text>
+ <ogo:position>(38 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(67 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS0</ogo:text>
+ <ogo:position>(38 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(67 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS1</ogo:text>
+ <ogo:position>(38 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(67 210)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS2</ogo:text>
+ <ogo:position>(38 215)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(67 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R|W</ogo:text>
+ <ogo:position>(38 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 245)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>6821</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %40 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>AY3-1015</ogo:name>
+ <ogo:symbol>UART</ogo:symbol>
+ <ogo:description>UART Serial Interface</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TD0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TD1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TD2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>29</ogo:name>
+ <ogo:text>29</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TD3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>30</ogo:name>
+ <ogo:text>30</ogo:text>
+ <ogo:position>(-17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TD4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>31</ogo:name>
+ <ogo:text>31</ogo:text>
+ <ogo:position>(-17 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TD5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>32</ogo:name>
+ <ogo:text>32</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TD6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>33</ogo:name>
+ <ogo:text>33</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TD7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RD0</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RD1</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RD2</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-12 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RD3</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-12 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RD4</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RD5</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RD6</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-12 170)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RD7</ogo:text>
+ <ogo:position>(2 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 190)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TDS</ogo:text>
+ <ogo:position>(2 195)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RDE</ogo:text>
+ <ogo:position>(2 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>37</ogo:name>
+ <ogo:text>37</ogo:text>
+ <ogo:position>(-17 220)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>NB2</ogo:text>
+ <ogo:position>(2 225)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>38</ogo:name>
+ <ogo:text>38</ogo:text>
+ <ogo:position>(-17 230)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>NB1</ogo:text>
+ <ogo:position>(2 235)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-17 240)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RDA</ogo:text>
+ <ogo:position>(2 245)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-17 250)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TBMT</ogo:text>
+ <ogo:position>(2 255)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(-17 260)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>SWE</ogo:text>
+ <ogo:position>(2 265)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 270)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RDAR</ogo:text>
+ <ogo:position>(2 275)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(22 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(25 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(42 295)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(45 280)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>34</ogo:name>
+ <ogo:text>34</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CS</ogo:text>
+ <ogo:position>(43 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VE</ogo:text>
+ <ogo:position>(43 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>35</ogo:name>
+ <ogo:text>35</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>NP</ogo:text>
+ <ogo:position>(43 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>36</ogo:name>
+ <ogo:text>36</ogo:text>
+ <ogo:position>(67 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>NS</ogo:text>
+ <ogo:position>(43 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>39</ogo:name>
+ <ogo:text>39</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>POE</ogo:text>
+ <ogo:position>(38 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(67 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TEOC</ogo:text>
+ <ogo:position>(33 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(67 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RSI</ogo:text>
+ <ogo:position>(38 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(67 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TSO</ogo:text>
+ <ogo:position>(38 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(67 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RCP</ogo:text>
+ <ogo:position>(38 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>40</ogo:name>
+ <ogo:text>40</ogo:text>
+ <ogo:position>(67 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>TCP</ogo:text>
+ <ogo:position>(38 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 160)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RPE</ogo:text>
+ <ogo:position>(38 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(67 180)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RFE</ogo:text>
+ <ogo:position>(38 185)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 200)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ROR</ogo:text>
+ <ogo:position>(38 205)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(67 250)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MR</ogo:text>
+ <ogo:position>(43 255)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-20 295)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>AY3-1015</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %30 %31 %32 %33 %34 %35 %36 %37 %38 %39 %40 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>8284</ogo:name>
+ <ogo:symbol>8284</ogo:symbol>
+ <ogo:description>Clock Generator and Driver for 8086/8 CPU</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X2</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>F|C</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>EFI</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-12 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CSY</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-12 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RY1</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-12 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RY2</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-12 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AE1</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-12 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AE2</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ASY</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 150)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RES</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(17 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(20 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(67 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CLK</ogo:text>
+ <ogo:position>(37 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(67 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RDY</ogo:text>
+ <ogo:position>(37 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(67 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RST</ogo:text>
+ <ogo:position>(37 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(67 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PCK</ogo:text>
+ <ogo:position>(37 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(67 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OSC</ogo:text>
+ <ogo:position>(37 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-20 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>8284</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+
+
+
+
+
+ </ogo:parts>
+</ogo:library>
diff --git a/data/libraries/power.oreglib b/data/libraries/power.oreglib
new file mode 100644
index 0000000..d328304
--- /dev/null
+++ b/data/libraries/power.oreglib
@@ -0,0 +1,390 @@
+<?xml version="1.0"?>
+<ogo:library xmlns:ogo="http://www.dtek.chalmers.se/~d4hult/oregano/v1">
+ <ogo:name>Power Devices</ogo:name>
+ <ogo:description>Power libary</ogo:description>
+ <ogo:version>0.1</ogo:version>
+ <ogo:author>J.Roadley-Battin</ogo:author>
+ <ogo:last-updated>06-Apr-2001</ogo:last-updated>
+ <ogo:symbols>
+
+ <ogo:symbol>
+ <ogo:name>IGBT-NPN</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 30)(7 30)</ogo:line>
+ <ogo:line>(7 10)(7 30)</ogo:line>
+
+ <ogo:line>(10 7)(10 33)</ogo:line>
+ <ogo:line>(20 0)(20 10)(10 18)(10 22)(20 30)(20 40)</ogo:line>
+ <ogo:line>(18 23)(18 28)(13 28)</ogo:line>
+ </ogo:objects>
+
+ <ogo:connections>
+ <ogo:connection>(20 0)</ogo:connection>
+ <ogo:connection>(0 30)</ogo:connection>
+ <ogo:connection>(20 40)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>IGBT-PNP</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 30)(7 30)</ogo:line>
+ <ogo:line>(7 10)(7 30)</ogo:line>
+
+ <ogo:line>(10 7)(10 33)</ogo:line>
+ <ogo:line>(20 0)(20 10)(10 18)(10 22)(20 30)(20 40)</ogo:line>
+ <ogo:line>(18 24)(13 24)(13 29)</ogo:line>
+ </ogo:objects>
+
+ <ogo:connections>
+ <ogo:connection>(20 0)</ogo:connection>
+ <ogo:connection>(0 30)</ogo:connection>
+ <ogo:connection>(20 40)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>THYRISTOR</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)</ogo:line>
+ <ogo:line>(10 5)(10 15)(17 10)(10 5)</ogo:line>
+ <ogo:line>(17 5)(17 15)</ogo:line>
+ <ogo:line>(17 10)(30 10)</ogo:line>
+ <ogo:line>(17 12)(20 15)(20 20)</ogo:line>
+ </ogo:objects>
+
+ <ogo:connections>
+ <ogo:connection>(0 10)</ogo:connection>
+ <ogo:connection>(30 10)</ogo:connection>
+ <ogo:connection>(20 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>GTO</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)</ogo:line>
+ <ogo:line>(10 5)(10 15)(17 10)(10 5)</ogo:line>
+ <ogo:line>(17 5)(17 15)</ogo:line>
+ <ogo:line>(17 10)(30 10)</ogo:line>
+ <ogo:line>(17 13)(20 16)(20 20)</ogo:line>
+ <ogo:line>(17 11)(20 14)(20 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10)</ogo:connection>
+ <ogo:connection>(30 10)</ogo:connection>
+ <ogo:connection>(20 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>vari-res</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)</ogo:line>
+ <ogo:line>(10 7)(10 13)(30 13)(30 7)(10 7)</ogo:line>
+ <ogo:line>(30 10)(40 10)</ogo:line>
+ <ogo:line>(7 3)(33 17)</ogo:line>
+ <ogo:line>(33 12)(33 17)(28 17)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 10)</ogo:connection>
+ <ogo:connection>(40 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>res</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)</ogo:line>
+ <ogo:line>(10 7)(10 13)(30 13)(30 7)(10 7)</ogo:line>
+ <ogo:line>(30 10)(40 10)</ogo:line>
+ </ogo:objects>
+
+ <ogo:connections>
+ <ogo:connection>(0 10)</ogo:connection>
+ <ogo:connection>(40 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ <ogo:symbol>
+ <ogo:name>pot</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)</ogo:line>
+ <ogo:line>(10 7)(10 13)(30 13)(30 7)(10 7)</ogo:line>
+ <ogo:line>(30 10)(40 10)</ogo:line>
+ <ogo:line>(20 7)(20 0)</ogo:line>
+ <ogo:line>(18 5)(20 7)(22 5)</ogo:line>
+ </ogo:objects>
+
+ <ogo:connections>
+ <ogo:connection>(0 10)</ogo:connection>
+ <ogo:connection>(40 10)</ogo:connection>
+ <ogo:connection>(20 0)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ </ogo:symbols>
+
+ <ogo:parts>
+
+ <ogo:part>
+ <ogo:name>IGBT-NPN</ogo:name>
+ <ogo:symbol>IGBT-NPN</ogo:symbol>
+ <ogo:description>Insulated gate Bipolar Transistor,NPN</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@component</ogo:text>
+ <ogo:position>(30 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>Q</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Componet</ogo:name>
+ <ogo:value>IGBT-NPN</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>Q_@refdes %c %g %e npn</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>IGBT-PNP</ogo:name>
+ <ogo:symbol>IGBT-PNP</ogo:symbol>
+ <ogo:description>Insulated gate Bipolar Transitor,PNP</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@component</ogo:text>
+ <ogo:position>(30 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>Q</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Componet</ogo:name>
+ <ogo:value>IGBT-PNP</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>Q_@refdes %c %g %e pnp</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>THYRISTOR</ogo:name>
+ <ogo:symbol>THYRISTOR</ogo:symbol>
+ <ogo:description>Thyristor</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@component</ogo:text>
+ <ogo:position>(30 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>T</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Component</ogo:name>
+ <ogo:value>THYRISTOR</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>TY_@refdes %a %k %g </ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>GTO</ogo:name>
+ <ogo:symbol>GTO</ogo:symbol>
+ <ogo:description>Gate Turn-Off Thyristor</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@component</ogo:text>
+ <ogo:position>(30 40)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>Gt</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Componet</ogo:name>
+ <ogo:value>GTO</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>Gt_@refdes %a %k %g </ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>Variable Resistor</ogo:name>
+ <ogo:symbol>vari-res</ogo:symbol>
+ <ogo:description>Variable Resistor</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 8)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Resistance</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(5 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>R</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Res</ogo:name>
+ <ogo:value>1k</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>Potentiometer</ogo:name>
+ <ogo:symbol>pot</ogo:symbol>
+ <ogo:description>Potentiometer</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(5 8)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Resistance</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(5 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>R</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Res</ogo:name>
+ <ogo:value>1k</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 %3 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>Resistor</ogo:name>
+ <ogo:symbol>res</ogo:symbol>
+ <ogo:description>Resistor</ogo:description>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(5 8)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Resistance</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(5 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>R</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Res</ogo:name>
+ <ogo:value>1k</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ </ogo:parts>
+</ogo:library>
diff --git a/data/libraries/ttl.oreglib b/data/libraries/ttl.oreglib
new file mode 100644
index 0000000..94b2088
--- /dev/null
+++ b/data/libraries/ttl.oreglib
@@ -0,0 +1,28693 @@
+<?xml version="1.0"?>
+<ogo:library xmlns:ogo="http://www.dtek.chalmers.se/~d4hult/oregano/v1">
+ <ogo:name>TTL</ogo:name>
+ <ogo:description>Ttl Library</ogo:description>
+ <ogo:version>0.9</ogo:version>
+ <ogo:author>Hector Bellesi, laurablopez@hotmail.com</ogo:author>
+ <ogo:last-updated>16-May-2001</ogo:last-updated>
+ <ogo:symbols>
+
+ <ogo:symbol>
+ <ogo:name>NANDp</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 60)(20 40)</ogo:line>
+ <ogo:line>(56 20)(70 20)</ogo:line>
+ <ogo:arc>(50 17)(56 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 60)</ogo:connection>
+ <ogo:connection>(70 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>NAND</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(56 20)(70 20)</ogo:line>
+ <ogo:arc>(50 17)(56 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(70 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>NORp</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-10 10)(4 10)</ogo:line>
+ <ogo:line>(-10 30)(4 30)</ogo:line>
+ <ogo:line>(10 -10)(10 0)</ogo:line>
+ <ogo:line>(10 50)(10 40)</ogo:line>
+ <ogo:line>(51 20)(55 20)</ogo:line>
+ <ogo:arc>(45 17)(51 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 10)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ <ogo:connection>(10 -10)</ogo:connection>
+ <ogo:connection>(10 50)</ogo:connection>
+ <ogo:connection>(55 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>NOR</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-10 10)(4 10)</ogo:line>
+ <ogo:line>(-10 30)(4 30)</ogo:line>
+ <ogo:line>(51 20)(55 20)</ogo:line>
+ <ogo:arc>(45 17)(51 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 10)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ <ogo:connection>(55 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>INVERp</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(20 -10)(20 10)</ogo:line>
+ <ogo:line>(20 50)(20 30)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(20 -10)</ogo:connection>
+ <ogo:connection>(20 50)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>BUFFERp</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(20 -10)(20 10)</ogo:line>
+ <ogo:line>(20 50)(20 30)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(20 -10)</ogo:connection>
+ <ogo:connection>(20 50)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>BUFTRI4-p</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-10 20)(0 20)</ogo:line>
+ <ogo:line>(20 -10)(20 10)</ogo:line>
+ <ogo:line>(20 50)(20 36)</ogo:line>
+ <ogo:line>(40 20)(50 20)</ogo:line>
+ <ogo:arc>(17 30)(23 36)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(20 -10)</ogo:connection>
+ <ogo:connection>(20 50)</ogo:connection>
+ <ogo:connection>(50 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>BUFTRI4-</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-10 20)(0 20)</ogo:line>
+ <ogo:line>(20 50)(20 36)</ogo:line>
+ <ogo:line>(40 20)(50 20)</ogo:line>
+ <ogo:arc>(17 30)(23 36)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(20 50)</ogo:connection>
+ <ogo:connection>(50 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>BUFTRI4p</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-10 20)(0 20)</ogo:line>
+ <ogo:line>(20 -10)(20 10)</ogo:line>
+ <ogo:line>(20 50)(20 30)</ogo:line>
+ <ogo:line>(40 20)(50 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(20 -10)</ogo:connection>
+ <ogo:connection>(20 50)</ogo:connection>
+ <ogo:connection>(50 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>BUFTRI4</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-10 20)(0 20)</ogo:line>
+ <ogo:line>(20 50)(20 30)</ogo:line>
+ <ogo:line>(40 20)(50 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(20 50)</ogo:connection>
+ <ogo:connection>(50 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+
+ <ogo:symbol>
+ <ogo:name>INVER</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>BUFFER</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)(40 20)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>ANDp</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 60)(20 40)</ogo:line>
+ <ogo:line>(50 20)(70 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 60)</ogo:connection>
+ <ogo:connection>(70 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>AND</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(50 20)(70 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(70 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>NAND3p</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 60)(20 40)</ogo:line>
+ <ogo:line>(56 20)(70 20)</ogo:line>
+ <ogo:arc>(50 17)(56 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 60)</ogo:connection>
+ <ogo:connection>(70 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>NAND3</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(56 20)(70 20)</ogo:line>
+ <ogo:arc>(50 17)(56 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 10)</ogo:connection>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>AND3p</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-10 10)(0 10)</ogo:line>
+ <ogo:line>(-10 20)(0 20)</ogo:line>
+ <ogo:line>(-10 30)(0 30)</ogo:line>
+ <ogo:line>(20 -10)(20 0)</ogo:line>
+ <ogo:line>(20 50)(20 40)</ogo:line>
+ <ogo:line>(50 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 10)</ogo:connection>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ <ogo:connection>(20 -10)</ogo:connection>
+ <ogo:connection>(20 50)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>AND3</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 40)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(43 5)(45 7)(47 10)(49 15)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(43 35)(45 33)(47 30)(49 25)(50 20)</ogo:line>
+ <ogo:line>(-10 10)(0 10)</ogo:line>
+ <ogo:line>(-10 20)(0 20)</ogo:line>
+ <ogo:line>(-10 30)(0 30)</ogo:line>
+ <ogo:line>(50 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 10)</ogo:connection>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>NAND4p</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 50)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 50)(40 50)</ogo:line>
+ <ogo:line>(40 0)(45 1)(50 3)(55 6)(57 9)(60 12)(64 20)(65 25)</ogo:line>
+ <ogo:line>(40 50)(45 49)(50 47)(55 44)(57 41)(60 38)(64 30)(65 25)</ogo:line>
+ <ogo:line>(-10 10)(0 10)</ogo:line>
+ <ogo:line>(-10 20)(0 20)</ogo:line>
+ <ogo:line>(-10 30)(0 30)</ogo:line>
+ <ogo:line>(-10 40)(0 40)</ogo:line>
+ <ogo:line>(20 -10)(20 0)</ogo:line>
+ <ogo:line>(20 60)(20 50)</ogo:line>
+ <ogo:line>(71 25)(78 20)(90 20)</ogo:line>
+ <ogo:arc>(65 22)(71 28)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 10)</ogo:connection>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ <ogo:connection>(-10 40)</ogo:connection>
+ <ogo:connection>(20 -10)</ogo:connection>
+ <ogo:connection>(20 60)</ogo:connection>
+ <ogo:connection>(90 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>NAND4</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 50)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 50)(40 50)</ogo:line>
+ <ogo:line>(40 0)(45 1)(50 3)(55 6)(57 9)(60 12)(64 20)(65 25)</ogo:line>
+ <ogo:line>(40 50)(45 49)(50 47)(55 44)(57 41)(60 38)(64 30)(65 25)</ogo:line>
+ <ogo:line>(-10 10)(0 10)</ogo:line>
+ <ogo:line>(-10 20)(0 20)</ogo:line>
+ <ogo:line>(-10 30)(0 30)</ogo:line>
+ <ogo:line>(-10 40)(0 40)</ogo:line>
+ <ogo:line>(71 25)(78 20)(90 20)</ogo:line>
+ <ogo:arc>(65 22)(71 28)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 10)</ogo:connection>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ <ogo:connection>(-10 40)</ogo:connection>
+ <ogo:connection>(90 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>AND4p</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 50)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 50)(40 50)</ogo:line>
+ <ogo:line>(40 0)(45 1)(50 3)(55 6)(57 9)(60 12)(64 20)(65 25)</ogo:line>
+ <ogo:line>(40 50)(45 49)(50 47)(55 44)(57 41)(60 38)(64 30)(65 25)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 70)(20 50)</ogo:line>
+ <ogo:line>(65 25)(78 20)(90 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 70)</ogo:connection>
+ <ogo:connection>(90 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>AND4</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 50)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 50)(40 50)</ogo:line>
+ <ogo:line>(40 0)(45 1)(50 3)(55 6)(57 9)(60 12)(64 20)(65 25)</ogo:line>
+ <ogo:line>(40 50)(45 49)(50 47)(55 44)(57 41)(60 38)(64 30)(65 25)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(65 25)(78 20)(90 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(90 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>NORE4</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(5 10)(7 15)(8 20)(9 25)(8 30)(7 35)(5 40)(3 45)(0 50)</ogo:line>
+ <ogo:line>(0 0)(15 0)</ogo:line>
+ <ogo:line>(0 50)(15 50)</ogo:line>
+ <ogo:line>(15 0)(20 0)(25 1)(30 2)(35 3)(40 5)(45 7)(50 11)(55 16)(60 22)(63 25)</ogo:line>
+ <ogo:line>(15 50)(20 50)(25 49)(30 48)(35 47)(40 45)(45 43)(50 39)(55 34)(60 28)(63 25)</ogo:line>
+ <ogo:line>(-10 10)(5 10)</ogo:line>
+ <ogo:line>(-10 20)(8 20)</ogo:line>
+ <ogo:line>(-10 30)(8 30)</ogo:line>
+ <ogo:line>(-10 40)(5 40)</ogo:line>
+ <ogo:line>(10 -10)(10 0)</ogo:line>
+ <ogo:line>(10 50)(10 60)</ogo:line>
+ <ogo:line>(20 -10)(20 0)</ogo:line>
+ <ogo:line>(69 25)(75 20)(80 20)</ogo:line>
+ <ogo:arc>(63 22)(69 28)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 10)</ogo:connection>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ <ogo:connection>(-10 40)</ogo:connection>
+ <ogo:connection>(10 -10)</ogo:connection>
+ <ogo:connection>(20 -10)</ogo:connection>
+ <ogo:connection>(10 60)</ogo:connection>
+ <ogo:connection>(80 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>NORS4</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(5 10)(7 15)(8 20)(9 25)(8 30)(7 35)(5 40)(3 45)(0 50)</ogo:line>
+ <ogo:line>(0 0)(15 0)</ogo:line>
+ <ogo:line>(0 50)(15 50)</ogo:line>
+ <ogo:line>(15 0)(20 0)(25 1)(30 2)(35 3)(40 5)(45 7)(50 11)(55 16)(60 22)(63 25)</ogo:line>
+ <ogo:line>(15 50)(20 50)(25 49)(30 48)(35 47)(40 45)(45 43)(50 39)(55 34)(60 28)(63 25)</ogo:line>
+ <ogo:line>(-10 10)(5 10)</ogo:line>
+ <ogo:line>(-10 20)(8 20)</ogo:line>
+ <ogo:line>(-10 30)(8 30)</ogo:line>
+ <ogo:line>(-10 40)(5 40)</ogo:line>
+ <ogo:line>(10 -10)(10 0)</ogo:line>
+ <ogo:line>(10 50)(10 60)</ogo:line>
+ <ogo:line>(69 25)(75 20)(80 20)</ogo:line>
+ <ogo:arc>(63 22)(69 28)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 10)</ogo:connection>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ <ogo:connection>(-10 40)</ogo:connection>
+ <ogo:connection>(10 -10)</ogo:connection>
+ <ogo:connection>(10 60)</ogo:connection>
+ <ogo:connection>(80 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>NOR3p</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-10 10)(4 10)</ogo:line>
+ <ogo:line>(-10 20)(6 20)</ogo:line>
+ <ogo:line>(-10 30)(4 30)</ogo:line>
+ <ogo:line>(10 -10)(10 0)</ogo:line>
+ <ogo:line>(10 50)(10 40)</ogo:line>
+ <ogo:line>(51 20)(60 20)</ogo:line>
+ <ogo:arc>(45 17)(51 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 10)</ogo:connection>
+ <ogo:connection>(-10 2)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ <ogo:connection>(10 -10)</ogo:connection>
+ <ogo:connection>(10 50)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>NOR3</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-10 10)(4 10)</ogo:line>
+ <ogo:line>(-10 20)(6 20)</ogo:line>
+ <ogo:line>(-10 30)(4 30)</ogo:line>
+ <ogo:line>(51 20)(60 20)</ogo:line>
+ <ogo:arc>(45 17)(51 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 10)</ogo:connection>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>NAND8</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 -20)(0 70)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 50)(40 50)</ogo:line>
+ <ogo:line>(40 0)(45 1)(50 3)(55 6)(57 9)(60 12)(64 20)(65 25)</ogo:line>
+ <ogo:line>(40 50)(45 49)(50 47)(55 44)(57 41)(60 38)(64 30)(65 25)</ogo:line>
+ <ogo:line>(-10 -10)(0 -10)</ogo:line>
+ <ogo:line>(-10 0)(0 0)</ogo:line>
+ <ogo:line>(-10 10)(0 10)</ogo:line>
+ <ogo:line>(-10 20)(0 20)</ogo:line>
+ <ogo:line>(-10 30)(0 30)</ogo:line>
+ <ogo:line>(-10 40)(0 40)</ogo:line>
+ <ogo:line>(-10 50)(0 50)</ogo:line>
+ <ogo:line>(-10 60)(0 60)</ogo:line>
+ <ogo:line>(20 -10)(20 0)</ogo:line>
+ <ogo:line>(20 60)(20 50)</ogo:line>
+ <ogo:line>(71 25)(78 20)(90 20)</ogo:line>
+ <ogo:arc>(65 22)(71 28)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 -10)</ogo:connection>
+ <ogo:connection>(-10 0)</ogo:connection>
+ <ogo:connection>(-10 10)</ogo:connection>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ <ogo:connection>(-10 40)</ogo:connection>
+ <ogo:connection>(-10 50)</ogo:connection>
+ <ogo:connection>(-10 60)</ogo:connection>
+ <ogo:connection>(20 -10)</ogo:connection>
+ <ogo:connection>(20 60)</ogo:connection>
+ <ogo:connection>(90 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>NAND13</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 -45)(0 85)</ogo:line>
+ <ogo:line>(0 0)(30 0)</ogo:line>
+ <ogo:line>(0 40)(30 40)</ogo:line>
+ <ogo:line>(30 0)(35 1)(40 3)(45 6)(48 10)(50 20)</ogo:line>
+ <ogo:line>(30 40)(35 39)(40 37)(45 34)(48 30)(50 20)</ogo:line>
+ <ogo:line>(-20 -40)(0 -40)</ogo:line>
+ <ogo:line>(-20 -30)(0 -30)</ogo:line>
+ <ogo:line>(-20 -20)(0 -20)</ogo:line>
+ <ogo:line>(-20 -10)(0 -10)</ogo:line>
+ <ogo:line>(-20 0)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 60)(20 40)</ogo:line>
+ <ogo:line>(56 20)(70 20)</ogo:line>
+ <ogo:arc>(50 17)(56 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 -40)</ogo:connection>
+ <ogo:connection>(-20 -30)</ogo:connection>
+ <ogo:connection>(-20 -20)</ogo:connection>
+ <ogo:connection>(-20 -10)</ogo:connection>
+ <ogo:connection>(-20 0)</ogo:connection>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 60)</ogo:connection>
+ <ogo:connection>(70 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ <ogo:symbol>
+ <ogo:name>ORp</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(4 10)</ogo:line>
+ <ogo:line>(-20 30)(4 30)</ogo:line>
+ <ogo:line>(10 -20)(10 0)</ogo:line>
+ <ogo:line>(10 60)(10 40)</ogo:line>
+ <ogo:line>(45 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(10 -20)</ogo:connection>
+ <ogo:connection>(10 60)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>OR</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(4 10)</ogo:line>
+ <ogo:line>(-20 30)(4 30)</ogo:line>
+ <ogo:line>(45 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>EQ</ogo:name>
+ <ogo:objects>
+ </ogo:objects>
+ <ogo:connections>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>BCD10</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 110)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 110)(40 110)</ogo:line>
+ <ogo:line>(40 0)(40 110)</ogo:line>
+ <ogo:line>(-10 20)(0 20)</ogo:line>
+ <ogo:line>(-10 40)(0 40)</ogo:line>
+ <ogo:line>(-10 60)(0 60)</ogo:line>
+ <ogo:line>(-10 80)(0 80)</ogo:line>
+ <ogo:line>(46 10)(60 10)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:line>(46 30)(60 30)</ogo:line>
+ <ogo:line>(46 40)(60 40)</ogo:line>
+ <ogo:line>(46 50)(60 50)</ogo:line>
+ <ogo:line>(46 60)(60 60)</ogo:line>
+ <ogo:line>(46 70)(60 70)</ogo:line>
+ <ogo:line>(46 80)(60 80)</ogo:line>
+ <ogo:line>(46 90)(60 90)</ogo:line>
+ <ogo:line>(46 100)(60 100)</ogo:line>
+ <ogo:line>(20 -10)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 110)</ogo:line>
+ <ogo:arc>(40 7)(46 13)</ogo:arc>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 27)(46 33)</ogo:arc>
+ <ogo:arc>(40 37)(46 43)</ogo:arc>
+ <ogo:arc>(40 47)(46 53)</ogo:arc>
+ <ogo:arc>(40 57)(46 63)</ogo:arc>
+ <ogo:arc>(40 67)(46 73)</ogo:arc>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ <ogo:arc>(40 87)(46 93)</ogo:arc>
+ <ogo:arc>(40 97)(46 103)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(-10 40)</ogo:connection>
+ <ogo:connection>(-10 60)</ogo:connection>
+ <ogo:connection>(-10 80)</ogo:connection>
+ <ogo:connection>(20 -10)</ogo:connection>
+ <ogo:connection>(20 120)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ <ogo:connection>(60 90)</ogo:connection>
+ <ogo:connection>(60 100)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>BCD7</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-10 20)(0 20)</ogo:line>
+ <ogo:line>(-10 30)(0 30)</ogo:line>
+ <ogo:line>(-10 40)(0 40)</ogo:line>
+ <ogo:line>(-10 50)(0 50)</ogo:line>
+ <ogo:line>(-10 70)(0 70)</ogo:line>
+ <ogo:line>(-10 80)(0 80)</ogo:line>
+ <ogo:line>(46 10)(60 10)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:line>(46 30)(60 30)</ogo:line>
+ <ogo:line>(46 40)(60 40)</ogo:line>
+ <ogo:line>(46 50)(60 50)</ogo:line>
+ <ogo:line>(46 60)(60 60)</ogo:line>
+ <ogo:line>(46 70)(60 70)</ogo:line>
+ <ogo:line>(46 80)(60 80)</ogo:line>
+ <ogo:line>(20 -10)(20 0)</ogo:line>
+ <ogo:line>(20 100)(20 90)</ogo:line>
+ <ogo:arc>(40 7)(46 13)</ogo:arc>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 27)(46 33)</ogo:arc>
+ <ogo:arc>(40 37)(46 43)</ogo:arc>
+ <ogo:arc>(40 47)(46 53)</ogo:arc>
+ <ogo:arc>(40 57)(46 63)</ogo:arc>
+ <ogo:arc>(40 67)(46 73)</ogo:arc>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ <ogo:connection>(-10 40)</ogo:connection>
+ <ogo:connection>(-10 50)</ogo:connection>
+ <ogo:connection>(-10 70)</ogo:connection>
+ <ogo:connection>(-10 80)</ogo:connection>
+ <ogo:connection>(20 -10)</ogo:connection>
+ <ogo:connection>(20 100)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>BCD7n</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(46 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 110)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>BCD7ns</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 80)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 80)(40 80)</ogo:line>
+ <ogo:line>(40 0)(40 80)</ogo:line>
+ <ogo:line>(-10 20)(0 20)</ogo:line>
+ <ogo:line>(-10 30)(0 30)</ogo:line>
+ <ogo:line>(-10 40)(0 40)</ogo:line>
+ <ogo:line>(-10 50)(0 50)</ogo:line>
+ <ogo:line>(-10 70)(-6 70)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(20 -10)(20 0)</ogo:line>
+ <ogo:line>(20 90)(20 80)</ogo:line>
+ <ogo:arc>(-6 67)(0 73)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ <ogo:connection>(-10 40)</ogo:connection>
+ <ogo:connection>(-10 50)</ogo:connection>
+ <ogo:connection>(-10 70)</ogo:connection>
+ <ogo:connection>(20 -10)</ogo:connection>
+ <ogo:connection>(20 90)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>ANDOR2x2e</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 5)(15 5)</ogo:line>
+ <ogo:line>(0 5)(0 35)</ogo:line>
+ <ogo:line>(0 35)(15 35)</ogo:line>
+ <ogo:line>(15 5)(20 6)(22 7)(25 9)(26 10)(29 15)(30 20)</ogo:line>
+ <ogo:line>(15 35)(20 34)(22 33)(25 31)(26 30)(29 25)(30 20)</ogo:line>
+ <ogo:line>(-10 10)(0 10)</ogo:line>
+ <ogo:line>(-10 30)(0 30)</ogo:line>
+ <ogo:line>(50 10)(50 25)</ogo:line>
+ <ogo:line>(50 70)(50 55)</ogo:line>
+ <ogo:line>(30 20)(35 20)(35 30)(44 30)</ogo:line>
+ <ogo:line>(0 45)(15 45)</ogo:line>
+ <ogo:line>(0 45)(0 75)</ogo:line>
+ <ogo:line>(0 75)(15 75)</ogo:line>
+ <ogo:line>(15 45)(20 46)(22 47)(25 49)(26 50)(29 55)(30 60)</ogo:line>
+ <ogo:line>(15 75)(20 74)(22 73)(25 71)(26 70)(29 65)(30 60)</ogo:line>
+ <ogo:line>(-10 50)(0 50)</ogo:line>
+ <ogo:line>(-10 70)(0 70)</ogo:line>
+ <ogo:line>(30 60)(35 60)(35 50)(44 50)</ogo:line>
+ <ogo:line>(40 25)(50 25)</ogo:line>
+ <ogo:line>(40 55)(50 55)</ogo:line>
+ <ogo:line>(40 25)(44 30)(45 33)(46 40)(45 47)(44 50)(40 55)</ogo:line>
+ <ogo:line>(50 25)(58 26)(65 28)(71 31)(75 34)(80 40)</ogo:line>
+ <ogo:line>(50 55)(58 54)(65 52)(71 49)(75 46)(80 40)</ogo:line>
+ <ogo:line>(86 40)(100 40)</ogo:line>
+ <ogo:arc>(80 37)(86 43)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 10)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ <ogo:connection>(-10 50)</ogo:connection>
+ <ogo:connection>(-10 70)</ogo:connection>
+ <ogo:connection>(50 10)</ogo:connection>
+ <ogo:connection>(50 70)</ogo:connection>
+ <ogo:connection>(100 40)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>ANDOR2x3</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 5)(15 5)</ogo:line>
+ <ogo:line>(0 5)(0 35)</ogo:line>
+ <ogo:line>(0 35)(15 35)</ogo:line>
+ <ogo:line>(15 5)(20 6)(22 7)(25 9)(26 10)(29 15)(30 20)</ogo:line>
+ <ogo:line>(15 35)(20 34)(22 33)(25 31)(26 30)(29 25)(30 20)</ogo:line>
+ <ogo:line>(-10 10)(0 10)</ogo:line>
+ <ogo:line>(-10 20)(0 20)</ogo:line>
+ <ogo:line>(-10 30)(0 30)</ogo:line>
+ <ogo:line>(30 20)(35 20)(35 30)(44 30)</ogo:line>
+ <ogo:line>(0 45)(15 45)</ogo:line>
+ <ogo:line>(0 45)(0 75)</ogo:line>
+ <ogo:line>(0 75)(15 75)</ogo:line>
+ <ogo:line>(15 45)(20 46)(22 47)(25 49)(26 50)(29 55)(30 60)</ogo:line>
+ <ogo:line>(15 75)(20 74)(22 73)(25 71)(26 70)(29 65)(30 60)</ogo:line>
+ <ogo:line>(-10 50)(0 50)</ogo:line>
+ <ogo:line>(-10 60)(0 60)</ogo:line>
+ <ogo:line>(-10 70)(0 70)</ogo:line>
+ <ogo:line>(30 60)(35 60)(35 50)(44 50)</ogo:line>
+ <ogo:line>(40 25)(50 25)</ogo:line>
+ <ogo:line>(40 55)(50 55)</ogo:line>
+ <ogo:line>(40 25)(44 30)(45 33)(46 40)(45 47)(44 50)(40 55)</ogo:line>
+ <ogo:line>(50 25)(58 26)(65 28)(71 31)(75 34)(80 40)</ogo:line>
+ <ogo:line>(50 55)(58 54)(65 52)(71 49)(75 46)(80 40)</ogo:line>
+ <ogo:line>(86 40)(100 40)</ogo:line>
+ <ogo:arc>(80 37)(86 43)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 10)</ogo:connection>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ <ogo:connection>(-10 50)</ogo:connection>
+ <ogo:connection>(-10 60)</ogo:connection>
+ <ogo:connection>(-10 70)</ogo:connection>
+ <ogo:connection>(100 40)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>ANDOR2x3x4</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 -5)(15 -5)</ogo:line>
+ <ogo:line>(0 -5)(0 25)</ogo:line>
+ <ogo:line>(0 25)(15 25)</ogo:line>
+ <ogo:line>(15 -5)(20 -4)(23 -3)(25 -2)(27 0)(29 5)(30 10)</ogo:line>
+ <ogo:line>(15 25)(20 24)(23 23)(25 22)(27 20)(29 15)(30 10)</ogo:line>
+ <ogo:line>(-10 0)(0 0)</ogo:line>
+ <ogo:line>(-10 10)(0 10)</ogo:line>
+ <ogo:line>(-10 20)(0 20)</ogo:line>
+ <ogo:line>(30 10)(35 10)(35 45)(49 45)</ogo:line>
+ <ogo:line>(0 35)(15 35)</ogo:line>
+ <ogo:line>(0 35)(0 55)</ogo:line>
+ <ogo:line>(0 55)(15 55)</ogo:line>
+ <ogo:line>(15 35)(20 36)(22 37)(24 40)(25 45)</ogo:line>
+ <ogo:line>(15 55)(20 54)(22 53)(24 50)(25 45)</ogo:line>
+ <ogo:line>(-10 40)(0 40)</ogo:line>
+ <ogo:line>(-10 50)(0 50)</ogo:line>
+ <ogo:line>(25 45)(30 45)(30 55)(53 55)</ogo:line>
+ <ogo:line>(0 65)(15 65)</ogo:line>
+ <ogo:line>(0 65)(0 85)</ogo:line>
+ <ogo:line>(0 85)(15 85)</ogo:line>
+ <ogo:line>(15 65)(20 66)(22 67)(24 70)(25 75)</ogo:line>
+ <ogo:line>(15 85)(20 84)(22 83)(24 80)(25 75)</ogo:line>
+ <ogo:line>(-10 70)(0 70)</ogo:line>
+ <ogo:line>(-10 80)(0 80)</ogo:line>
+ <ogo:line>(25 75)(30 75)(30 65)(53 65)</ogo:line>
+ <ogo:line>(0 95)(15 95)</ogo:line>
+ <ogo:line>(0 95)(0 125)</ogo:line>
+ <ogo:line>(0 125)(15 125)</ogo:line>
+ <ogo:line>(15 95)(20 96)(23 97)(25 98)(27 100)(29 105)(30 110)</ogo:line>
+ <ogo:line>(15 125)(20 124)(23 123)(25 122)(27 120)(29 115)(30 110)</ogo:line>
+ <ogo:line>(-10 100)(0 100)</ogo:line>
+ <ogo:line>(-10 110)(0 110)</ogo:line>
+ <ogo:line>(-10 120)(0 120)</ogo:line>
+ <ogo:line>(30 110)(35 110)(35 75)(49 75)</ogo:line>
+ <ogo:line>(45 40)(55 40)</ogo:line>
+ <ogo:line>(45 80)(55 80)</ogo:line>
+ <ogo:line>(55 40)(65 41)(70 42)(75 44)(81 47)(85 50)(90 54)(95 60)</ogo:line>
+ <ogo:line>(55 80)(65 79)(70 78)(75 76)(81 73)(85 70)(90 66)(95 60)</ogo:line>
+ <ogo:line>(45 40)(49 45)(52 50)(53 55)(54 60)(53 65)(52 70)(49 75)(45 80)</ogo:line>
+ <ogo:line>(101 60)(110 60)</ogo:line>
+ <ogo:arc>(95 57)(101 63)</ogo:arc>
+ <ogo:line>(50 40)(50 20)</ogo:line>
+ <ogo:line>(50 80)(50 100)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 0)</ogo:connection>
+ <ogo:connection>(-10 10)</ogo:connection>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(-10 40)</ogo:connection>
+ <ogo:connection>(-10 50)</ogo:connection>
+ <ogo:connection>(-10 70)</ogo:connection>
+ <ogo:connection>(-10 80)</ogo:connection>
+ <ogo:connection>(-10 100)</ogo:connection>
+ <ogo:connection>(-10 110)</ogo:connection>
+ <ogo:connection>(-10 120)</ogo:connection>
+ <ogo:connection>(110 60)</ogo:connection>
+ <ogo:connection>(50 20)</ogo:connection>
+ <ogo:connection>(50 100)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>ANDOR2x4</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 5)(0 45)</ogo:line>
+ <ogo:line>(0 5)(20 5)</ogo:line>
+ <ogo:line>(0 45)(20 45)</ogo:line>
+ <ogo:line>(20 5)(25 6)(31 8)(35 12)(37 15)(39 20)(40 25)</ogo:line>
+ <ogo:line>(20 45)(25 44)(31 42)(35 38)(37 35)(39 30)(40 25)</ogo:line>
+ <ogo:line>(-10 10)(0 10)</ogo:line>
+ <ogo:line>(-10 20)(0 20)</ogo:line>
+ <ogo:line>(-10 30)(0 30)</ogo:line>
+ <ogo:line>(-10 40)(0 40)</ogo:line>
+ <ogo:line>(-10 60)(0 60)</ogo:line>
+ <ogo:line>(-10 70)(0 70)</ogo:line>
+ <ogo:line>(-10 80)(0 80)</ogo:line>
+ <ogo:line>(-10 90)(0 90)</ogo:line>
+ <ogo:line>(40 25)(50 25)(50 45)(61 45)</ogo:line>
+ <ogo:line>(0 55)(0 95)</ogo:line>
+ <ogo:line>(0 55)(20 55)</ogo:line>
+ <ogo:line>(0 95)(20 95)</ogo:line>
+ <ogo:line>(20 55)(25 56)(31 58)(35 62)(37 65)(39 70)(40 75)</ogo:line>
+ <ogo:line>(20 95)(25 94)(31 92)(35 88)(37 85)(39 80)(40 75)</ogo:line>
+ <ogo:line>(40 75)(50 75)(50 55)(61 55)</ogo:line>
+ <ogo:line>(55 35)(65 35)</ogo:line>
+ <ogo:line>(55 65)(65 65)</ogo:line>
+ <ogo:line>(65 35)(75 36)(80 37)(85 39)(91 43)(95 47)(97 50)</ogo:line>
+ <ogo:line>(65 65)(75 64)(80 63)(85 61)(91 57)(95 53)(97 50)</ogo:line>
+ <ogo:line>(55 35)(59 40)(60 42)(61 45)(62 50)(61 55)(60 58)(59 65)(55 65)</ogo:line>
+ <ogo:line>(103 50)(110 50)</ogo:line>
+ <ogo:arc>(97 47)(103 53)</ogo:arc>
+ <ogo:line>(65 35)(65 20)</ogo:line>
+ <ogo:line>(65 65)(65 80)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 10)</ogo:connection>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ <ogo:connection>(-10 40)</ogo:connection>
+ <ogo:connection>(-10 60)</ogo:connection>
+ <ogo:connection>(-10 70)</ogo:connection>
+ <ogo:connection>(-10 80)</ogo:connection>
+ <ogo:connection>(-10 90)</ogo:connection>
+ <ogo:connection>(65 20)</ogo:connection>
+ <ogo:connection>(65 80)</ogo:connection>
+ <ogo:connection>(110 50)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>JKFFc</ogo:name>
+ <ogo:objects>
+ <ogo:line>(20 -10)(60 -10)(60 50)(20 50)(20 -10)</ogo:line>
+ <ogo:line>(0 0)(20 0)</ogo:line>
+ <ogo:line>(0 20)(14 20)</ogo:line>
+ <ogo:line>(0 40)(20 40)</ogo:line>
+ <ogo:line>(40 -30)(40 -16)</ogo:line>
+ <ogo:line>(40 50)(40 70)</ogo:line>
+ <ogo:line>(60 0)(80 0)</ogo:line>
+ <ogo:line>(66 40)(80 40)</ogo:line>
+ <ogo:arc>(14 17)(20 23)</ogo:arc>
+ <ogo:arc>(37 -16)(43 -10)</ogo:arc>
+ <ogo:arc>(60 37)(66 43)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0)</ogo:connection>
+ <ogo:connection>(0 20)</ogo:connection>
+ <ogo:connection>(0 40)</ogo:connection>
+ <ogo:connection>(40 -30)</ogo:connection>
+ <ogo:connection>(40 70)</ogo:connection>
+ <ogo:connection>(80 0)</ogo:connection>
+ <ogo:connection>(80 40)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>DFFcs</ogo:name>
+ <ogo:objects>
+ <ogo:line>(20 -10)(60 -10)(60 50)(20 50)(20 -10)</ogo:line>
+ <ogo:line>(0 0)(20 0)</ogo:line>
+ <ogo:line>(0 20)(20 20)</ogo:line>
+ <ogo:line>(0 40)(20 40)</ogo:line>
+ <ogo:line>(40 -30)(40 -16)</ogo:line>
+ <ogo:line>(40 56)(40 70)</ogo:line>
+ <ogo:line>(60 0)(80 0)</ogo:line>
+ <ogo:line>(66 40)(80 40)</ogo:line>
+ <ogo:arc>(37 50)(43 56)</ogo:arc>
+ <ogo:arc>(37 -16)(43 -10)</ogo:arc>
+ <ogo:arc>(60 37)(66 43)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0)</ogo:connection>
+ <ogo:connection>(0 20)</ogo:connection>
+ <ogo:connection>(0 40)</ogo:connection>
+ <ogo:connection>(40 -30)</ogo:connection>
+ <ogo:connection>(40 70)</ogo:connection>
+ <ogo:connection>(80 0)</ogo:connection>
+ <ogo:connection>(80 40)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4DL</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(46 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(46 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(46 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 37)(46 43)</ogo:arc>
+ <ogo:arc>(40 57)(46 63)</ogo:arc>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 110)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4DLs</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 110)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>JKFFcs</ogo:name>
+ <ogo:objects>
+ <ogo:line>(20 -10)(60 -10)(60 50)(20 50)(20 -10)</ogo:line>
+ <ogo:line>(0 0)(20 0)</ogo:line>
+ <ogo:line>(0 20)(14 20)</ogo:line>
+ <ogo:line>(0 40)(20 40)</ogo:line>
+ <ogo:line>(40 -30)(40 -16)</ogo:line>
+ <ogo:line>(40 56)(40 70)</ogo:line>
+ <ogo:line>(60 0)(80 0)</ogo:line>
+ <ogo:line>(66 20)(80 20)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ <ogo:arc>(14 17)(20 23)</ogo:arc>
+ <ogo:arc>(37 -16)(43 -10)</ogo:arc>
+ <ogo:arc>(37 50)(43 56)</ogo:arc>
+ <ogo:arc>(60 17)(66 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0)</ogo:connection>
+ <ogo:connection>(0 20)</ogo:connection>
+ <ogo:connection>(0 40)</ogo:connection>
+ <ogo:connection>(40 -30)</ogo:connection>
+ <ogo:connection>(40 70)</ogo:connection>
+ <ogo:connection>(80 0)</ogo:connection>
+ <ogo:connection>(80 20)</ogo:connection>
+ <ogo:connection>(80 40)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4ADD</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-10 20)(0 20)</ogo:line>
+ <ogo:line>(-10 30)(0 30)</ogo:line>
+ <ogo:line>(-10 40)(0 40)</ogo:line>
+ <ogo:line>(-10 50)(0 50)</ogo:line>
+ <ogo:line>(-10 70)(0 70)</ogo:line>
+ <ogo:line>(-10 80)(0 80)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(20 -10)(20 0)</ogo:line>
+ <ogo:line>(20 100)(20 90)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(-10 30)</ogo:connection>
+ <ogo:connection>(-10 40)</ogo:connection>
+ <ogo:connection>(-10 50)</ogo:connection>
+ <ogo:connection>(-10 70)</ogo:connection>
+ <ogo:connection>(-10 80)</ogo:connection>
+ <ogo:connection>(20 -10)</ogo:connection>
+ <ogo:connection>(20 100)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>XORp</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(-1 10)</ogo:line>
+ <ogo:line>(-20 30)(-1 30)</ogo:line>
+ <ogo:line>(10 -20)(10 0)</ogo:line>
+ <ogo:line>(10 60)(10 40)</ogo:line>
+ <ogo:line>(45 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(10 -20)</ogo:connection>
+ <ogo:connection>(10 60)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>XOR</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(-1 10)</ogo:line>
+ <ogo:line>(-20 30)(-1 30)</ogo:line>
+ <ogo:line>(45 20)(60 20)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>SFR8</ogo:name>
+ <ogo:objects>
+ <ogo:line>(20 -10)(60 -10)(60 50)(20 50)(20 -10)</ogo:line>
+ <ogo:line>(0 0)(20 0)</ogo:line>
+ <ogo:line>(0 20)(14 20)</ogo:line>
+ <ogo:line>(0 40)(20 40)</ogo:line>
+ <ogo:line>(40 -30)(40 -10)</ogo:line>
+ <ogo:line>(40 50)(40 70)</ogo:line>
+ <ogo:line>(60 0)(80 0)</ogo:line>
+ <ogo:line>(66 40)(80 40)</ogo:line>
+ <ogo:arc>(14 17)(20 23)</ogo:arc>
+ <ogo:arc>(60 37)(66 43)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0)</ogo:connection>
+ <ogo:connection>(0 20)</ogo:connection>
+ <ogo:connection>(0 40)</ogo:connection>
+ <ogo:connection>(40 -30)</ogo:connection>
+ <ogo:connection>(40 70)</ogo:connection>
+ <ogo:connection>(80 0)</ogo:connection>
+ <ogo:connection>(80 40)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>CTR4</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(80 0)(80 60)(0 60)(0 0)</ogo:line>
+ <ogo:line>(0 30)(-20 30)</ogo:line>
+ <ogo:line>(80 30)(100 30)</ogo:line>
+ <ogo:line>(10 0)(10 -20)</ogo:line>
+ <ogo:line>(30 0)(30 -20)</ogo:line>
+ <ogo:line>(50 0)(50 -20)</ogo:line>
+ <ogo:line>(70 0)(70 -20)</ogo:line>
+ <ogo:line>(10 60)(10 80)</ogo:line>
+ <ogo:line>(30 60)(30 80)</ogo:line>
+ <ogo:line>(50 66)(50 80)</ogo:line>
+ <ogo:line>(70 66)(70 80)</ogo:line>
+ <ogo:arc>(47 60)(53 66)</ogo:arc>
+ <ogo:arc>(67 60)(73 66)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(100 30)</ogo:connection>
+ <ogo:connection>(10 -20)</ogo:connection>
+ <ogo:connection>(30 -20)</ogo:connection>
+ <ogo:connection>(50 -20)</ogo:connection>
+ <ogo:connection>(70 -20)</ogo:connection>
+ <ogo:connection>(10 80)</ogo:connection>
+ <ogo:connection>(30 80)</ogo:connection>
+ <ogo:connection>(50 80)</ogo:connection>
+ <ogo:connection>(70 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>SFR4</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(100 0)(100 80)(0 80)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 40)(-6 40)</ogo:line>
+ <ogo:line>(-20 60)(-6 60)</ogo:line>
+ <ogo:line>(100 20)(120 20)</ogo:line>
+ <ogo:line>(100 40)(120 40)</ogo:line>
+ <ogo:line>(100 60)(120 60)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(40 -20)(40 0)</ogo:line>
+ <ogo:line>(60 -20)(60 0)</ogo:line>
+ <ogo:line>(80 -20)(80 0)</ogo:line>
+ <ogo:line>(20 80)(20 100)</ogo:line>
+ <ogo:line>(40 80)(40 100)</ogo:line>
+ <ogo:line>(60 80)(60 100)</ogo:line>
+ <ogo:line>(80 80)(80 100)</ogo:line>
+ <ogo:arc>(-6 37)(0 43)</ogo:arc>
+ <ogo:arc>(-6 57)(0 63)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(40 -20)</ogo:connection>
+ <ogo:connection>(60 -20)</ogo:connection>
+ <ogo:connection>(80 -20)</ogo:connection>
+ <ogo:connection>(120 20)</ogo:connection>
+ <ogo:connection>(120 40)</ogo:connection>
+ <ogo:connection>(120 60)</ogo:connection>
+ <ogo:connection>(20 100)</ogo:connection>
+ <ogo:connection>(40 100)</ogo:connection>
+ <ogo:connection>(60 100)</ogo:connection>
+ <ogo:connection>(80 100)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>MONO1</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 140)(0 140)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(-6 100)</ogo:line>
+ <ogo:line>(-20 120)(-6 120)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(46 50)(60 50)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 90)(60 90)</ogo:line>
+ <ogo:line>(40 110)(60 110)</ogo:line>
+ <ogo:line>(40 130)(60 130)</ogo:line>
+ <ogo:arc>(-6 97)(0 103)</ogo:arc>
+ <ogo:arc>(-6 117)(0 123)</ogo:arc>
+ <ogo:arc>(40 47)(46 53)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 100)</ogo:connection>
+ <ogo:connection>(-20 120)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 90)</ogo:connection>
+ <ogo:connection>(60 110)</ogo:connection>
+ <ogo:connection>(60 130)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>MONO2</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(60 0)(60 60)(0 60)(0 0)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(-6 30)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(60 10)(80 10)</ogo:line>
+ <ogo:line>(66 30)(80 30)</ogo:line>
+ <ogo:line>(60 50)(80 50)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(30 66)(30 80)</ogo:line>
+ <ogo:arc>(-6 27)(0 33)</ogo:arc>
+ <ogo:arc>(60 27)(66 33)</ogo:arc>
+ <ogo:arc>(27 60)(33 66)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(80 10)</ogo:connection>
+ <ogo:connection>(80 30)</ogo:connection>
+ <ogo:connection>(80 50)</ogo:connection>
+ <ogo:connection>(30 -20)</ogo:connection>
+ <ogo:connection>(30 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>3to8L</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(-6 70)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(46 10)(60 10)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:line>(46 30)(60 30)</ogo:line>
+ <ogo:line>(46 40)(60 40)</ogo:line>
+ <ogo:line>(46 50)(60 50)</ogo:line>
+ <ogo:line>(46 60)(60 60)</ogo:line>
+ <ogo:line>(46 70)(60 70)</ogo:line>
+ <ogo:line>(46 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(40 7)(46 13)</ogo:arc>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 27)(46 33)</ogo:arc>
+ <ogo:arc>(40 37)(46 43)</ogo:arc>
+ <ogo:arc>(40 47)(46 53)</ogo:arc>
+ <ogo:arc>(40 57)(46 63)</ogo:arc>
+ <ogo:arc>(40 67)(46 73)</ogo:arc>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ <ogo:arc>(-6 67)(0 73)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 110)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>3to4L</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 50)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 50)(40 50)</ogo:line>
+ <ogo:line>(40 0)(40 50)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(46 10)(60 10)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:line>(46 30)(60 30)</ogo:line>
+ <ogo:line>(46 40)(60 40)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 70)(20 56)</ogo:line>
+ <ogo:arc>(40 7)(46 13)</ogo:arc>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 27)(46 33)</ogo:arc>
+ <ogo:arc>(40 37)(46 43)</ogo:arc>
+ <ogo:arc>(17 50)(23 56)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 70)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>10to4E</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 100)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 100)(40 100)</ogo:line>
+ <ogo:line>(40 0)(40 100)</ogo:line>
+ <ogo:line>(60 20)(46 20)</ogo:line>
+ <ogo:line>(60 40)(46 40)</ogo:line>
+ <ogo:line>(60 60)(46 60)</ogo:line>
+ <ogo:line>(60 80)(46 80)</ogo:line>
+ <ogo:line>(-20 10)(-6 10)</ogo:line>
+ <ogo:line>(-20 20)(-6 20)</ogo:line>
+ <ogo:line>(-20 30)(-6 30)</ogo:line>
+ <ogo:line>(-20 40)(-6 40)</ogo:line>
+ <ogo:line>(-20 50)(-6 50)</ogo:line>
+ <ogo:line>(-20 60)(-6 60)</ogo:line>
+ <ogo:line>(-20 70)(-6 70)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(-20 90)(-6 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ <ogo:arc>(-6 7)(0 13)</ogo:arc>
+ <ogo:arc>(-6 17)(0 23)</ogo:arc>
+ <ogo:arc>(-6 27)(0 33)</ogo:arc>
+ <ogo:arc>(-6 37)(0 43)</ogo:arc>
+ <ogo:arc>(-6 47)(0 53)</ogo:arc>
+ <ogo:arc>(-6 57)(0 63)</ogo:arc>
+ <ogo:arc>(-6 67)(0 73)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ <ogo:arc>(-6 87)(0 93)</ogo:arc>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 37)(46 43)</ogo:arc>
+ <ogo:arc>(40 57)(46 63)</ogo:arc>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 90)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 120)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>8to3E</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(60 10)(46 10)</ogo:line>
+ <ogo:line>(60 20)(46 20)</ogo:line>
+ <ogo:line>(60 30)(46 30)</ogo:line>
+ <ogo:line>(60 60)(46 60)</ogo:line>
+ <ogo:line>(60 70)(46 70)</ogo:line>
+ <ogo:line>(60 80)(46 80)</ogo:line>
+ <ogo:line>(-20 10)(-6 10)</ogo:line>
+ <ogo:line>(-20 20)(-6 20)</ogo:line>
+ <ogo:line>(-20 30)(-6 30)</ogo:line>
+ <ogo:line>(-20 40)(-6 40)</ogo:line>
+ <ogo:line>(-20 50)(-6 50)</ogo:line>
+ <ogo:line>(-20 60)(-6 60)</ogo:line>
+ <ogo:line>(-20 70)(-6 70)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(-6 7)(0 13)</ogo:arc>
+ <ogo:arc>(-6 17)(0 23)</ogo:arc>
+ <ogo:arc>(-6 27)(0 33)</ogo:arc>
+ <ogo:arc>(-6 37)(0 43)</ogo:arc>
+ <ogo:arc>(-6 47)(0 53)</ogo:arc>
+ <ogo:arc>(-6 57)(0 63)</ogo:arc>
+ <ogo:arc>(-6 67)(0 73)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ <ogo:arc>(40 7)(46 13)</ogo:arc>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 27)(46 33)</ogo:arc>
+ <ogo:arc>(40 57)(46 63)</ogo:arc>
+ <ogo:arc>(40 67)(46 73)</ogo:arc>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 110)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>8to1M</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 70)(46 70)</ogo:line>
+ <ogo:line>(60 80)(46 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(40 67)(46 73)</ogo:arc>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 110)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>2x4M</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 100)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 100)(40 100)</ogo:line>
+ <ogo:line>(40 0)(40 100)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(46 20)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(60 90)(46 90)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 87)(46 93)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 90)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 120)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ <ogo:connection>(60 90)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4x2M</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 120)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 120)(40 120)</ogo:line>
+ <ogo:line>(40 0)(40 120)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 70)(40 70)</ogo:line>
+ <ogo:line>(60 90)(40 90)</ogo:line>
+ <ogo:line>(60 110)(46 110)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 140)</ogo:line>
+ <ogo:arc>(40 107)(46 113)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 100)</ogo:connection>
+ <ogo:connection>(-20 110)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 140)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 90)</ogo:connection>
+ <ogo:connection>(60 110)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ <ogo:symbol>
+ <ogo:name>4PIC</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(100 0)(100 80)(0 80)(0 0)</ogo:line>
+ <ogo:line>(100 20)(120 20)</ogo:line>
+ <ogo:line>(106 40)(120 40)</ogo:line>
+ <ogo:line>(100 60)(120 60)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(10 -20)(10 0)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(50 -20)(50 0)</ogo:line>
+ <ogo:line>(70 -20)(70 0)</ogo:line>
+ <ogo:line>(90 -20)(90 0)</ogo:line>
+ <ogo:line>(10 86)(10 100)</ogo:line>
+ <ogo:line>(30 80)(30 100)</ogo:line>
+ <ogo:line>(50 80)(50 100)</ogo:line>
+ <ogo:line>(70 80)(70 100)</ogo:line>
+ <ogo:line>(90 80)(90 100)</ogo:line>
+ <ogo:arc>(7 80)(13 86)</ogo:arc>
+ <ogo:arc>(100 37)(106 43)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(10 -20)</ogo:connection>
+ <ogo:connection>(30 -20)</ogo:connection>
+ <ogo:connection>(50 -20)</ogo:connection>
+ <ogo:connection>(70 -20)</ogo:connection>
+ <ogo:connection>(90 -20)</ogo:connection>
+ <ogo:connection>(10 100)</ogo:connection>
+ <ogo:connection>(30 100)</ogo:connection>
+ <ogo:connection>(50 100)</ogo:connection>
+ <ogo:connection>(70 100)</ogo:connection>
+ <ogo:connection>(90 100)</ogo:connection>
+ <ogo:connection>(120 20)</ogo:connection>
+ <ogo:connection>(120 40)</ogo:connection>
+ <ogo:connection>(120 60)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4PICu</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(100 0)(100 80)(0 80)(0 0)</ogo:line>
+ <ogo:line>(106 20)(120 20)</ogo:line>
+ <ogo:line>(106 40)(120 40)</ogo:line>
+ <ogo:line>(100 60)(120 60)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(10 -20)(10 0)</ogo:line>
+ <ogo:line>(30 -20)(30 0)</ogo:line>
+ <ogo:line>(50 -20)(50 0)</ogo:line>
+ <ogo:line>(70 -20)(70 0)</ogo:line>
+ <ogo:line>(90 -20)(90 0)</ogo:line>
+ <ogo:line>(10 86)(10 100)</ogo:line>
+ <ogo:line>(30 80)(30 100)</ogo:line>
+ <ogo:line>(50 80)(50 100)</ogo:line>
+ <ogo:line>(70 80)(70 100)</ogo:line>
+ <ogo:line>(90 80)(90 100)</ogo:line>
+ <ogo:arc>(7 80)(13 86)</ogo:arc>
+ <ogo:arc>(100 17)(106 23)</ogo:arc>
+ <ogo:arc>(100 37)(106 43)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(10 -20)</ogo:connection>
+ <ogo:connection>(30 -20)</ogo:connection>
+ <ogo:connection>(50 -20)</ogo:connection>
+ <ogo:connection>(70 -20)</ogo:connection>
+ <ogo:connection>(90 -20)</ogo:connection>
+ <ogo:connection>(10 100)</ogo:connection>
+ <ogo:connection>(30 100)</ogo:connection>
+ <ogo:connection>(50 100)</ogo:connection>
+ <ogo:connection>(70 100)</ogo:connection>
+ <ogo:connection>(90 100)</ogo:connection>
+ <ogo:connection>(120 20)</ogo:connection>
+ <ogo:connection>(120 40)</ogo:connection>
+ <ogo:connection>(120 60)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>SIPO8</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-10 20)(0 20)</ogo:line>
+ <ogo:line>(-10 40)(0 40)</ogo:line>
+ <ogo:line>(-10 60)(0 60)</ogo:line>
+ <ogo:line>(-10 80)(-6 80)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(20 -10)(20 0)</ogo:line>
+ <ogo:line>(20 100)(20 90)</ogo:line>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-10 20)</ogo:connection>
+ <ogo:connection>(-10 40)</ogo:connection>
+ <ogo:connection>(-10 60)</ogo:connection>
+ <ogo:connection>(-10 80)</ogo:connection>
+ <ogo:connection>(20 -10)</ogo:connection>
+ <ogo:connection>(20 100)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>LD4</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 100)(40 100)(40 0)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(46 80)</ogo:line>
+ <ogo:line>(60 90)(46 90)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(-20 90)(-6 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ <ogo:arc>(40 87)(46 93)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ <ogo:arc>(-6 87)(0 93)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 90)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 120)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ <ogo:connection>(60 90)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>LD6</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(46 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 110)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>ALU4</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 150)(0 150)(0 0)</ogo:line>
+ <ogo:line>(60 10)(46 10)</ogo:line>
+ <ogo:line>(60 20)(46 20)</ogo:line>
+ <ogo:line>(60 30)(46 30)</ogo:line>
+ <ogo:line>(60 40)(46 40)</ogo:line>
+ <ogo:line>(60 60)(46 60)</ogo:line>
+ <ogo:line>(60 70)(46 70)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(60 90)(40 90)</ogo:line>
+ <ogo:line>(60 130)(40 130)</ogo:line>
+ <ogo:line>(60 140)(40 140)</ogo:line>
+ <ogo:line>(-20 10)(-6 10)</ogo:line>
+ <ogo:line>(-20 20)(-6 20)</ogo:line>
+ <ogo:line>(-20 30)(-6 30)</ogo:line>
+ <ogo:line>(-20 40)(-6 40)</ogo:line>
+ <ogo:line>(-20 60)(-6 60)</ogo:line>
+ <ogo:line>(-20 70)(-6 70)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(-20 90)(-6 90)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 170)(20 150)</ogo:line>
+ <ogo:arc>(40 7)(46 13)</ogo:arc>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 27)(46 33)</ogo:arc>
+ <ogo:arc>(40 37)(46 43)</ogo:arc>
+ <ogo:arc>(40 57)(46 63)</ogo:arc>
+ <ogo:arc>(40 67)(46 73)</ogo:arc>
+ <ogo:arc>(-6 7)(0 13)</ogo:arc>
+ <ogo:arc>(-6 17)(0 23)</ogo:arc>
+ <ogo:arc>(-6 27)(0 33)</ogo:arc>
+ <ogo:arc>(-6 37)(0 43)</ogo:arc>
+ <ogo:arc>(-6 57)(0 63)</ogo:arc>
+ <ogo:arc>(-6 67)(0 73)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ <ogo:arc>(-6 87)(0 93)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 90)</ogo:connection>
+ <ogo:connection>(-20 110)</ogo:connection>
+ <ogo:connection>(-20 120)</ogo:connection>
+ <ogo:connection>(-20 130)</ogo:connection>
+ <ogo:connection>(-20 140)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 170)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ <ogo:connection>(60 90)</ogo:connection>
+ <ogo:connection>(60 130)</ogo:connection>
+ <ogo:connection>(60 140)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>CYG</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 100)(0 100)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 50)(46 50)</ogo:line>
+ <ogo:line>(60 60)(46 60)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(-20 10)(-6 10)</ogo:line>
+ <ogo:line>(-20 20)(-6 20)</ogo:line>
+ <ogo:line>(-20 30)(-6 30)</ogo:line>
+ <ogo:line>(-20 40)(-6 40)</ogo:line>
+ <ogo:line>(-20 60)(-6 60)</ogo:line>
+ <ogo:line>(-20 70)(-6 70)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(-20 90)(-6 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ <ogo:arc>(40 47)(46 53)</ogo:arc>
+ <ogo:arc>(40 57)(46 63)</ogo:arc>
+ <ogo:arc>(-6 7)(0 13)</ogo:arc>
+ <ogo:arc>(-6 17)(0 23)</ogo:arc>
+ <ogo:arc>(-6 27)(0 33)</ogo:arc>
+ <ogo:arc>(-6 37)(0 43)</ogo:arc>
+ <ogo:arc>(-6 57)(0 63)</ogo:arc>
+ <ogo:arc>(-6 67)(0 73)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ <ogo:arc>(-6 87)(0 93)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 90)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 120)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>ADDx2</ogo:name>
+ <ogo:objects>
+ <ogo:line>(20 -10)(60 -10)(60 50)(20 50)(20 -10)</ogo:line>
+ <ogo:line>(0 0)(20 0)</ogo:line>
+ <ogo:line>(0 20)(20 20)</ogo:line>
+ <ogo:line>(0 40)(20 40)</ogo:line>
+ <ogo:line>(40 50)(40 70)</ogo:line>
+ <ogo:line>(60 0)(80 0)</ogo:line>
+ <ogo:line>(60 40)(80 40)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0)</ogo:connection>
+ <ogo:connection>(0 20)</ogo:connection>
+ <ogo:connection>(0 40)</ogo:connection>
+ <ogo:connection>(40 70)</ogo:connection>
+ <ogo:connection>(80 0)</ogo:connection>
+ <ogo:connection>(80 40)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>SR4b</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 100)(40 100)(40 0)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(60 90)(46 90)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ <ogo:arc>(40 87)(46 93)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 90)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 120)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ <ogo:connection>(60 90)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ <ogo:symbol>
+ <ogo:name>4RCOUNT</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(100 0)(100 80)(0 80)(0 0)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 40)(-6 40)</ogo:line>
+ <ogo:line>(-20 60)(-6 60)</ogo:line>
+ <ogo:line>(100 20)(120 20)</ogo:line>
+ <ogo:line>(106 40)(120 40)</ogo:line>
+ <ogo:line>(106 60)(120 60)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(40 -20)(40 0)</ogo:line>
+ <ogo:line>(60 -20)(60 0)</ogo:line>
+ <ogo:line>(80 -20)(80 0)</ogo:line>
+ <ogo:line>(20 80)(20 100)</ogo:line>
+ <ogo:line>(40 80)(40 100)</ogo:line>
+ <ogo:line>(60 80)(60 100)</ogo:line>
+ <ogo:line>(80 80)(80 100)</ogo:line>
+ <ogo:arc>(-6 37)(0 43)</ogo:arc>
+ <ogo:arc>(-6 57)(0 63)</ogo:arc>
+ <ogo:arc>(100 37)(106 43)</ogo:arc>
+ <ogo:arc>(100 57)(106 63)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(40 -20)</ogo:connection>
+ <ogo:connection>(60 -20)</ogo:connection>
+ <ogo:connection>(80 -20)</ogo:connection>
+ <ogo:connection>(120 20)</ogo:connection>
+ <ogo:connection>(120 40)</ogo:connection>
+ <ogo:connection>(120 60)</ogo:connection>
+ <ogo:connection>(20 100)</ogo:connection>
+ <ogo:connection>(40 100)</ogo:connection>
+ <ogo:connection>(60 100)</ogo:connection>
+ <ogo:connection>(80 100)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>BUF8i</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 120)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 120)(40 120)</ogo:line>
+ <ogo:line>(40 0)(40 120)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(-6 100)</ogo:line>
+ <ogo:line>(-20 110)(-6 110)</ogo:line>
+ <ogo:line>(46 10)(60 10)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:line>(46 30)(60 30)</ogo:line>
+ <ogo:line>(46 40)(60 40)</ogo:line>
+ <ogo:line>(46 50)(60 50)</ogo:line>
+ <ogo:line>(46 60)(60 60)</ogo:line>
+ <ogo:line>(46 70)(60 70)</ogo:line>
+ <ogo:line>(46 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 140)(20 120)</ogo:line>
+ <ogo:arc>(40 7)(46 13)</ogo:arc>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 27)(46 33)</ogo:arc>
+ <ogo:arc>(40 37)(46 43)</ogo:arc>
+ <ogo:arc>(40 47)(46 53)</ogo:arc>
+ <ogo:arc>(40 57)(46 63)</ogo:arc>
+ <ogo:arc>(40 67)(46 73)</ogo:arc>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ <ogo:arc>(-6 97)(0 103)</ogo:arc>
+ <ogo:arc>(-6 107)(0 113)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 100)</ogo:connection>
+ <ogo:connection>(-20 110)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 140)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>BUF8ni</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 120)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 120)(40 120)</ogo:line>
+ <ogo:line>(40 0)(40 120)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(-6 100)</ogo:line>
+ <ogo:line>(-20 110)(-6 110)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 140)(20 120)</ogo:line>
+ <ogo:arc>(-6 97)(0 103)</ogo:arc>
+ <ogo:arc>(-6 107)(0 113)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 100)</ogo:connection>
+ <ogo:connection>(-20 110)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 140)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ <ogo:symbol>
+ <ogo:name>BUF8nis</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 120)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 120)(40 120)</ogo:line>
+ <ogo:line>(40 0)(40 120)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(-6 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 140)(20 120)</ogo:line>
+ <ogo:arc>(-6 97)(0 103)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 100)</ogo:connection>
+ <ogo:connection>(-20 110)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 140)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>BUF4ni</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 80)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 80)(40 80)</ogo:line>
+ <ogo:line>(40 0)(40 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(-6 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 100)(20 80)</ogo:line>
+ <ogo:arc>(-6 57)(0 63)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 100)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>BUF4i</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 80)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 80)(40 80)</ogo:line>
+ <ogo:line>(40 0)(40 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(-6 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(46 10)(60 10)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:line>(46 30)(60 30)</ogo:line>
+ <ogo:line>(46 40)(60 40)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 100)(20 80)</ogo:line>
+ <ogo:arc>(40 7)(46 13)</ogo:arc>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 27)(46 33)</ogo:arc>
+ <ogo:arc>(40 37)(46 43)</ogo:arc>
+ <ogo:arc>(-6 57)(0 63)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 140)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>1to8AL</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(-6 70)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(-6 67)(0 73)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 110)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>XNORp</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(-1 10)</ogo:line>
+ <ogo:line>(-20 30)(-1 30)</ogo:line>
+ <ogo:line>(10 -20)(10 0)</ogo:line>
+ <ogo:line>(10 60)(10 40)</ogo:line>
+ <ogo:line>(51 20)(70 20)</ogo:line>
+ <ogo:arc>(45 17)(51 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(10 -20)</ogo:connection>
+ <ogo:connection>(10 60)</ogo:connection>
+ <ogo:connection>(70 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>XNOR</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(3 5)(4 10)(5 15)(6 20)(5 25)(4 30)(3 35)(0 40)</ogo:line>
+ <ogo:line>(-5 0)(-2 5)(-1 10)(0 15)(1 20)(0 25)(-1 30)(-2 35)(-5 40)</ogo:line>
+ <ogo:line>(0 0)(10 0)</ogo:line>
+ <ogo:line>(0 40)(10 40)</ogo:line>
+ <ogo:line>(10 0)(15 1)(20 2)(25 3)(30 5)(35 8)(40 13)(45 20)</ogo:line>
+ <ogo:line>(10 40)(15 39)(20 38)(25 37)(30 35)(35 32)(40 27)(45 20)</ogo:line>
+ <ogo:line>(-20 10)(-1 10)</ogo:line>
+ <ogo:line>(-20 30)(-1 30)</ogo:line>
+ <ogo:line>(51 20)(70 20)</ogo:line>
+ <ogo:arc>(45 17)(51 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(70 20)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>NOR5</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(20 0)(30 1)(40 3)(50 7)(60 13)(70 21)(77 30)</ogo:line>
+ <ogo:line>(0 60)(20 60)(30 59)(40 57)(50 53)(60 47)(70 39)(77 30)</ogo:line>
+ <ogo:line>(0 0)(7 10)(9 20)(10 30)(9 40)(7 50)(0 60)</ogo:line>
+ <ogo:line>(-20 10)(7 10)</ogo:line>
+ <ogo:line>(-20 20)(9 20)</ogo:line>
+ <ogo:line>(-20 30)(10 30)</ogo:line>
+ <ogo:line>(-20 40)(9 40)</ogo:line>
+ <ogo:line>(-20 50)(7 50)</ogo:line>
+ <ogo:line>(20 60)(20 80)</ogo:line>
+ <ogo:line>(83 30)(100 30)</ogo:line>
+ <ogo:arc>(77 27)(83 33)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(100 30)</ogo:connection>
+ <ogo:connection>(20 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4RSLp</ogo:name>
+ <ogo:objects>
+ <ogo:line>(20 -10)(60 -10)(60 50)(20 50)(20 -10)</ogo:line>
+ <ogo:line>(0 0)(14 0)</ogo:line>
+ <ogo:line>(0 20)(14 20)</ogo:line>
+ <ogo:line>(0 40)(20 40)</ogo:line>
+ <ogo:line>(60 0)(80 0)</ogo:line>
+ <ogo:arc>(14 -3)(20 3)</ogo:arc>
+ <ogo:arc>(14 17)(20 23)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0)</ogo:connection>
+ <ogo:connection>(0 20)</ogo:connection>
+ <ogo:connection>(0 40)</ogo:connection>
+ <ogo:connection>(80 0)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4RSL</ogo:name>
+ <ogo:objects>
+ <ogo:line>(20 -10)(60 -10)(60 50)(20 50)(20 -10)</ogo:line>
+ <ogo:line>(0 0)(14 0)</ogo:line>
+ <ogo:line>(0 20)(14 20)</ogo:line>
+ <ogo:line>(0 40)(14 40)</ogo:line>
+ <ogo:line>(60 0)(80 0)</ogo:line>
+ <ogo:arc>(14 -3)(20 3)</ogo:arc>
+ <ogo:arc>(14 17)(20 23)</ogo:arc>
+ <ogo:arc>(14 37)(20 43)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(0 0)</ogo:connection>
+ <ogo:connection>(0 20)</ogo:connection>
+ <ogo:connection>(0 40)</ogo:connection>
+ <ogo:connection>(80 0)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>9to2</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 100)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 100)(40 100)</ogo:line>
+ <ogo:line>(40 0)(40 100)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 90)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 120)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4BFA</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(40 0)(40 100)(0 100)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 90)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 120)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>SRTS4</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)(40 90)(40 0)(0 0)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(40 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 110)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>8SRSE</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 100)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 100)(40 100)</ogo:line>
+ <ogo:line>(40 0)(40 100)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(-6 70)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(-20 90)(-6 90)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(46 90)(60 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ <ogo:arc>(-6 67)(0 73)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ <ogo:arc>(-6 87)(0 93)</ogo:arc>
+ <ogo:arc>(40 87)(46 93)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 90)</ogo:connection>
+ <ogo:connection>(-20 110)</ogo:connection>
+ <ogo:connection>(20 120)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ <ogo:connection>(60 90)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>BF6ni</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(60 10)(40 10)</ogo:line>
+ <ogo:line>(60 20)(40 20)</ogo:line>
+ <ogo:line>(60 30)(40 30)</ogo:line>
+ <ogo:line>(60 40)(40 40)</ogo:line>
+ <ogo:line>(60 50)(40 50)</ogo:line>
+ <ogo:line>(60 60)(40 60)</ogo:line>
+ <ogo:line>(60 80)(46 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 110)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>BF6i</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 90)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 90)(40 90)</ogo:line>
+ <ogo:line>(40 0)(40 90)</ogo:line>
+ <ogo:line>(60 10)(46 10)</ogo:line>
+ <ogo:line>(60 20)(46 20)</ogo:line>
+ <ogo:line>(60 30)(46 30)</ogo:line>
+ <ogo:line>(60 40)(46 40)</ogo:line>
+ <ogo:line>(60 50)(46 50)</ogo:line>
+ <ogo:line>(60 60)(46 60)</ogo:line>
+ <ogo:line>(60 80)(46 80)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 90)</ogo:line>
+ <ogo:arc>(40 7)(46 13)</ogo:arc>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 27)(46 33)</ogo:arc>
+ <ogo:arc>(40 37)(46 43)</ogo:arc>
+ <ogo:arc>(40 47)(46 53)</ogo:arc>
+ <ogo:arc>(40 57)(46 63)</ogo:arc>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 110)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>2x4bc</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 100)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 100)(40 100)</ogo:line>
+ <ogo:line>(40 0)(40 100)</ogo:line>
+ <ogo:line>(-20 10)(-6 10)</ogo:line>
+ <ogo:line>(-20 20)(-6 20)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(-20 90)(-6 90)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(40 90)(60 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ <ogo:arc>(-6 7)(0 13)</ogo:arc>
+ <ogo:arc>(-6 17)(0 23)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ <ogo:arc>(-6 87)(0 93)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ <ogo:connection>(60 90)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 120)</ogo:connection>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 90)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>2x4bi</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 100)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 100)(40 100)</ogo:line>
+ <ogo:line>(40 0)(40 100)</ogo:line>
+ <ogo:line>(-20 10)(-6 10)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 90)(-6 90)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(40 90)(60 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ <ogo:arc>(-6 7)(0 13)</ogo:arc>
+ <ogo:arc>(-6 87)(0 93)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ <ogo:connection>(60 90)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 120)</ogo:connection>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 90)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>2x4bci</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 100)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 100)(40 100)</ogo:line>
+ <ogo:line>(40 0)(40 100)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 40)(-6 40)</ogo:line>
+ <ogo:line>(-20 60)(-6 60)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(40 90)(60 90)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 120)(20 100)</ogo:line>
+ <ogo:arc>(-6 37)(0 43)</ogo:arc>
+ <ogo:arc>(-6 57)(0 63)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ <ogo:connection>(60 90)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 120)</ogo:connection>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 90)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4DLx2i</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 110)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 110)(40 110)</ogo:line>
+ <ogo:line>(40 0)(40 110)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(46 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(46 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(46 80)(60 80)</ogo:line>
+ <ogo:line>(40 100)(60 100)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 130)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 37)(46 43)</ogo:arc>
+ <ogo:arc>(40 57)(46 63)</ogo:arc>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 100)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 130)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ <ogo:connection>(60 100)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>4DLx2</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 110)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 110)(40 110)</ogo:line>
+ <ogo:line>(40 0)(40 110)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 100)(60 100)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 110)(20 130)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 100)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 130)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 100)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>COUNT8tri</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 130)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 130)(40 130)</ogo:line>
+ <ogo:line>(40 0)(40 130)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(-20 90)(-6 90)</ogo:line>
+ <ogo:line>(-20 100)(-6 100)</ogo:line>
+ <ogo:line>(-20 110)(-6 110)</ogo:line>
+ <ogo:line>(-20 120)(-6 120)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(46 60)(60 60)</ogo:line>
+ <ogo:line>(46 80)(60 80)</ogo:line>
+ <ogo:line>(40 100)(60 100)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 150)(20 130)</ogo:line>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ <ogo:arc>(-6 87)(0 93)</ogo:arc>
+ <ogo:arc>(-6 97)(0 103)</ogo:arc>
+ <ogo:arc>(-6 107)(0 113)</ogo:arc>
+ <ogo:arc>(-6 117)(0 123)</ogo:arc>
+ <ogo:arc>(40 57)(46 63)</ogo:arc>
+ <ogo:arc>(40 77)(46 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 90)</ogo:connection>
+ <ogo:connection>(-20 100)</ogo:connection>
+ <ogo:connection>(-20 110)</ogo:connection>
+ <ogo:connection>(-20 120)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 150)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ <ogo:connection>(60 100)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>8x2IML</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 180)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 180)(40 180)</ogo:line>
+ <ogo:line>(40 0)(40 180)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(-20 170)(0 170)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(40 100)(60 100)</ogo:line>
+ <ogo:line>(40 120)(60 120)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 180)(20 200)</ogo:line>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 100)</ogo:connection>
+ <ogo:connection>(-20 110)</ogo:connection>
+ <ogo:connection>(-20 120)</ogo:connection>
+ <ogo:connection>(-20 130)</ogo:connection>
+ <ogo:connection>(-20 140)</ogo:connection>
+ <ogo:connection>(-20 150)</ogo:connection>
+ <ogo:connection>(-20 160)</ogo:connection>
+ <ogo:connection>(-20 170)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 200)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ <ogo:connection>(60 100)</ogo:connection>
+ <ogo:connection>(60 120)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>REG16P</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 170)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 170)(40 170)</ogo:line>
+ <ogo:line>(40 0)(40 170)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 90)(0 90)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 100)(60 100)</ogo:line>
+ <ogo:line>(40 120)(60 120)</ogo:line>
+ <ogo:line>(46 140)(60 140)</ogo:line>
+ <ogo:line>(40 160)(60 160)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 170)(20 190)</ogo:line>
+ <ogo:arc>(40 137)(46 143)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 90)</ogo:connection>
+ <ogo:connection>(-20 100)</ogo:connection>
+ <ogo:connection>(-20 110)</ogo:connection>
+ <ogo:connection>(-20 120)</ogo:connection>
+ <ogo:connection>(-20 130)</ogo:connection>
+ <ogo:connection>(-20 140)</ogo:connection>
+ <ogo:connection>(-20 150)</ogo:connection>
+ <ogo:connection>(-20 160)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 190)</ogo:connection>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 100)</ogo:connection>
+ <ogo:connection>(60 120)</ogo:connection>
+ <ogo:connection>(60 140)</ogo:connection>
+ <ogo:connection>(60 160)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+ <ogo:symbol>
+ <ogo:name>REG16S</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 170)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 170)(40 170)</ogo:line>
+ <ogo:line>(40 0)(40 170)</ogo:line>
+ <ogo:line>(40 10)(60 10)</ogo:line>
+ <ogo:line>(40 20)(60 20)</ogo:line>
+ <ogo:line>(40 30)(60 30)</ogo:line>
+ <ogo:line>(40 40)(60 40)</ogo:line>
+ <ogo:line>(40 50)(60 50)</ogo:line>
+ <ogo:line>(40 60)(60 60)</ogo:line>
+ <ogo:line>(40 70)(60 70)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(40 90)(60 90)</ogo:line>
+ <ogo:line>(40 100)(60 100)</ogo:line>
+ <ogo:line>(40 110)(60 110)</ogo:line>
+ <ogo:line>(40 120)(60 120)</ogo:line>
+ <ogo:line>(40 130)(60 130)</ogo:line>
+ <ogo:line>(40 140)(60 140)</ogo:line>
+ <ogo:line>(40 150)(60 150)</ogo:line>
+ <ogo:line>(40 160)(60 160)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 80)(-6 80)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 140)(-6 140)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 170)(20 190)</ogo:line>
+ <ogo:arc>(-6 137)(0 143)</ogo:arc>
+ <ogo:arc>(-6 77)(0 83)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(60 10)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 30)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 50)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 70)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ <ogo:connection>(60 90)</ogo:connection>
+ <ogo:connection>(60 100)</ogo:connection>
+ <ogo:connection>(60 110)</ogo:connection>
+ <ogo:connection>(60 120)</ogo:connection>
+ <ogo:connection>(60 130)</ogo:connection>
+ <ogo:connection>(60 140)</ogo:connection>
+ <ogo:connection>(60 150)</ogo:connection>
+ <ogo:connection>(60 160)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 190)</ogo:connection>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 100)</ogo:connection>
+ <ogo:connection>(-20 120)</ogo:connection>
+ <ogo:connection>(-20 140)</ogo:connection>
+ <ogo:connection>(-20 160)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>8x2CMPS</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 180)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 180)(40 180)</ogo:line>
+ <ogo:line>(40 0)(40 180)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(-20 170)(0 170)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:line>(46 40)(60 40)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 180)(20 200)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 37)(46 43)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 100)</ogo:connection>
+ <ogo:connection>(-20 110)</ogo:connection>
+ <ogo:connection>(-20 120)</ogo:connection>
+ <ogo:connection>(-20 130)</ogo:connection>
+ <ogo:connection>(-20 140)</ogo:connection>
+ <ogo:connection>(-20 150)</ogo:connection>
+ <ogo:connection>(-20 160)</ogo:connection>
+ <ogo:connection>(-20 170)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 200)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+ <ogo:symbol>
+ <ogo:name>8x2CMPC</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 0)(0 180)</ogo:line>
+ <ogo:line>(0 0)(40 0)</ogo:line>
+ <ogo:line>(0 180)(40 180)</ogo:line>
+ <ogo:line>(40 0)(40 180)</ogo:line>
+ <ogo:line>(-20 10)(0 10)</ogo:line>
+ <ogo:line>(-20 20)(0 20)</ogo:line>
+ <ogo:line>(-20 30)(0 30)</ogo:line>
+ <ogo:line>(-20 40)(0 40)</ogo:line>
+ <ogo:line>(-20 50)(0 50)</ogo:line>
+ <ogo:line>(-20 60)(0 60)</ogo:line>
+ <ogo:line>(-20 70)(0 70)</ogo:line>
+ <ogo:line>(-20 80)(0 80)</ogo:line>
+ <ogo:line>(-20 100)(0 100)</ogo:line>
+ <ogo:line>(-20 110)(0 110)</ogo:line>
+ <ogo:line>(-20 120)(0 120)</ogo:line>
+ <ogo:line>(-20 130)(0 130)</ogo:line>
+ <ogo:line>(-20 140)(0 140)</ogo:line>
+ <ogo:line>(-20 150)(0 150)</ogo:line>
+ <ogo:line>(-20 160)(0 160)</ogo:line>
+ <ogo:line>(-20 170)(0 170)</ogo:line>
+ <ogo:line>(46 20)(60 20)</ogo:line>
+ <ogo:line>(46 40)(60 40)</ogo:line>
+ <ogo:line>(46 60)(60 60)</ogo:line>
+ <ogo:line>(40 80)(60 80)</ogo:line>
+ <ogo:line>(20 -20)(20 0)</ogo:line>
+ <ogo:line>(20 180)(20 200)</ogo:line>
+ <ogo:arc>(40 17)(46 23)</ogo:arc>
+ <ogo:arc>(40 37)(46 43)</ogo:arc>
+ <ogo:arc>(40 57)(46 63)</ogo:arc>
+ </ogo:objects>
+ <ogo:connections>
+ <ogo:connection>(-20 10)</ogo:connection>
+ <ogo:connection>(-20 20)</ogo:connection>
+ <ogo:connection>(-20 30)</ogo:connection>
+ <ogo:connection>(-20 40)</ogo:connection>
+ <ogo:connection>(-20 50)</ogo:connection>
+ <ogo:connection>(-20 60)</ogo:connection>
+ <ogo:connection>(-20 70)</ogo:connection>
+ <ogo:connection>(-20 80)</ogo:connection>
+ <ogo:connection>(-20 100)</ogo:connection>
+ <ogo:connection>(-20 110)</ogo:connection>
+ <ogo:connection>(-20 120)</ogo:connection>
+ <ogo:connection>(-20 130)</ogo:connection>
+ <ogo:connection>(-20 140)</ogo:connection>
+ <ogo:connection>(-20 150)</ogo:connection>
+ <ogo:connection>(-20 160)</ogo:connection>
+ <ogo:connection>(-20 170)</ogo:connection>
+ <ogo:connection>(20 -20)</ogo:connection>
+ <ogo:connection>(20 200)</ogo:connection>
+ <ogo:connection>(60 20)</ogo:connection>
+ <ogo:connection>(60 40)</ogo:connection>
+ <ogo:connection>(60 60)</ogo:connection>
+ <ogo:connection>(60 80)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+
+
+
+
+
+ </ogo:symbols>
+
+
+ <ogo:parts>
+
+ <ogo:part>
+ <ogo:name>7400a</ogo:name>
+ <ogo:symbol>NANDp</ogo:symbol>
+ <ogo:description>NAND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(12 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-20 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7400a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7400b</ogo:name>
+ <ogo:symbol>NAND</ogo:symbol>
+ <ogo:description>NAND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7400b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7400c</ogo:name>
+ <ogo:symbol>NAND</ogo:symbol>
+ <ogo:description>NAND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-10 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7400c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7400d</ogo:name>
+ <ogo:symbol>NAND</ogo:symbol>
+ <ogo:description>NAND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7400d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7401a</ogo:name>
+ <ogo:symbol>NANDp</ogo:symbol>
+ <ogo:description>NAND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(7 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(12 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-20 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7401a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %14 %7 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7401b</ogo:name>
+ <ogo:symbol>NAND</ogo:symbol>
+ <ogo:description>NAND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7401b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>7401c</ogo:name>
+ <ogo:symbol>NAND</ogo:symbol>
+ <ogo:description>NAND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7401c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7401d</ogo:name>
+ <ogo:symbol>NAND</ogo:symbol>
+ <ogo:description>NAND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(57 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(0 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7401d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>7402a</ogo:name>
+ <ogo:symbol>NORp</ogo:symbol>
+ <ogo:description>NOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1A</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-7 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1B</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-7 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Y</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(0 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(7 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7402a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1A %1B %VCC %VSS %1Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7402b</ogo:name>
+ <ogo:symbol>NOR</ogo:symbol>
+ <ogo:description>NOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2A</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-8 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2B</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-8 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Y</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7402b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2A %2B %2Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7402c</ogo:name>
+ <ogo:symbol>NOR</ogo:symbol>
+ <ogo:description>NOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3A</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-8 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3B</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-8 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3Y</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7402c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %3A %3B %3Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7402d</ogo:name>
+ <ogo:symbol>NOR</ogo:symbol>
+ <ogo:description>NOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4A</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-8 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4B</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-8 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4Y</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7402d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4A %4B %4Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7403</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7400</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7404a</ogo:name>
+ <ogo:symbol>INVERp</ogo:symbol>
+ <ogo:description>INVERTER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1A</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Y</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(2 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7404a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1A %VCC %VSS %1Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7404b</ogo:name>
+ <ogo:symbol>INVER</ogo:symbol>
+ <ogo:description>INVERTER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2A</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Y</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7404b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2A %2Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7404c</ogo:name>
+ <ogo:symbol>INVER</ogo:symbol>
+ <ogo:description>INVERTER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3A</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3Y</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7404c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %3A %3Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7404d</ogo:name>
+ <ogo:symbol>INVER</ogo:symbol>
+ <ogo:description>INVERTER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4A</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4Y</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7404d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4A %4Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7404e</ogo:name>
+ <ogo:symbol>INVER</ogo:symbol>
+ <ogo:description>INVERTER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5A</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-12 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5Y</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7404e</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %5A %5Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7404f</ogo:name>
+ <ogo:symbol>INVER</ogo:symbol>
+ <ogo:description>INVERTER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6A</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-12 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6Y</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7404f</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %6A %6Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7405</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7404</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7406</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7404</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7407a</ogo:name>
+ <ogo:symbol>BUFFERp</ogo:symbol>
+ <ogo:description>BUFFER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(35 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(4 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(10 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7407a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7407b</ogo:name>
+ <ogo:symbol>BUFFER</ogo:symbol>
+ <ogo:description>BUFFER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7407b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %3 %4 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7407c</ogo:name>
+ <ogo:symbol>BUFFER</ogo:symbol>
+ <ogo:description>BUFFER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7407c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7407d</ogo:name>
+ <ogo:symbol>BUFFER</ogo:symbol>
+ <ogo:description>BUFFER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7407d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %9 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7407e</ogo:name>
+ <ogo:symbol>BUFFER</ogo:symbol>
+ <ogo:description>BUFFER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-12 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7407e</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7407f</ogo:name>
+ <ogo:symbol>BUFFER</ogo:symbol>
+ <ogo:description>BUFFER</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(2 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-12 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7407f</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7408a</ogo:name>
+ <ogo:symbol>ANDp</ogo:symbol>
+ <ogo:description>AND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(56 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(12 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7408a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7408b</ogo:name>
+ <ogo:symbol>AND</ogo:symbol>
+ <ogo:description>AND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(56 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7408b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7408c</ogo:name>
+ <ogo:symbol>AND</ogo:symbol>
+ <ogo:description>AND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(56 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7408c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7408d</ogo:name>
+ <ogo:symbol>AND</ogo:symbol>
+ <ogo:description>AND</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(56 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7408d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7409</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7408</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7410a</ogo:name>
+ <ogo:symbol>NAND3p</ogo:symbol>
+ <ogo:description>NAND 3 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1A</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-10 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1B</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-8 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1C</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-8 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Y</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(56 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(12 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7410a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1A %1B %1C %VCC %VSS %1Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7410b</ogo:name>
+ <ogo:symbol>NAND3</ogo:symbol>
+ <ogo:description>NAND 3 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2A</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-8 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2B</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-8 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2C</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-8 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Y</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(56 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7410b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2A %2B %2C %2Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7410c</ogo:name>
+ <ogo:symbol>NAND3</ogo:symbol>
+ <ogo:description>NAND 3 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3A</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-8 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3B</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-10 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3C</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-10 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3Y</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(56 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7410c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %3A %3B %3Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>7411a</ogo:name>
+ <ogo:symbol>AND3p</ogo:symbol>
+ <ogo:description>AND 3 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1A</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-10 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1B</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-8 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1C</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-8 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Y</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(56 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(12 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7411a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1A %1B %1C %VCC %VSS %1Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7411b</ogo:name>
+ <ogo:symbol>AND3</ogo:symbol>
+ <ogo:description>AND 3 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2A</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-8 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2B</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-8 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2C</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-8 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Y</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(56 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7411b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2A %2B %2C %2Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7411c</ogo:name>
+ <ogo:symbol>AND3</ogo:symbol>
+ <ogo:description>AND 3 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3A</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-8 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3B</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-10 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3C</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-10 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3Y</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(56 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7411c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %3A %3B %3Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7412</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7410</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7413a</ogo:name>
+ <ogo:symbol>NAND4p</ogo:symbol>
+ <ogo:description>NAND 4 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1A</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-9 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1B</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-9 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1C</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-9 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1D</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-9 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Y</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(78 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(12 62)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7413a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1A %1B %1C %1D %VCC %VSS %1Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7413b</ogo:name>
+ <ogo:symbol>NAND4</ogo:symbol>
+ <ogo:description>NAND 4 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2A</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-9 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2B</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-10 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2C</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-10 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2D</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-10 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Y</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(78 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7413b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2A %2B %2C %2D %2Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7414</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7404</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7415</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7411</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7416</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7404</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7417</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7407</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7420</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7413</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7421a</ogo:name>
+ <ogo:symbol>AND4p</ogo:symbol>
+ <ogo:description>AND 4 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(78 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(12 62)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7421a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %4 %5 %6 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7421b</ogo:name>
+ <ogo:symbol>AND4</ogo:symbol>
+ <ogo:description>AND 4 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(78 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7421b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 %10 %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7422</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7413</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7423a</ogo:name>
+ <ogo:symbol>NORE4</ogo:symbol>
+ <ogo:description>NOR 4 input exp.</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1A</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-9 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1B</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-9 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1C</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-9 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1D</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-9 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Y</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(70 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1X</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(0 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1G</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(0 62)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1/X</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(22 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7423a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1A %1B %1C %1D %1X %1G %1/X %1Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7423b</ogo:name>
+ <ogo:symbol>NORE4</ogo:symbol>
+ <ogo:description>NOR 4 input exp.</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2A</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-10 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2B</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-10 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2C</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-10 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2D</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-10 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Y</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(70 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(0 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(0 62)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2G</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(22 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7423b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2A %2B %2C %2D %VCC %VSS %2G %2Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7425a</ogo:name>
+ <ogo:symbol>NORS4</ogo:symbol>
+ <ogo:description>NOR 4 input str.</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1A</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-9 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1B</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-9 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1C</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-9 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1D</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-9 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Y</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(70 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-1 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1G</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(0 62)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7425a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1A %1B %1C %1D %VCC %1G %1Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7425b</ogo:name>
+ <ogo:symbol>NORS4</ogo:symbol>
+ <ogo:description>NOR 4 input str.</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2A</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2B</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-10 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2C</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-10 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2D</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-10 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Y</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(70 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2G</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-1 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(0 62)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7425b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2A %2B %2C %2D %VSS %2G %2Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7426</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7400</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7427a</ogo:name>
+ <ogo:symbol>NOR3p</ogo:symbol>
+ <ogo:description>NOR 3 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1A</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-9 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1B</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-9 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1C</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-9 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Y</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(0 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(7 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7427a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1A %1B %1C %VCC %VSS %1Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7427b</ogo:name>
+ <ogo:symbol>NOR3</ogo:symbol>
+ <ogo:description>NOR 3 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2A</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-9 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2B</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-9 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2C</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-9 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Y</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7427b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2A %2B %2C %2Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7427c</ogo:name>
+ <ogo:symbol>NOR3</ogo:symbol>
+ <ogo:description>NOR 3 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3A</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-9 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3B</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3C</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3Y</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7427c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %3A %3B %3C %3Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7428</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7402</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7430</ogo:name>
+ <ogo:symbol>NAND8</ogo:symbol>
+ <ogo:description>NAND 8 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(20 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1A</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-9 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1B</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-9 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1C</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-9 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1D</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-9 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1E</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-9 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1F</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-9 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1G</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-9 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1H</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-9 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Y</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(78 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(12 62)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(10 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7430</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1A %1B %1C %1D %1E %1F %1G %1H %VCC %VSS %1Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7432a</ogo:name>
+ <ogo:symbol>ORp</ogo:symbol>
+ <ogo:description>OR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(0 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(7 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7432a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7432b</ogo:name>
+ <ogo:symbol>OR</ogo:symbol>
+ <ogo:description>OR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7432b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7432c</ogo:name>
+ <ogo:symbol>OR</ogo:symbol>
+ <ogo:description>OR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7432c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %9 %10 %8 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7432d</ogo:name>
+ <ogo:symbol>OR</ogo:symbol>
+ <ogo:description>OR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7432d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7433</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7402</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7437</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7400</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7438</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7400</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7439</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7400</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7440</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7413</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7441</ogo:name>
+ <ogo:symbol>BCD10</ogo:symbol>
+ <ogo:description>BCD to 10</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 130)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>A</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-9 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>B</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-9 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>C</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-9 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>D</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-9 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>0</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>0</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(30 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(30 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(30 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(30 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(30 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(30 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(10 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(8 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7441</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %A %B %C %D %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %VCC %VSS @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7442</ogo:name>
+ <ogo:symbol>BCD10</ogo:symbol>
+ <ogo:description>BCD to 10</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 130)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>A</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-9 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>B</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-9 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>C</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-9 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>D</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-9 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>0</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>0</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(30 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(30 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(30 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(30 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(30 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(30 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(10 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7442</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %A %B %C %D %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %VCC %VSS @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7443</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7442</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7444</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7442</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7445</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7442</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7446</ogo:name>
+ <ogo:symbol>BCD7</ogo:symbol>
+ <ogo:description>BCD to 7 seg.</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>A</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-9 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>B</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-9 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>C</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-9 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>D</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-9 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>l</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-9 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>lt</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>r</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-9 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>rbi</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>a</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>b</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b</ogo:text>
+ <ogo:position>(30 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>c</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>c</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>d</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>d</ogo:text>
+ <ogo:position>(30 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>e</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>e</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>f</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>f</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>g</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>g</ogo:text>
+ <ogo:position>(30 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>0</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>bi</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(10 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7446</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %A %B %C %D %0 %a %b %c %d %e %f %g %r %l %VCC %VSS @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7447</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7446</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7448</ogo:name>
+ <ogo:symbol>BCD7n</ogo:symbol>
+ <ogo:description>BCD to 7 seg.</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-10 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>lt</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>rbi</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b</ogo:text>
+ <ogo:position>(30 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>c</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>d</ogo:text>
+ <ogo:position>(30 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>e</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>f</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>g</ogo:text>
+ <ogo:position>(30 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>bi</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7448</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7449</ogo:name>
+ <ogo:symbol>BCD7ns</ogo:symbol>
+ <ogo:description>BCD to 7 seg.</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 100)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>A</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-9 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>B</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-9 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>C</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-9 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>D</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-9 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>0</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 67)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>bi</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>a</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>b</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b</ogo:text>
+ <ogo:position>(30 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>c</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>c</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>d</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>d</ogo:text>
+ <ogo:position>(30 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>e</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>e</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>f</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>f</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>g</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>g</ogo:text>
+ <ogo:position>(30 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(10 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(8 92)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7449</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %A %B %C %D %0 %a %b %c %d %e %f %g %VCC %VSS @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7450a</ogo:name>
+ <ogo:symbol>ANDOR2x2e</ogo:symbol>
+ <ogo:description>AND-NOR 2x2 exp.</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(60 5)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1A</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1B</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-10 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1C</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1D</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Y</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(87 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>-X</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(38 24)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>X</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(38 66)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(60 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7450a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1A %1B %1C %1D %-X %X %1Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7450b</ogo:name>
+ <ogo:symbol>ANDOR2x2e</ogo:symbol>
+ <ogo:description>AND-NOR 2x2 exp.</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(60 5)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2A</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2B</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2C</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2D</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Y</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(87 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(38 24)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(40 68)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(60 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7450b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2A %2B %2C %2D %VCC %VSS %2Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7451a</ogo:name>
+ <ogo:symbol>ANDOR2x3</ogo:symbol>
+ <ogo:description>AND-NOR 2x3</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(60 5)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1A</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1B</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-10 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1C</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-10 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1D</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Y</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(87 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1E</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1F</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(60 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7451a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1A %1B %1C %1D %1E %1F %1Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7451b</ogo:name>
+ <ogo:symbol>ANDOR2x2e</ogo:symbol>
+ <ogo:description>AND-NOR 2x2</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(60 5)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2A</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2B</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2C</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2D</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Y</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(87 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(38 24)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(40 68)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(60 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7451b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2A %2B %2C %2D %VCC %VSS %2Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7454</ogo:name>
+ <ogo:symbol>ANDOR2x3x4</ogo:symbol>
+ <ogo:description>AND-NOR 3x2x2x3</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(75 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1A</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-10 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1B</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1C</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1D</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1E</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-10 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1F</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-9 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1G</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-9 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1H</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-9 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1J</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-9 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1K</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-9 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(40 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(40 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Y</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(101 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(65 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7454</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1A %1B %1C %1D %1E %1F %1G %1H %1J %1K %VCC %VSS %1Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7455</ogo:name>
+ <ogo:symbol>ANDOR2x4</ogo:symbol>
+ <ogo:description>AND-NOR 2x4</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(75 25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1A</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1B</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-10 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1C</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-10 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1D</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-10 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1E</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-9 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1F</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-9 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1G</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-9 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1H</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-9 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(55 33)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(55 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Y</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(106 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(75 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7455</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1A %1B %1C %1D %1E %1F %1G %1H %VCC %VSS %1Y @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7473a</ogo:name>
+ <ogo:symbol>JKFFc</ogo:symbol>
+ <ogo:description>JK Flip-Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1J</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>J</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1C</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1K</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>K</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1CL</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(35 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Q</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Q-</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7473a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1J %1C %1K %1CL %1Q %1Q- %VSS @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>7473b</ogo:name>
+ <ogo:symbol>JKFFc</ogo:symbol>
+ <ogo:description>JK Flip-Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2J</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>J</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2C</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2K</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>K</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2CL</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(35 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Q</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Q-</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7473b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2J %2C %2K %2CL %2Q %2Q- %VCC @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7474a</ogo:name>
+ <ogo:symbol>DFFcs</ogo:symbol>
+ <ogo:description>D Flip-Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1D</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1C</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1S</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(35 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1C</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Q</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Q-</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7474a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1D %1C %1S %1CL %1Q %1Q- %VSS @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7474b</ogo:name>
+ <ogo:symbol>DFFcs</ogo:symbol>
+ <ogo:description>D Flip-Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2D</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2C</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2S</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(35 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2C</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Q</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Q-</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7474b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2D %2C %2S %2CL %2Q %2Q- %VCC @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7475</ogo:name>
+ <ogo:symbol>4DL</ogo:symbol>
+ <ogo:description>D Latch 4 bit</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>D0</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-9 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>D1</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-9 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>D2</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-9 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>D3</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-9 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>E1</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E1</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>E2</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-9 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E2</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Q0</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Q0-</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Q1</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Q1-</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Q2</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Q2-</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Q3</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Q3-</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(10 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(7 102)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7475</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %D0 %D1 %D2 %D3 %E1 %E2 %Q0 %Q0- %Q1 %Q1- %Q2 %Q2- %Q3 %Q3- %VCC %VSS @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7476a</ogo:name>
+ <ogo:symbol>JKFFcs</ogo:symbol>
+ <ogo:description>JK Flip-Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>J</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>K</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(35 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(47 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(67 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7476a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %14 %15 %13 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7476b</ogo:name>
+ <ogo:symbol>JKFFcs</ogo:symbol>
+ <ogo:description>JK Flip-Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>J</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>K</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(35 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(47 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(67 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7476b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %5 %6 %7 %8 %9 %10 %11 %12 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>7477</ogo:name>
+ <ogo:symbol>4DLs</ogo:symbol>
+ <ogo:description>D Latch 4 bit</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>D0</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-9 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>D1</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-9 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>D2</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-9 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>D3</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-9 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>E1</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E1</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>E2</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-9 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E2</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Q0</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Q1</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Q2</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Q3</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(10 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(7 102)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7477</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %D0 %D1 %D2 %D3 %E1 %E2 %Q0 %Q1 %Q2 %Q3 %VCC %VSS @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7483</ogo:name>
+ <ogo:symbol>4ADD</ogo:symbol>
+ <ogo:description>4 bit full adder</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>E1</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-9 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>E2</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-9 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>E3</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-9 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>E4</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-9 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>C0</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C0</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>C4</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-9 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C4</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>A1</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>A2</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>A3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>A4</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>B1</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>B2</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>B3</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>B4</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B4</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(10 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(7 102)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7483</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %E1 %E2 %E3 %E4 %C0 %C4 %A1 %A2 %A3 %A4 %B1 %B2 %B3 %B4 %VCC %VSS @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>7485</ogo:name>
+ <ogo:symbol>4ADD</ogo:symbol>
+ <ogo:description>4 bit comparator</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>ia+</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-9 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ia+</ogo:text>
+ <ogo:position>(3 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>ia-</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-9 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ia-</ogo:text>
+ <ogo:position>(3 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>oa+</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-9 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>oa+</ogo:text>
+ <ogo:position>(3 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>oa-</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-9 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>oa-</ogo:text>
+ <ogo:position>(3 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>ia=</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ia=</ogo:text>
+ <ogo:position>(3 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>oa=</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-9 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>oa=</ogo:text>
+ <ogo:position>(3 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>A1</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a1</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>A2</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a2</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>A3</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a3</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>A4</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a4</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>B1</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b1</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>B2</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b2</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>B3</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b3</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>B4</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b4</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(9 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(7 102)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7485</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %ia+ %ia- %oa+ %oa- %ia= %oa= %A1 %A2 %A3 %A4 %B1 %B2 %B3 %B4 %VCC %VSS @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7486a</ogo:name>
+ <ogo:symbol>XORp</ogo:symbol>
+ <ogo:description>XOR (warning pinout may be different)</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-18 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-18 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(0 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(7 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7486a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7486b</ogo:name>
+ <ogo:symbol>XOR</ogo:symbol>
+ <ogo:description>XOR (warning pinout may be different)</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-18 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-18 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7486b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7486c</ogo:name>
+ <ogo:symbol>XOR</ogo:symbol>
+ <ogo:description>XOR (warning pinout may be different)</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-18 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-18 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7486c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7486d</ogo:name>
+ <ogo:symbol>XOR</ogo:symbol>
+ <ogo:description>XOR (warning pinout may be different)</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-18 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-18 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7486d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7490</ogo:name>
+ <ogo:symbol>4DLs</ogo:symbol>
+ <ogo:description>Decade Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>R1</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-9 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>R2</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-9 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>S1</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-9 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S1</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>S2</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-9 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S2</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Ca</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-10 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ca</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Cb</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-9 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Cb</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>QA</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QA</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>QB</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QB</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>QC</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QC</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>QD</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QD</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(10 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(7 102)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7490</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %R1 %R2 %S1 %S2 %Ca %Cb %QA %QB %QC %QD %VCC %VSS @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7491</ogo:name>
+ <ogo:symbol>SFR8</ogo:symbol>
+ <ogo:description>Shift Register 8 bit</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>A</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>CK</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>B</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(35 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Q</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Q-</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7491</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %A %CK %B %VSS %Q %Q- %VCC @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7492</ogo:name>
+ <ogo:symbol>CTR4</ogo:symbol>
+ <ogo:description>Counter to 12</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-25 -5)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>R1</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(0 77)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R1</ogo:text>
+ <ogo:position>(5 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>R2</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(20 77)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R2</ogo:text>
+ <ogo:position>(25 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Ca</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(40 77)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ca</ogo:text>
+ <ogo:position>(45 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Cb</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(60 77)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Cb</ogo:text>
+ <ogo:position>(65 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>QA</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QA</ogo:text>
+ <ogo:position>(5 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>QB</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(20 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QB</ogo:text>
+ <ogo:position>(25 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>QC</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(40 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QC</ogo:text>
+ <ogo:position>(45 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>QD</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(60 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QD</ogo:text>
+ <ogo:position>(65 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(85 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(68 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7492</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %R1 %R2 %Ca %Cb %QA %QB %QC %QD %VCC %VSS @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7493</ogo:name>
+ <ogo:symbol>CTR4</ogo:symbol>
+ <ogo:description>Counter 4 bit</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-25 -5)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>R1</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(0 77)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R1</ogo:text>
+ <ogo:position>(5 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>R2</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(20 77)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R2</ogo:text>
+ <ogo:position>(25 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Ca</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(40 77)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ca</ogo:text>
+ <ogo:position>(45 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Cb</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(60 77)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Cb</ogo:text>
+ <ogo:position>(65 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>QA</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QA</ogo:text>
+ <ogo:position>(5 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>QB</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(20 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QB</ogo:text>
+ <ogo:position>(25 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>QC</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(40 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QC</ogo:text>
+ <ogo:position>(45 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>QD</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(60 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QD</ogo:text>
+ <ogo:position>(65 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(85 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(68 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7493</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %R1 %R2 %Ca %Cb %QA %QB %QC %QD %VCC %VSS @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>7495</ogo:name>
+ <ogo:symbol>SFR4</ogo:symbol>
+ <ogo:description>Shift Register 4 bit</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-25 -5)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>D</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(5 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Ca</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ca</ogo:text>
+ <ogo:position>(5 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Cb</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-15 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Cb</ogo:text>
+ <ogo:position>(5 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>PA</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(8 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PA</ogo:text>
+ <ogo:position>(15 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>PB</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(28 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PB</ogo:text>
+ <ogo:position>(35 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>PC</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(48 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PC</ogo:text>
+ <ogo:position>(55 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>PD</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(68 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PD</ogo:text>
+ <ogo:position>(75 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>QA</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QA</ogo:text>
+ <ogo:position>(15 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>QB</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(28 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QB</ogo:text>
+ <ogo:position>(35 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>QC</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(48 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QC</ogo:text>
+ <ogo:position>(55 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>QD</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(68 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QD</ogo:text>
+ <ogo:position>(75 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(105 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(88 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>S</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(105 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(88 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(105 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(88 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>7495</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %D %S %Ca %Cb %QA %QB %QC %QD %PA %PB %PC %PD %VCC %VSS @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74107a</ogo:name>
+ <ogo:symbol>JKFFc</ogo:symbol>
+ <ogo:description>JK Flip-Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1J</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>J</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1C</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1K</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>K</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1CL</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(35 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Q</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Q-</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74107a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1J %1C %1K %1CL %1Q %1Q- %VSS @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>74107b</ogo:name>
+ <ogo:symbol>JKFFc</ogo:symbol>
+ <ogo:description>JK Flip-Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2J</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>J</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2C</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2K</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>K</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2CL</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(35 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Q</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Q-</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74107b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2J %2C %2K %2CL %2Q %2Q- %VCC @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74109a</ogo:name>
+ <ogo:symbol>JKFFcs</ogo:symbol>
+ <ogo:description>JK Flip-Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1J</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>J</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1K</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>1K</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1C</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1S</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(35 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1CL</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Q</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(47 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Q-</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(67 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74109a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1J %1C %1K %1CL %1S %1Q %1Q- %VSS @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74109b</ogo:name>
+ <ogo:symbol>JKFFcs</ogo:symbol>
+ <ogo:description>JK Flip-Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2J</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>J</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2K</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>K</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2C</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2S</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(35 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2CL</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Q</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(47 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Q-</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(67 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74109b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2J %2C %2K %2CL %2S %2Q %2Q- %VCC @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74112a</ogo:name>
+ <ogo:symbol>JKFFcs</ogo:symbol>
+ <ogo:description>JK Flip-Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1J</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>J</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1C</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1K</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>K</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1S</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(35 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1CL</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Q</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(47 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Q-</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(67 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74112a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1J %1C %1K %1CL %1S %1Q %1Q- %VSS @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74112b</ogo:name>
+ <ogo:symbol>JKFFcs</ogo:symbol>
+ <ogo:description>JK Flip-Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2J</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>J</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2C</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2K</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>K</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2S</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(35 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2CL</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Q</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(47 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Q-</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(67 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74112b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2J %2C %2K %2CL %2S %2Q %2Q- %VCC @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74113a</ogo:name>
+ <ogo:symbol>JKFFc</ogo:symbol>
+ <ogo:description>JK Flip-Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1J</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>J</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1C</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1K</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>K</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1S</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(35 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Q</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1Q-</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74113a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1J %1C %1K %1S %1Q %1Q- %VSS @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>74113b</ogo:name>
+ <ogo:symbol>JKFFc</ogo:symbol>
+ <ogo:description>JK Flip-Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2J</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>J</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2C</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2K</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>K</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2S</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(30 -15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(35 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Q</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2Q-</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(50 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74113b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %2J %2C %2K %2S %2Q %2Q- %VCC @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74122</ogo:name>
+ <ogo:symbol>MONO1</ogo:symbol>
+ <ogo:description>Retriggerable Monostable</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-25 -25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>C</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>RC</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RC</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>R</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>A1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 99)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>A2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 119)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VSS</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(45 129)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(27 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>VCC</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(45 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Q</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(45 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Q-</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(45 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(27 24)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>CL</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(45 69)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>B1</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(45 89)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(27 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>B2</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(45 109)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(27 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 162)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74122</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %A1 %A2 %B1 %B2 %Q %Q- %VSS %VCC %CL %R %C %RC @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74123a</ogo:name>
+ <ogo:symbol>MONO2</ogo:symbol>
+ <ogo:description>Retriggerable Monostable</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-25 -25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(17 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(25 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RC</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(67 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(47 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(47 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(67 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(47 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(47 24)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(15 77)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(25 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 95)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74123a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %8 %13 %14 %15 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74123b</ogo:name>
+ <ogo:symbol>MONO2</ogo:symbol>
+ <ogo:description>Retriggerable Monostable</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-25 -25)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(17 2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(25 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RC</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(67 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Vc</ogo:text>
+ <ogo:position>(47 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(67 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(47 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(67 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(47 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>_</ogo:text>
+ <ogo:position>(47 24)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(15 77)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(25 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 95)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74123b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %5 %6 %7 %9 %10 %11 %12 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74125a</ogo:name>
+ <ogo:symbol>BUFTRI4-p</ogo:symbol>
+ <ogo:description>Buffer Tristate</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(2 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74125a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %14 %2 %3 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74125b</ogo:name>
+ <ogo:symbol>BUFTRI4-p</ogo:symbol>
+ <ogo:description>Buffer Tristate</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(2 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74125b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 %6 %7 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74125c</ogo:name>
+ <ogo:symbol>BUFTRI4-</ogo:symbol>
+ <ogo:description>Buffer Tristate</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(2 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74125c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74125d</ogo:name>
+ <ogo:symbol>BUFTRI4-</ogo:symbol>
+ <ogo:description>Buffer Tristate</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(2 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74125d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74126a</ogo:name>
+ <ogo:symbol>BUFTRI4p</ogo:symbol>
+ <ogo:description>Buffer Tristate</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(2 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74126a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %14 %2 %3 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74126b</ogo:name>
+ <ogo:symbol>BUFTRI4p</ogo:symbol>
+ <ogo:description>Buffer Tristate</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(2 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74126b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 %6 %7 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74126c</ogo:name>
+ <ogo:symbol>BUFTRI4</ogo:symbol>
+ <ogo:description>Buffer Tristate</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(2 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74126c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74126d</ogo:name>
+ <ogo:symbol>BUFTRI4</ogo:symbol>
+ <ogo:description>Buffer Tristate</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-8 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(2 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74126d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74128</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7402</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74130</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7408</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74131</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7408</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74132</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7400</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74133</ogo:name>
+ <ogo:symbol>NAND13</ogo:symbol>
+ <ogo:description>NAND 13 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 -10)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 -40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 -30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 -20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 0)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(58 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(7 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(10 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(30 70)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74133</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74136</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7486</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74137</ogo:name>
+ <ogo:symbol>3to8L</ogo:symbol>
+ <ogo:description>3 to 8 line decoder</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E3</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E2</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E1</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>0</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(30 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(30 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(30 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(30 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74137</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74138</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74137</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74139a</ogo:name>
+ <ogo:symbol>3to4L</ogo:symbol>
+ <ogo:description>3 to 4 line decoder</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 70)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>0</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(30 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(30 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(8 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(15 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74139a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74139b</ogo:name>
+ <ogo:symbol>3to4L</ogo:symbol>
+ <ogo:description>3 to 4 line decoder</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 70)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>0</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(30 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(30 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(8 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(15 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74139b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 %10 %11 %12 %13 %14 %15 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74145</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7442</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74147</ogo:name>
+ <ogo:symbol>10to4E</ogo:symbol>
+ <ogo:description>10 to 4 priority encoder</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(30 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(30 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(30 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74147</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74148</ogo:name>
+ <ogo:symbol>8to3E</ogo:symbol>
+ <ogo:description>8 to 3 priority encoder</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(30 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>G</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E0</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E1</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74148</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74151</ogo:name>
+ <ogo:symbol>8to1M</ogo:symbol>
+ <ogo:description>8 to 1 multiplexer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(30 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74151</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74153</ogo:name>
+ <ogo:symbol>2x4M</ogo:symbol>
+ <ogo:description>Dual 4 input multiplexer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b0</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b1</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b2</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b3</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>az</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ea</ogo:text>
+ <ogo:position>(30 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(30 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>bz</ogo:text>
+ <ogo:position>(30 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Eb</ogo:text>
+ <ogo:position>(30 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74153</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value> </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>74155</ogo:name>
+ <ogo:symbol>3to8L</ogo:symbol>
+ <ogo:description>Dual 1 to 4 decoder</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ea</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Eb</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ea</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Eb</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b0</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b1</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b2</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b3</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74155</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74156</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74155</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74157</ogo:name>
+ <ogo:symbol>4x2M</ogo:symbol>
+ <ogo:description>Quad 2 input multiplexer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 140)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b0</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b1</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>c0</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>c1</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>d0</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>d1</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>az</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>bz</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>cz</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>dz</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(27 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(27 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74157</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value> </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74158</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74157</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74160</ogo:name>
+ <ogo:symbol>4PIC</ogo:symbol>
+ <ogo:description>4 bit BCD counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-25 105)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ct</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>cp</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ck</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(1 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>pe</ogo:text>
+ <ogo:position>(5 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(21 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(25 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(41 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(45 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(61 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(65 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(81 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(85 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(106 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>t</ogo:text>
+ <ogo:position>(90 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(106 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(90 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(106 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(87 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(0 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(5 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(19 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(39 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(45 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(59 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(65 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(79 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(85 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(100 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74160</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value> </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74161</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74160 (binary counter)</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74162</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74160</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74163</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74160 (binary counter)</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74164</ogo:name>
+ <ogo:symbol>SIPO8</ogo:symbol>
+ <ogo:description>Serial inpul paralel out 8 bit shift reg.</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-9 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-9 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-9 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-9 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q6</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q5</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(10 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(8 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74164</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %l4 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74165</ogo:name>
+ <ogo:symbol>8to1M</ogo:symbol>
+ <ogo:description>8 bit paralel to serial converter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C1</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C2</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>SD</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PL</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74165</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>74166</ogo:name>
+ <ogo:symbol>8to1M</ogo:symbol>
+ <ogo:description>8 bit shift register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>SL</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CI</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>SD</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74166</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74168</ogo:name>
+ <ogo:symbol>4PIC</ogo:symbol>
+ <ogo:description>u|d 4 bit BCD counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-25 105)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ct</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>cp</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ck</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(1 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>pe</ogo:text>
+ <ogo:position>(5 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(21 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(25 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(41 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(45 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(61 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(65 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(81 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(85 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(106 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>u|d</ogo:text>
+ <ogo:position>(82 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(106 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>t</ogo:text>
+ <ogo:position>(90 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(106 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(87 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(0 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(5 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(19 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(39 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(45 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(59 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(65 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(79 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(85 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(100 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74168</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value> </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74169</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74168 (binary counter)</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74170</ogo:name>
+ <ogo:symbol>4PIC</ogo:symbol>
+ <ogo:description>4x4 register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-25 105)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>WA</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>WB</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(1 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>EW</ogo:text>
+ <ogo:position>(5 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(21 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(25 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(41 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(45 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(61 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(65 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(81 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(85 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(106 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RA</ogo:text>
+ <ogo:position>(90 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(106 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ER</ogo:text>
+ <ogo:position>(90 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(106 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RB</ogo:text>
+ <ogo:position>(87 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(0 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(5 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(19 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(39 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(45 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(59 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(65 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(79 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(85 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(100 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74170</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value> </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74173</ogo:name>
+ <ogo:symbol>LD4</ogo:symbol>
+ <ogo:description>Latch 4 Bit</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>IE</ogo:text>
+ <ogo:position>(2 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(27 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74173</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74174</ogo:name>
+ <ogo:symbol>LD6</ogo:symbol>
+ <ogo:description>Latch 6 Bit</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q5</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74174</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74175</ogo:name>
+ <ogo:symbol>4DL</ogo:symbol>
+ <ogo:description>D Latch 4 bit</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(47 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(47 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(47 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(6 -3)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(7 107)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74175</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74181</ogo:name>
+ <ogo:symbol>ALU4</ogo:symbol>
+ <ogo:description>4 bit ALU</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 170)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-10 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-10 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B0</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-10 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S0</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-10 120)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S1</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-10 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S2</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-10 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S3</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>F0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>F1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>F2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>F3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>G</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C0</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a=b</ogo:text>
+ <ogo:position>(25 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(46 130)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>M</ogo:text>
+ <ogo:position>(27 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 140)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CI</ogo:text>
+ <ogo:position>(27 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(7 162)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74181</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74182</ogo:name>
+ <ogo:symbol>CYG</ogo:symbol>
+ <ogo:description>Carry Generator</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>G0</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>G1</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>G2</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>G3</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>X</ogo:text>
+ <ogo:position>(30 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y</ogo:text>
+ <ogo:position>(30 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z</ogo:text>
+ <ogo:position>(30 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>G</ogo:text>
+ <ogo:position>(30 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CI</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74182</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74183a</ogo:name>
+ <ogo:symbol>ADDx2</ogo:symbol>
+ <ogo:description>Full Adder</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CI</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(30 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vs</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CO</ogo:text>
+ <ogo:position>(45 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z</ogo:text>
+ <ogo:position>(50 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74183a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %3 %4 %5 %6 %7 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74183b</ogo:name>
+ <ogo:symbol>ADDx2</ogo:symbol>
+ <ogo:description>Full Adder</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(2 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CI</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(2 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(2 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vc</ogo:text>
+ <ogo:position>(35 49)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CO</ogo:text>
+ <ogo:position>(45 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(67 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z</ogo:text>
+ <ogo:position>(50 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74183b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %10 %11 %12 %13 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74190</ogo:name>
+ <ogo:symbol>4PIC</ogo:symbol>
+ <ogo:description>u|d 4 bit BCD counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-25 105)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>tc</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ce</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ck</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(0 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>pl</ogo:text>
+ <ogo:position>(5 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(21 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(25 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(41 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(45 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(61 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(65 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(81 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(85 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(106 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>u|d</ogo:text>
+ <ogo:position>(82 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(106 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(90 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(106 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(87 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(0 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(5 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(19 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(39 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(45 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(59 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(65 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(79 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(85 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(100 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74190</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value> </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74191</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74190 (binary counter)</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74192</ogo:name>
+ <ogo:symbol>4PICu</ogo:symbol>
+ <ogo:description>u|d 4 bit BCD counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-25 105)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Cu</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Cd</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(0 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>pl</ogo:text>
+ <ogo:position>(5 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(21 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(25 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(41 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(45 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(61 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(65 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(81 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(85 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(106 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Tu</ogo:text>
+ <ogo:position>(87 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(106 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Td</ogo:text>
+ <ogo:position>(87 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(106 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vs</ogo:text>
+ <ogo:position>(87 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(-1 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vc</ogo:text>
+ <ogo:position>(5 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(19 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(39 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(45 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(59 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(65 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(79 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(85 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(100 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74192</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value> </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74193</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74192 (binary counter)</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74194</ogo:name>
+ <ogo:symbol>SR4b</ogo:symbol>
+ <ogo:description>Bidirectional 4 Bit Shift Register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S0</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S1</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>SL</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>SR</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(27 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74194</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74195</ogo:name>
+ <ogo:symbol>LD4</ogo:symbol>
+ <ogo:description>4 bit shift register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>J</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>K</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(26 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(26 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(26 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(26 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(26 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(26 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>__</ogo:text>
+ <ogo:position>(26 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MR</ogo:text>
+ <ogo:position>(26 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74195</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74196</ogo:name>
+ <ogo:symbol>4RCOUNT</ogo:symbol>
+ <ogo:description>BCD presettable counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-25 -5)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vc</ogo:text>
+ <ogo:position>(5 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-15 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C0</ogo:text>
+ <ogo:position>(5 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C1</ogo:text>
+ <ogo:position>(5 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(8 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(15 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(28 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(35 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(48 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(55 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(68 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(75 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(15 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(28 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(35 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(48 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(55 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(68 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(75 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(105 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>vs</ogo:text>
+ <ogo:position>(86 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(105 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P</ogo:text>
+ <ogo:position>(86 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(105 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(86 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-25 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74196</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74197</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74196 (binary)</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74221</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74123</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74240</ogo:name>
+ <ogo:symbol>BUF8i</ogo:symbol>
+ <ogo:description>8 bit inverter Tri-State Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 140)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-15 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-18 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-18 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-18 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-18 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B4</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y1</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y2</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y3</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y4</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(50 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z1</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(50 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z2</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(50 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z3</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(50 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z4</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>GA</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-18 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>GB</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(3 138)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74240</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74241</ogo:name>
+ <ogo:symbol>BUF8nis</ogo:symbol>
+ <ogo:description>8 bit Tri-State Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 140)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-15 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-18 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-18 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-18 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-18 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B4</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y1</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y2</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y3</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y4</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(50 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z1</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(50 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z2</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(50 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z3</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(50 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z4</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>GA</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-18 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>GB</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(3 138)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74241</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>74244</ogo:name>
+ <ogo:symbol>BUF8ni</ogo:symbol>
+ <ogo:description>8 bit Tri-State Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 140)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-15 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-18 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-18 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-18 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-18 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B4</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y1</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y2</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y3</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y4</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(50 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z1</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(50 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z2</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(50 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z3</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(50 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z4</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>GA</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-18 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>GB</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(3 138)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74244</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74245</ogo:name>
+ <ogo:symbol>BUF8nis</ogo:symbol>
+ <ogo:description>8 bit Tri-State Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 140)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-18 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-18 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-18 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-18 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B4</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(50 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B5</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(50 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B6</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(50 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B7</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(50 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B8</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-15 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-18 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>DIR</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(3 138)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74245</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74242</ogo:name>
+ <ogo:symbol>BUF4i</ogo:symbol>
+ <ogo:description>4 bit inverter Tri-State Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 100)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B4</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Gab</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-18 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Gba</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(3 98)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74242</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %13 %14 %1 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+
+ <ogo:part>
+ <ogo:name>74243</ogo:name>
+ <ogo:symbol>BUF4ni</ogo:symbol>
+ <ogo:description>4 bit Tri-State Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 100)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B4</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Gab</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-18 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Gba</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(3 98)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74243</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %13 %14 %1 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74247</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7446</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74248</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7448</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74249</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 7448</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74251</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74151</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74253</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74153</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74256</ogo:name>
+ <ogo:symbol>1to8AL</ogo:symbol>
+ <ogo:description>dual 4 bit addressable latch</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Da</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Db</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z0</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z1</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z2</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z3</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74256</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74257</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74157</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74258</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74157</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74259</ogo:name>
+ <ogo:symbol>1to8AL</ogo:symbol>
+ <ogo:description>8 bit addressable latch</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y4</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y5</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y6</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y7</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74259</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74260a</ogo:name>
+ <ogo:symbol>NOR5</ogo:symbol>
+ <ogo:description>NOR 5 input</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(85 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(5 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(15 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74260a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %5 %7 %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74260b</ogo:name>
+ <ogo:symbol>NOR5</ogo:symbol>
+ <ogo:description>5 input NOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-15 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(85 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(5 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(15 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74260b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %6 %8 %9 %10 %11 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+
+ <ogo:part>
+ <ogo:name>74266a</ogo:name>
+ <ogo:symbol>XNORp</ogo:symbol>
+ <ogo:description>XNOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-18 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-18 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(0 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(7 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74266a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74266b</ogo:name>
+ <ogo:symbol>XNOR</ogo:symbol>
+ <ogo:description>XNOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-18 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-18 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74266b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74266c</ogo:name>
+ <ogo:symbol>XNOR</ogo:symbol>
+ <ogo:description>XNOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-18 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-18 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74266c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74266d</ogo:name>
+ <ogo:symbol>XNOR</ogo:symbol>
+ <ogo:description>XNOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-18 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-18 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74266d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %13 %12 %11 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74273</ogo:name>
+ <ogo:symbol>BUF8nis</ogo:symbol>
+ <ogo:description>Octal D Flip Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 140)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-18 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-18 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-18 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-18 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-18 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-18 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-18 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-18 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q5</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q6</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-18 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MR</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-18 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(3 138)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74273</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74279a</ogo:name>
+ <ogo:symbol>4RSLp</ogo:symbol>
+ <ogo:description>Set Reset Latch</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74279a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %15 %14 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74279b</ogo:name>
+ <ogo:symbol>4RSLp</ogo:symbol>
+ <ogo:description>Set Reset Latch</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74279b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %16 %5 %6 %7 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74279c</ogo:name>
+ <ogo:symbol>4RSL</ogo:symbol>
+ <ogo:description>Set Reset Latch</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S1</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S2</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74279c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74279d</ogo:name>
+ <ogo:symbol>4RSL</ogo:symbol>
+ <ogo:description>Set Reset Latch</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(0 -20)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(22 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(5 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S1</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(5 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S2</ogo:text>
+ <ogo:position>(22 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(67 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q</ogo:text>
+ <ogo:position>(50 5)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(50 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74279d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %9 %10 %11 %12 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74280</ogo:name>
+ <ogo:symbol>9to2</ogo:symbol>
+ <ogo:description>9 bit parity generator</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-15 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-15 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-15 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 91)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>EV</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OD</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74280</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74283</ogo:name>
+ <ogo:symbol>4BFA</ogo:symbol>
+ <ogo:description>4 bit full adder</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-11 91)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B4</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S1</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S2</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S3</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S4</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CO</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CI</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(5 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74283</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74290</ogo:name>
+ <ogo:symbol>4DLs</ogo:symbol>
+ <ogo:description>Decade Counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-18 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-18 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-18 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S1</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-18 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S2</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-18 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ca</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-18 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Cb</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QA</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QB</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(46 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QC</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(46 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QD</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(10 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(7 102)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74290</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %13 %3 %4 %5 %14 %7 %8 %9 %10 %11 %12 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74293</ogo:name>
+ <ogo:symbol>CTR4</ogo:symbol>
+ <ogo:description>Counter 4 bit</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-25 -5)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(0 77)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R1</ogo:text>
+ <ogo:position>(5 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(20 77)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R2</ogo:text>
+ <ogo:position>(25 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(40 77)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Ca</ogo:text>
+ <ogo:position>(45 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(60 77)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Cb</ogo:text>
+ <ogo:position>(65 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(0 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QA</ogo:text>
+ <ogo:position>(5 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(20 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QB</ogo:text>
+ <ogo:position>(25 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(40 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QC</ogo:text>
+ <ogo:position>(45 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(60 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>QD</ogo:text>
+ <ogo:position>(65 12)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(83 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(68 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(-30 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74293</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 %7 %8 %9 %10 %11 %12 %13 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74295</ogo:name>
+ <ogo:symbol>SRTS4</ogo:symbol>
+ <ogo:description>4 bit shift register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>DS</ogo:text>
+ <ogo:position>(27 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(8 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74295</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74298</ogo:name>
+ <ogo:symbol>4x2M</ogo:symbol>
+ <ogo:description>Quad 2 input multiplexer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 140)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>a1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b0</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>b1</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-15 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>c0</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>c1</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-15 100)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>d0</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>d1</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>az</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>bz</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>cz</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(46 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>dz</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(46 90)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(27 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 110)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ck</ogo:text>
+ <ogo:position>(27 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74298</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value> </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74299</ogo:name>
+ <ogo:symbol>BUF8ni</ogo:symbol>
+ <ogo:description>8 bit shift register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 140)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>M0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>M1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S0</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S7</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(47 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P4</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P5</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P6</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P7</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-17 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E1</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E2</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(3 138)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74299</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74322</ogo:name>
+ <ogo:symbol>8SRSE</ogo:symbol>
+ <ogo:description>8 bit shift register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S\P</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>G</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 91)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>SE</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(47 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P4</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P5</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P6</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P7</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(47 91)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(27 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(3 118)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74322</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74323</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74299</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74348</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74148</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74352</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74153</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74353</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74153</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74365</ogo:name>
+ <ogo:symbol>BF6ni</ogo:symbol>
+ <ogo:description>Hex buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E1</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y4</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y5</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E2</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74365</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74367</ogo:name>
+ <ogo:symbol>BF6ni</ogo:symbol>
+ <ogo:description>Hex buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B0</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>EA</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z0</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z1</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>EB</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74367</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74366</ogo:name>
+ <ogo:symbol>BF6i</ogo:symbol>
+ <ogo:description>Hex inverter buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E1</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y4</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y5</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E2</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74366</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74368</ogo:name>
+ <ogo:symbol>BF6i</ogo:symbol>
+ <ogo:description>Hex inverter buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-15 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-15 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B0</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>EA</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(46 10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(46 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(46 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(46 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(46 50)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z0</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(46 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Z1</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(46 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>EB</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74368</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74373</ogo:name>
+ <ogo:symbol>BUF8nis</ogo:symbol>
+ <ogo:description>8 bit latch</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 140)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q5</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q6</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-17 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>LE</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(3 138)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74373</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74374</ogo:name>
+ <ogo:symbol>BUF8nis</ogo:symbol>
+ <ogo:description>Octal D Flip-Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 140)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q5</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q6</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-17 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(3 138)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74374</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74375</ogo:name>
+ <ogo:symbol>4DL</ogo:symbol>
+ <ogo:description>D Latch 4 bit</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E1</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E2</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(6 -3)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(6 107)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74375</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74377</ogo:name>
+ <ogo:symbol>BUF8nis</ogo:symbol>
+ <ogo:description>Octal D Flip-Flop</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 140)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q5</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q6</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-17 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(3 138)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74377</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74378</ogo:name>
+ <ogo:symbol>LD6</ogo:symbol>
+ <ogo:description>Latch 6 Bit</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-15 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D5</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q5</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(8 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(8 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74378</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74379</ogo:name>
+ <ogo:symbol>4DL</ogo:symbol>
+ <ogo:description>D Latch 4 bit</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-10 110)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>E</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(6 -3)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(7 107)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74379</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74385</ogo:name>
+ <ogo:symbol>BUF8nis</ogo:symbol>
+ <ogo:description>Quad serial adder</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 140)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B4</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y1</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>M1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>M2</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y3</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>M3</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y4</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>M4</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-17 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(3 138)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74385</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74386a</ogo:name>
+ <ogo:symbol>XORp</ogo:symbol>
+ <ogo:description>XOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-18 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-18 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-2 -2)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(0 52)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(7 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74386a</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %7 %14 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74386b</ogo:name>
+ <ogo:symbol>XOR</ogo:symbol>
+ <ogo:description>XOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-18 8)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-18 28)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74386b</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %4 %5 %6 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74386c</ogo:name>
+ <ogo:symbol>XOR</ogo:symbol>
+ <ogo:description>XOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-18 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-18 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74386c</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %8 %9 %10 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74386d</ogo:name>
+ <ogo:symbol>XOR</ogo:symbol>
+ <ogo:description>XOR</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(10 15)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-18 9)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-18 29)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(51 18)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(8 30)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74386d</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %11 %12 %13 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74390</ogo:name>
+ <ogo:symbol>2x4bc</ogo:symbol>
+ <ogo:description>Dual BCD counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C0</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 91)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>C1</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 91)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(3 118)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74390</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>74393</ogo:name>
+ <ogo:symbol>2x4bi</ogo:symbol>
+ <ogo:description>Dual binary counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 91)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(47 91)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(3 118)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74393</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74395</ogo:name>
+ <ogo:symbol>4PICu</ogo:symbol>
+ <ogo:description>4 bit shift register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-25 105)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-17 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>SD</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(-17 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-17 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(0 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(5 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(21 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(41 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(45 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(61 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(65 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(81 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(85 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(106 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(87 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(106 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(87 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(106 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ro</ogo:text>
+ <ogo:position>(87 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-1 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>M</ogo:text>
+ <ogo:position>(5 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(19 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(25 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(39 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(45 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(59 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(65 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(79 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(85 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(100 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74395</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value> </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74398</ogo:name>
+ <ogo:symbol>4DLx2i</ogo:symbol>
+ <ogo:description>Quad 2 port register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 125)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0a</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1a</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2a</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3a</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0b</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1b</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2b</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3b</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 80)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(25 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(6 -3)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(6 127)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74398</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74399</ogo:name>
+ <ogo:symbol>4DLx2</ogo:symbol>
+ <ogo:description>Quad 2 port register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 125)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0a</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1a</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2a</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3a</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0b</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1b</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2b</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3b</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(25 70)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(25 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(6 -3)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(6 127)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74399</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74490</ogo:name>
+ <ogo:symbol>2x4bci</ogo:symbol>
+ <ogo:description>Dual BCD counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 120)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 91)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 91)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(3 118)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74490</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74540</ogo:name>
+ <ogo:symbol>BUF8i</ogo:symbol>
+ <ogo:description>8 bit inverter Tri-State Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 140)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y1</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y2</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y3</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y4</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y5</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y6</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y7</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y8</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>GA</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-18 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>GB</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(3 138)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74540</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74541</ogo:name>
+ <ogo:symbol>BUF8ni</ogo:symbol>
+ <ogo:description>8 bit Tri-State Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 140)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y1</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y2</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y3</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y4</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y5</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y6</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y7</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Y8</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-15 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>GA</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-18 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>GB</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(3 138)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74541</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74568</ogo:name>
+ <ogo:symbol>COUNT8tri</ogo:symbol>
+ <ogo:description>BCD up-down counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(30 150)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>U\D</ogo:text>
+ <ogo:position>(1 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>scl</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-17 91)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>acl</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>LD</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CP</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 121)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CT</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>OE</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>RO</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(47 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CO</ogo:text>
+ <ogo:position>(27 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(3 148)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74568</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74569</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74568 (binary)</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74604</ogo:name>
+ <ogo:symbol>8x2IML</ogo:symbol>
+ <ogo:description>BCD up-down counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 200)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>27</ogo:name>
+ <ogo:text>27</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>25</ogo:name>
+ <ogo:text>25</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(1 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B0</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-17 121)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 131)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>26</ogo:name>
+ <ogo:text>26</ogo:text>
+ <ogo:position>(-17 141)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B4</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(-17 151)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B5</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-17 161)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B6</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(-17 171)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B7</ogo:text>
+ <ogo:position>(2 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(47 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q4</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q5</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q6</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q7</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A|B</ogo:text>
+ <ogo:position>(25 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 121)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(27 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>28</ogo:name>
+ <ogo:text>28</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(3 198)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74604</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %25 %26 %27 %28 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74605</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74604</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74606</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74604</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74607</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74604</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74620</ogo:name>
+ <ogo:symbol>BUF8nis</ogo:symbol>
+ <ogo:description>8 bit inverter Tri-State Buffer</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-20 140)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A8</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(27 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(27 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B4</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B5</ogo:text>
+ <ogo:position>(27 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B6</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B7</ogo:text>
+ <ogo:position>(27 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B8</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-17 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>BA</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-17 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>AB</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(3 138)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74620</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74621</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74620 (not inverter)</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74622</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74620</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74623</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74620 (not inverter)</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74640</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74245 (inverter)</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74641</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74245</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74642</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74245 (inverter)</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74643</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74245 (inverter - not inverter)</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74644</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74245 (inverter - not inverter)</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74645</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74245</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74668</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74168</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74669</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74168 (binary)</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74670</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74170</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74673</ogo:name>
+ <ogo:symbol>REG16S</ogo:symbol>
+ <ogo:description>16 bit Shift register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 190)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(25 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(25 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(47 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(25 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(25 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(47 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P4</ogo:text>
+ <ogo:position>(25 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P5</ogo:text>
+ <ogo:position>(25 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(47 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P6</ogo:text>
+ <ogo:position>(25 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P7</ogo:text>
+ <ogo:position>(25 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(47 91)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P8</ogo:text>
+ <ogo:position>(25 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(47 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P9</ogo:text>
+ <ogo:position>(25 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(47 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P10</ogo:text>
+ <ogo:position>(23 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(47 121)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P11</ogo:text>
+ <ogo:position>(23 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(47 131)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P12</ogo:text>
+ <ogo:position>(23 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(47 141)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P13</ogo:text>
+ <ogo:position>(23 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(47 151)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P14</ogo:text>
+ <ogo:position>(23 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(47 161)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P15</ogo:text>
+ <ogo:position>(23 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CL</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>M</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 121)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>r|w</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(-17 141)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>cs</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-17 161)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ck</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(3 188)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74673</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+
+ <ogo:part>
+ <ogo:name>74674</ogo:name>
+ <ogo:symbol>REG16P</ogo:symbol>
+ <ogo:description>16 bit Shift register</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 190)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P5</ogo:text>
+ <ogo:position>(1 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(-17 91)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P8</ogo:text>
+ <ogo:position>(2 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P9</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P10</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(-17 121)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P11</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(-17 131)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P12</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 141)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P13</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(-17 151)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P14</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(-17 161)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>P15</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(47 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>S</ogo:text>
+ <ogo:position>(27 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(47 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>M</ogo:text>
+ <ogo:position>(27 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(47 121)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>r|w</ogo:text>
+ <ogo:position>(24 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 141)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>cs</ogo:text>
+ <ogo:position>(27 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 161)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>ck</ogo:text>
+ <ogo:position>(27 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(3 188)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74674</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %21 %22 %23 %24 %1 %2 %3 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+
+ <ogo:part>
+ <ogo:name>74682</ogo:name>
+ <ogo:symbol>8x2CMPS</ogo:symbol>
+ <ogo:description>8 bit comparator</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 200)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(1 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B0</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 121)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 131)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 141)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B4</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 151)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B5</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(-17 161)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B6</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 171)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B7</ogo:text>
+ <ogo:position>(2 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A=B</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A+</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(3 198)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74682</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74683</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74682</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74684</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74682</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74685</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74682</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74688</ogo:name>
+ <ogo:symbol>8x2CMPS</ogo:symbol>
+ <ogo:description>8 bit comparator</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 200)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(1 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B0</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(-17 121)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 131)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(-17 141)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B4</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 151)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B5</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(-17 161)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B6</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 171)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B7</ogo:text>
+ <ogo:position>(2 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>19</ogo:name>
+ <ogo:text>19</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A=B</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>G</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(3 198)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74688</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %19 %20 %1 %2 %3 %4 %5 %6 %7 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74686</ogo:name>
+ <ogo:symbol>8x2CMPC</ogo:symbol>
+ <ogo:description>8 bit comparator</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(25 200)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(-17 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A0</ogo:text>
+ <ogo:position>(2 15)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(-17 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A1</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-17 31)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A2</ogo:text>
+ <ogo:position>(2 35)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(-17 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A3</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(-17 51)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A4</ogo:text>
+ <ogo:position>(2 55)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(-17 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A5</ogo:text>
+ <ogo:position>(1 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>17</ogo:name>
+ <ogo:text>17</ogo:text>
+ <ogo:position>(-17 71)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A6</ogo:text>
+ <ogo:position>(2 75)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>20</ogo:name>
+ <ogo:text>20</ogo:text>
+ <ogo:position>(-17 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A7</ogo:text>
+ <ogo:position>(2 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-17 101)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B0</ogo:text>
+ <ogo:position>(2 105)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-17 111)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B1</ogo:text>
+ <ogo:position>(2 115)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(-17 121)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B2</ogo:text>
+ <ogo:position>(2 125)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(-17 131)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B3</ogo:text>
+ <ogo:position>(2 135)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(-17 141)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B4</ogo:text>
+ <ogo:position>(2 145)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(-17 151)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B5</ogo:text>
+ <ogo:position>(2 155)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>18</ogo:name>
+ <ogo:text>18</ogo:text>
+ <ogo:position>(-17 161)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B6</ogo:text>
+ <ogo:position>(2 165)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>21</ogo:name>
+ <ogo:text>21</ogo:text>
+ <ogo:position>(-17 171)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B7</ogo:text>
+ <ogo:position>(2 175)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>22</ogo:name>
+ <ogo:text>22</ogo:text>
+ <ogo:position>(47 21)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A=B</ogo:text>
+ <ogo:position>(22 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(47 41)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>A+</ogo:text>
+ <ogo:position>(27 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>23</ogo:name>
+ <ogo:text>23</ogo:text>
+ <ogo:position>(47 61)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>G2</ogo:text>
+ <ogo:position>(27 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(47 81)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>G1</ogo:text>
+ <ogo:position>(27 85)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>24</ogo:name>
+ <ogo:text>24</ogo:text>
+ <ogo:position>(3 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(3 198)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(35 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74686</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %10 %11 %12 %13 %14 %15 %16 %17 %18 %20 %21 %22 %23 %24 %1 %2 %3 %4 %5 %6 %8 %9 @model</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74689</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74688</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74687</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74686</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74716</ogo:name>
+ <ogo:symbol>4PIC</ogo:symbol>
+ <ogo:description>4 bit BCD programmable counter</ogo:description>
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(-25 105)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>4</ogo:name>
+ <ogo:text>4</ogo:text>
+ <ogo:position>(-15 20)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>G</ogo:text>
+ <ogo:position>(2 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>6</ogo:name>
+ <ogo:text>6</ogo:text>
+ <ogo:position>(-15 40)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>CK</ogo:text>
+ <ogo:position>(2 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>8</ogo:name>
+ <ogo:text>8</ogo:text>
+ <ogo:position>(-15 60)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VS</ogo:text>
+ <ogo:position>(2 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>3</ogo:name>
+ <ogo:text>3</ogo:text>
+ <ogo:position>(1 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>PE</ogo:text>
+ <ogo:position>(5 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>5</ogo:name>
+ <ogo:text>5</ogo:text>
+ <ogo:position>(21 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D0</ogo:text>
+ <ogo:position>(25 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>11</ogo:name>
+ <ogo:text>11</ogo:text>
+ <ogo:position>(39 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D1</ogo:text>
+ <ogo:position>(45 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>14</ogo:name>
+ <ogo:text>14</ogo:text>
+ <ogo:position>(59 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D2</ogo:text>
+ <ogo:position>(65 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>2</ogo:name>
+ <ogo:text>2</ogo:text>
+ <ogo:position>(79 95)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>D3</ogo:text>
+ <ogo:position>(85 79)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>13</ogo:name>
+ <ogo:text>13</ogo:text>
+ <ogo:position>(106 19)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>R</ogo:text>
+ <ogo:position>(90 25)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>10</ogo:name>
+ <ogo:text>10</ogo:text>
+ <ogo:position>(106 39)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>MR</ogo:text>
+ <ogo:position>(83 45)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>12</ogo:name>
+ <ogo:text>12</ogo:text>
+ <ogo:position>(106 59)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>B</ogo:text>
+ <ogo:position>(87 65)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>16</ogo:name>
+ <ogo:text>16</ogo:text>
+ <ogo:position>(-2 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>VC</ogo:text>
+ <ogo:position>(5 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>7</ogo:name>
+ <ogo:text>7</ogo:text>
+ <ogo:position>(19 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q0</ogo:text>
+ <ogo:position>(25 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>9</ogo:name>
+ <ogo:text>9</ogo:text>
+ <ogo:position>(39 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q1</ogo:text>
+ <ogo:position>(45 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>15</ogo:name>
+ <ogo:text>15</ogo:text>
+ <ogo:position>(59 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q2</ogo:text>
+ <ogo:position>(65 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>1</ogo:name>
+ <ogo:text>1</ogo:text>
+ <ogo:position>(79 -1)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:text>Q3</ogo:text>
+ <ogo:position>(85 11)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Model</ogo:name>
+ <ogo:text>@model</ogo:text>
+ <ogo:position>(100 -10)</ogo:position>
+ <ogo:modify>no</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>U</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Model</ogo:name>
+ <ogo:value>74716</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>X_@refdes %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 @model</ogo:value> </ogo:property>
+ </ogo:properties>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74718</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74716 (binary)</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74748</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74148</ogo:description>
+ </ogo:part>
+
+ <ogo:part>
+ <ogo:name>74848</ogo:name>
+ <ogo:symbol>EQ</ogo:symbol>
+ <ogo:description>See 74148</ogo:description>
+ </ogo:part>
+
+ </ogo:parts>
+</ogo:library>
diff --git a/data/mime/Makefile.am b/data/mime/Makefile.am
new file mode 100644
index 0000000..b1f4daa
--- /dev/null
+++ b/data/mime/Makefile.am
@@ -0,0 +1,23 @@
+xml_in_files = oregano.xml.in
+xml_files = $(xml_in_files:.xml.in=.xml)
+@INTLTOOL_XML_RULE@
+
+mimedir = $(datadir)/mime/packages
+mime_DATA = $(xml_files)
+
+EXTRA_DIST = \
+ $(xml_in_files) \
+ oregano.keys.in
+
+CLEANFILES = $(xml_files)
+
+install-data-hook:
+if ENABLE_UPDATE_MIMEDB
+ $(UPDATE_MIME_DATABASE) "$(DESTDIR)$(datadir)/mime"
+endif
+
+uninstall-hook:
+if ENABLE_UPDATE_MIMEDB
+ $(UPDATE_MIME_DATABASE) "$(DESTDIR)$(datadir)/mime"
+endif
+
diff --git a/data/mime/Makefile.in b/data/mime/Makefile.in
new file mode 100644
index 0000000..af1a6d2
--- /dev/null
+++ b/data/mime/Makefile.in
@@ -0,0 +1,450 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = data/mime
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(mimedir)"
+DATA = $(mime_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGFMT_OPTS = @MSGFMT_OPTS@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OREGANO_CFLAGS = @OREGANO_CFLAGS@
+OREGANO_LIBS = @OREGANO_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SCROLLKEEPER_CONFIG = @SCROLLKEEPER_CONFIG@
+SCROLLKEEPER_REQUIRED = @SCROLLKEEPER_REQUIRED@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+UPDATE_DESKTOP_DATABASE = @UPDATE_DESKTOP_DATABASE@
+UPDATE_MIME_DATABASE = @UPDATE_MIME_DATABASE@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+xml_in_files = oregano.xml.in
+xml_files = $(xml_in_files:.xml.in=.xml)
+mimedir = $(datadir)/mime/packages
+mime_DATA = $(xml_files)
+EXTRA_DIST = \
+ $(xml_in_files) \
+ oregano.keys.in
+
+CLEANFILES = $(xml_files)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/mime/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu data/mime/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-mimeDATA: $(mime_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(mimedir)" || $(MKDIR_P) "$(DESTDIR)$(mimedir)"
+ @list='$(mime_DATA)'; test -n "$(mimedir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(mimedir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(mimedir)" || exit $$?; \
+ done
+
+uninstall-mimeDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(mime_DATA)'; test -n "$(mimedir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(mimedir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(mimedir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(mimedir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-mimeDATA
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) install-data-hook
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-mimeDATA
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) uninstall-hook
+.MAKE: install-am install-data-am install-strip uninstall-am
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-data-hook install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-mimeDATA install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am uninstall uninstall-am uninstall-hook \
+ uninstall-mimeDATA
+
+@INTLTOOL_XML_RULE@
+
+install-data-hook:
+@ENABLE_UPDATE_MIMEDB_TRUE@ $(UPDATE_MIME_DATABASE) "$(DESTDIR)$(datadir)/mime"
+
+uninstall-hook:
+@ENABLE_UPDATE_MIMEDB_TRUE@ $(UPDATE_MIME_DATABASE) "$(DESTDIR)$(datadir)/mime"
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/data/mime/gnome-oregano.png b/data/mime/gnome-oregano.png
new file mode 100644
index 0000000..aa2e1f1
--- /dev/null
+++ b/data/mime/gnome-oregano.png
Binary files differ
diff --git a/data/mime/gnome-oregano.svg b/data/mime/gnome-oregano.svg
new file mode 100644
index 0000000..14b892c
--- /dev/null
+++ b/data/mime/gnome-oregano.svg
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 11 Build 196, SVG Export Plug-In . SVG Version: 6.0.0 Build 78) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
+ <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+ <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+ width="127.47" height="111.343" viewBox="0 0 127.47 111.343" overflow="visible" enable-background="new 0 0 127.47 111.343"
+ xml:space="preserve">
+ <metadata>
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?><x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 3.0-29, framework 1.6'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
+
+ <rdf:Description rdf:about='uuid:324eb2c0-1160-11d9-a4e0-0050e466842e'
+ xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
+ <pdf:Producer>Adobe PDF library 6.66</pdf:Producer>
+ </rdf:Description>
+
+ <rdf:Description rdf:about='uuid:324eb2c0-1160-11d9-a4e0-0050e466842e'
+ xmlns:tiff='http://ns.adobe.com/tiff/1.0/'>
+ </rdf:Description>
+
+ <rdf:Description rdf:about='uuid:324eb2c0-1160-11d9-a4e0-0050e466842e'
+ xmlns:xap='http://ns.adobe.com/xap/1.0/'
+ xmlns:xapGImg='http://ns.adobe.com/xap/1.0/g/img/'>
+ <xap:CreateDate>2004-09-25T17:14:19-03:00</xap:CreateDate>
+ <xap:ModifyDate>2004-09-28T15:08:54Z</xap:ModifyDate>
+ <xap:CreatorTool>Illustrator</xap:CreatorTool>
+ <xap:MetadataDate>2004-09-25T17:22:43-03:00</xap:MetadataDate>
+ <xap:Thumbnails>
+ <rdf:Alt>
+ <rdf:li rdf:parseType='Resource'>
+ <xapGImg:format>JPEG</xapGImg:format>
+ <xapGImg:width>256</xapGImg:width>
+ <xapGImg:height>224</xapGImg:height>
+ <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgA4AEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7&#xA;FXYq7FXYqslmihjMkrrHGv2nchQPmTirHtR8/eXrOqxytdyD9mEVX/gzRfurkxjLIQLFtR/MnV56&#xA;rZRJaIejf3j/AHsOP/C5YMYZiASO38w6rHqcGoyXDzzQNyAkYkEHZl9gRttkuEVSaevaXqVrqVlH&#xA;eWzco5B07q3dW9xmORTURSLwIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd&#xA;irsVdiqlcXNvbxmW4lSGMdXkYKv3nGlY9qP5g6BaVWF3u5B2iHw192ag+6uTGMshAsX1H8yNZuKr&#xA;Zolmh6EfvH+9hx/4XLBjDMQDGrzUL69fnd3Ek7djIxanyr0yYFMqY7rvnPytoKk6rqUFs4FfQLc5&#xA;SPaJOTn7sBkAgkB5xr//ADkTpkPKLQtOkunFQLi6PpR17EIvJmHzK5WcncxM2G2f54+cj5htL/UJ&#xA;1bTopKz6dAixxtGwKtStXJANV5Md8jxm2PEX1L5H87R2qQahZSi70m9VXKqdmU9HWvRh7/I5bICQ&#xA;bCLexWV7a3trHdWsgkhkFVYfqPgRlBFNJCvgV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux&#xA;V2KuxV2KoW91PTrFeV3cxwDqA7AE/IdT9GEAlIDHNQ/MnRYKraRyXjjoQPTT72+L/hcmMZZCBYzq&#xA;H5h6/c1WApaR/wDFa8mp7s1fwAyYxhkIBjtzd3V1J6lzM80n80jFj+OTpkx3XfPHlLQgw1TVIIJV&#xA;624b1Jv+RScn/DAZAIJDznXf+citNi5R6Hpsly+4We6YRJXxCJyZh8yuVnJ3MTN5xr/5seeta5LN&#xA;qLWlu3/HvZ/uF+XJT6hH+sxyBkSwMixe0s77ULtLazglu7yYn04IUaWVzSpoqgsT3yKGYXn5P+b9&#xA;M8q3nmXWY49Ns7RUYW8rcriT1XWNKRpyCfE4B5sCPDJnGQLKaYvpfl/XNWhvZtMsZ7yHTYDdX8kK&#xA;M6wwr1kkIHwqMghmn5U/mhL5Xuv0dqTNLoNw1T1Zrdz1kQd1P7S/SN+s4SplGVPqjyr5un00JdWM&#xA;i3Wn3Kh+AasbqwqHRhWhp3y0xBbCLep6H5l0vWYq20nGdRWS3fZ1+juPcZTKJDUY0muRQ7FXYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYqpzXFvAnOeVIk/mdgo+84qk17528t2lQbsTuP2YAZK/7IfD+O&#xA;SECyESx++/NAbrYWXyknb/jRP+asmMTIQY7f+dPMd7UNdtCh/Yg/dj7x8X45MQAZCISSWUktJK9T&#xA;uzux+8knJJYnrn5peRdG5Lc6rFNMK/uLX9+9R2Pp1VT/AKxGRMwEGQee67/zkYfij0LSv9W4vW/5&#xA;lRn/AI3yByMTN55rv5m+eNa5Ld6rLHAxP+j2x9COh7ER8Sw/1icgZEsDIsbtrW6u7hLe2ie4uZTx&#xA;jhiUu7MeyqtSTkUM/wDL35D/AJiawFkls00q3cchJfv6bdaU9JQ8qn/WUZZHFIpES9R8uf8AONfl&#xA;SyKy63dz6vKDvCv+iwEEdCELSkjxEg+WXx046shF7T5O/LW0tIBFpWnQaRYNx9R44ljaTiKAmgDS&#xA;Gn7TffhM4w5JsBkfmr8p/KnmjQoND1UXB06O4S6uIoZPSNy0YYKkzgc+FW5UQruBmNOZlzYE2nGi&#xA;eVfL3lfRxp3l7TILHT46l7SBAPUBFGLk1Z3p3YknKyofH3/ORn5CN5Vun82+VoDL5RvW53EEYr9R&#xA;lc/Zp2hY/ZP7J+E/s1IKHn/5ffmrrPlJhaMv13R3bk9o5IaOvVoW/ZPiDsfbrkozpkJU+ivKHnfR&#xA;9ftk1HQ7w+rFQvGDwnhY9nWtR8+h7HLwQWwEF635Z/MCOcpaauRHNsEu+iN/r/yn36fLK5Y+5hKH&#xA;czYEEVG4PQ5UwbxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvEtR1rUtQuXnubh2LEkJyPFR4KOgGZIAD&#xA;eAx7zF5r0PQoVudbv0tVkJEZkLM7kbniqhnansMSQFJpJD+bP5di3M/6bh4Dtxl5/wDIvhz/AAwc&#xA;YRxBjmrf85B+UbYMun211qEg+y3EQxn/AGTkv/wmROQMeNhGs/8AOQXm275Jptvb6bGfsvT15R/s&#xA;n+D/AITInIUGZYJrPmvzJrRJ1TUri7UmvpSSH0wfaMUQfQMgTbElD6Voms6vOYNKsbi/mUAtHbRP&#xA;KVBNKtwBoPc4gWh6L5f/AOcdfPeosr6kbfR4OQ5es4mm4kV5LHDyX6GdctjhkWXCXpXl/wD5xw8k&#xA;2AV9VluNYnAIdXY28BPZlSI+oPpkOWx046p4Xp/l/wApWFhEbbQNJito2I5raQqgYgUq5QCp92y3&#xA;0x8mWwZZY+R9Smo1062ydx9t/uG345XLOByQZMm03yxpNhR1i9aYf7tl+I19h0GY8ssiwMk2ytDs&#xA;VdirH9Vt7WEz2l9At1oupK0dzayKHj+MUdSpqCGHbKyeE+TMbh8nfnd/zi/qegvc+ZPI8Tal5aYG&#xA;ebT0Je4tF6twqS00Q8R8SjrWhbLGDwnR9a1TRr+O/wBMuXtbuL7MiHt3VgdmU9wdsQVfQv5c/nDp&#xA;vmT09O1ThY63sEFaQ3B/4rJ+y3+Qfor2vjO22Mre3eV/Ot3pRW2uuVxp/QL1eP8A1K9v8nGULWUb&#xA;em2d7a3tulzayCWFxVXX/PY5SRTUQr4FdirsVdirsVdirsVdirsVdirsVeOebNJbTNbuIQtIZCZY&#xA;D24Oa0H+qajMiJsN0TYfOX/OR1lcjUdGvtzavDLAOtFkRgx+lg34ZXk5sJvG8rYOxVln5a+VfLXm&#xA;jzHFpOu6+nl9Jiot55YuccrE0MRl5BYWP7LMCv4AkUr6x8uf84neRtI4SSRJqU6kkTXzNOCD2MQE&#xA;cJ9qplgMB0ZbPQ7D8tLKyto7aCdLe2iHGK3t4VjjRR2VQaAfRk/HrkE8SZQ+RtHShkeWU9wWAH/C&#xA;gH8cBzyRxJjbeXtFt947OOo6FxzP/D8srOSR6ospgqqoAUAAdAOmQQkHn7znpvkvyhqfmXUQXt9P&#xA;i5rCpo0krEJFGp8XdgK9uuKvmTQPKv8AzkD+dU8XmTVdak0HytNIGt4I5pbZGhDb/VoIg3Kg2Ekv&#xA;XxOKszP+PPyq8+aRoR1mTW9J8wmSPQ3u5CBJNAB/oNzGS0cRfmqxTwqvxEc1ZaqFXvei6tZ6xpNn&#xA;qtmWNrexJNEHHFwHFeLr+yy9GHY4qjcVQ9/Zpd2rwN1YVVvBh0OCQsJBpjFhqdzpszQuC0YYiSI9&#xA;iNiRlEZGLYRbx/8AO3/nGrSvNsM/mnyGkdprprJeaUKRw3TdSUGwimP/AALexqxvBtrIp8hXlnfa&#xA;fey2l5DJa3trIY54JVMckciGhVlNCrAjCh7B+WX51tH6OjeaZeUeyW2qud17BZz3H+X/AMF45bCf&#xA;ezjJ9C+XvMl7pE4ntXElvJQyQk1R18RTofAjLJRBZkW9X0XXLDWLQXFo+4oJYj9tCezD+OY8o01E&#xA;UmGBDsVdirsVdirsVdirsVdirsVSDzl5eGr6YTEv+m29XgPdv5k/2Xb3ycJUWUTT5/8AzE8or5n8&#xA;sXWl0C3i/vrJ224zx149enIVQ+xy2QsNkhYfJ08E0E0kEyGOaJikkbCjKymhUg9CDmO0qeKuxV9L&#xA;f843/wDOR8+mT2vkzznd8tIakOk6tMd7U9Egmc9YT0Vj9jofh+yq+vQQRUbg4q3irsVdirxz/nLL&#xA;TtQvfyav2swWW0uba5u0UVJgV+J+hWdWPsMVS789/wA65Pyu0jy9o3lexR2vIUa3nYfuIrK34IEi&#xA;2Kl2WgGxCjehqMVeYeQbrz/+dn5waT5y1mD6n5Y8sTpdxlQyWsAt3EqQxu395K8iKZG8PAcVxV9P&#xA;/l7R/KlvcovCC/nvL+1UilLe9vJrmDban7qVcVZJirsVY55lsOLreIPhf4Zf9bsfpynJHq2QKUWl&#xA;5cWkolhbi3cdiPAjKwaZkWxH83fyU8t/mpYNf2Rj0vzlbx0hvDUJMFHwx3AUEsnYOByX3GxyIytq&#xA;MafE/mXyzrvlnWrnRdcs5LHUbVuMsEgpt2ZT0ZG6qw2I6ZJizf8ALD83bvy68WlawzXGhEhY33aS&#xA;2r3Wm7J4r2/Z8DOE6ZRlT6T0HX5ITBqmk3KvHKoeKVDyjkRt96bMDlxAIbeb1zy15ostbt/hpFeR&#xA;is1uTUjtyU91/VlEo01SjSdZFi7FXYq7FXYq7FXYq7FXYq7FXm/5heXfqtz+lbZaQXDUuFHRZT+1&#xA;8n/X88uxy6NkC+Wvz48hCGT/ABXp8dI5SseqIvQOdkmp/lfZb3p4nBkj1RMdXjGVMEZo8FlPq9jB&#xA;fu0djLcRJdSR0DrEzgOy1DCoWtNsVZP+aP5Xa/8Al7r76bqI9W0dm+o3yiiSotD0/ZYBhUfdtkjG&#xA;k0+hf+cWfz5bUI7fyB5nuK3sS8NBv5WNZkUf7yyMT9tR/dnuPh6gVih9OYq7FWmZUUsxCqoqWOwA&#xA;xVjWsX8erxyaRHEs1neK0FwsihlkjkBV1Kn9kqd8pM7NBsEa5sQ1H8pdQGkw+X2isPNPlixdZtGs&#xA;dYlmtLyweM1jjivoI7oyRL9lQ8XLj8LMw2y5rZIfLfmTW7dbHzAbLTNBACzaHpTSTCdB/uqa6kjt&#xA;j6J/ajSFeQ2LcSVKrMFVVUKoCqooqjYADsMVU7q7tbS3e5u5kt7eIcpJpWCIo8WZiAMIBPJIFvPd&#xA;d/5yA/LPSWaNL99SmQ0ZLGMyD6JHMcR+h8yYaPIelNscEixHUv8AnKLyxPHJBDol5JC4IDyPFG3X&#xA;Y8QZB79ct/k6RG5DYNMe9IYP+cgNBZv3+mXUa+MZjc/cSmUnsqfQhs8Esk0T84PJN7Mnp6ibG4qO&#xA;AulMVD/r7xj6WzHnocsd6v3MDiKb/mF+XflL82/Ly2140dtrsKE6TrcIVyO/EkEepEx+0lfcUOVx&#xA;l0PNx5Rp8Red/JHmLyV5iuNB163MF5Aao4qY5oyTxliag5I1Nj9BoQRk2Cd/lr+aGoeUrkWtxyut&#xA;Dmas1tWrREneSGvfxXofxyUZUyjKn03oWuwXMNtq+j3QkicCS3uIj/n8iD8jl+xDbzeueVPN9vrM&#xA;Yt5qRaii1dOiuB1ZP4jKZQpqlGmR5Bi7FXYq7FXYq7FXYq7FXYqoX1lb31nLaXC8oZlKuPn3HuOo&#xA;wg0oLxDzJ5fSKS90XUYxNC6tFKpHwyRuKV/2SnMgbhv5h8geefKdz5W8x3OlS1aFT6lnMf8AdkDE&#xA;8G+fY+4OY8hRaSKSDAh97apoOkfmf+Tmi6nqMYna906CW6dac0l9MCSRG3o8UvKh8K122y3GQfSW&#xA;Q7nxV5t8r615K8zvp9wzR3Fq6z2N5HVOaBqxTRnsajt0YU7ZCUTE0UEPtn/nHj85ofzE8sfVtQdU&#xA;80aSqpqUWw9ZOiXSDwfo4HRvYrkUPWSQoJJoBuSfDFWK6zrDXbmGE0tlP/Bkdz7ZjznbbGNK3li2&#xA;53MlwRtEOK/Nv7MliG6JlkuXNbsVea/mn+dejeS1bT7NV1HzAy1FqD+7gBHwtOw+8INz7VBzK0+l&#xA;OTc7RbsWEy36Plnzn+Y3mXzNeGbWr6S8cEmK1U8YIq9kjX4V+dK+ObOIhj2iHLAjHYJT5c0LzN5q&#xA;1u30fSLeSW5uGAIRW4xoWCtLIwB4ovL4mOV5MxAs7MZTLO/Mf5iWfke9byv5CtrT0tNb0dS1+6to&#xA;rm5vrlNpWrKJAkIcUVV+YO+YwiZbyagL3KD822mk+bfJh8/aDZx6XqenSx2nmzSrQFIA020F5Cg2&#xA;RJW+Fl/m+ljKEjE1fuSCQaYHZTXr05DlH/M2x+jxzMxykW+BLKPLfnHzF5cuRNpN48K8gzwE8onp&#xA;/Mh2+kb+Bw5cEMg9QZSiDze1x6t5H/Pbyz/hfzIi6Z5ot1L6bdihdZabvATTkpoPUiPUe4DDU59L&#xA;LH5xcLLhMdxyfJ3n7yD5j8jeY59B16D0riL4oZlqYp4iSFliYgclanzB2NCMxmhH/lx+Y+oeUNQ4&#xA;tyuNHuGH1yzr07erFXYOB/wXQ9iJRlTKMqfT2ia3ZajZ2+q6TciWCSkkE8ZoQR+Ksp6g7jMgG23m&#xA;9a8oeco9VUWd6RHqCj4T0WUAdR4N4j7spnCmuUaZVlbB2KuxV2KuxV2KuxV2KuxVh/5i6H9asF1K&#xA;Ff39oKS06tET/wAanf78sxy6M4F85/nP5L/xB5Za9tY+WqaUGmhoPieL/dsf3DkPcU75PJGwymHz&#xA;PlDU+3P+cPPMyar+V02iSsGm0K8lh9M7/wCj3P79Cfm7SD6MVS78+Pyqj8wabcWkCAarZcrjSJj1&#xA;ZW3MJJ7PTj/rAHMsjjjfVnzD5X8jec9e8iebbTXtMJivbGQrPbPVVljrSWCUdaMBQ+B36jMRg+99&#xA;P8/6X5t8r6dq+iuxsdShEzctnRgSrwt/lI6lWpttttlWSXRsgOqjlLNlnlyIJpqv3kZm+48f+Ncv&#xA;xjZqnzTTLGLzn86fzPHkrQVhsWVtf1EMlkpo3pIPtzsp/l6KD1bxAOZWlweJLfkG7Dj4jvyfMflP&#xA;ypq3nLWblRcpDHFHJe6tqt259OGIGryyMd2JJ+n5VObbJkEB9zmykIhO20P8lLUm3bzFqt4/QXdr&#xA;YxxQV8eEr+pTKxLL/NA+LEGfcHpP5Rab5Y0C113zD5Y8y299ygS0WHV4G0+OK4kflCss7Fg3Lidk&#xA;65i6mUpERlH5btOUk0CHlPm78tfzEOsTXuqaLNez6rO8/wBbsoxcwyyTuXJR4OajkSSBsfbMqGTE&#xA;RV8m6MoEM4/Kv8p9T0a9v9P8zXFlpcHmfT5dPXSbi4R7x2kHOKWO3UneNkr8TAjMXNkjziCaPwaZ&#xA;yHMdEPb6V/zj1p3lnUYL7UL3VNXtpdpY45bW5YghQkEb1hCVry51PX/Jy0yzmQoABneQnySJvJnk&#xA;DzFp9/N5J1O/TUtOt5LyTSNYjiEk0MIrIYZYPg5KP2Tucs8WcSOMCj1DPjkPqef21zcWtzFc20jR&#xA;XELCSKVDRlZTUEH2OZJAIotr6LsIPLP57fl3+ifMYWDzFp9Uh1GNR6sM/H4ZU6VSQD406NQ9wGGh&#xA;1GLw510PJ1+bFwnbk+QPO/kjzF5K8xXGg69bmC8gNUcVMc0ZJ4yxNQckamx+g0IIylpR/wCXn5h6&#xA;l5P1LmnKfSp2H12yr17epHXYOB9/Q+0oypINPqHRtZstUsLbVNMnEttOokhmQ0IPht0ZTsR2OZAN&#xA;twNvV/JvnJNRVbC/YLfqKRyHYSgf8bfrymcKa5RZdlbB2KuxV2KuxV2KuxV2KrZI0kjaORQyOCrq&#xA;ehBFCMVeKa5prabqtzYtuInIQnuh3U/SpGZMTYbwbfIv5o+Vh5c843lpEnCyuD9asgBQCKUn4R/q&#xA;OGX6MokKLTIUXpX/ADh75v8A0P8AmXNoc0gS18w2rRKpNAbm2rLCf+A9RR7nIofXXnXTPrGnC7Qf&#xA;vbU1bxMbbH7uuX4JUaZRL4v/AOch/IY0vWo/M1jHxsdVbjeKooEugK8v+eqiv+sD4454UbWQRP8A&#xA;zjl+aS6Bqx8ratLx0jVJAbOVukF21FAJ7JLsD4NQ7VY5iZI2sTT6qyhtZnowA0u3p/LX7ycyYcmq&#xA;XNG5Ji+JvzS83S+avO+o6nzLWiyG3sFPRbeElUoN6ct3PuTm/wBPj4IAOzxw4Y0yn8i9EHmSHzX5&#xA;YNz9TGqWEVLkUZ1aGdWFI6ryU1+LfKdXPh4Zdxa80uGi831vS5NJ1m+0uSRJpLC4ltnljrwZonKF&#xA;lrQ0NMyoSsA97cDYt67o/lbSNP8Ayatl843kmh2d/qzai0Kx1vLqGO39OKGGM9OR+LkwoNj0OYUs&#xA;hOX0b0KaDIme2+yRt+eGo6LDFpnkWwh0LRbd+fGUC6uLg9CZ3k5AcqdEpTs2WflBLeZssvBB3luU&#xA;58oeYvy/81+c9I1W7iPlfzZHewTM8FZNPvWEg5JxY8oZJB8I34+NcryQnCBA9Ua+IYzjKMSOYYJ+&#xA;aXlvUdB886xDdWj21vcXdxcWDMPgkt5JWaNkboRxIB8DtmTp5iUA245XEJ1+WlqdA0TW/Pl9+6t7&#xA;e2m07Rlbb6xfXSGOig/aWNCS39hyvOeIiA959zHIbIi85zKbWffkprkunedobYOVh1FHhffo6AyR&#xA;tt3qtB88wO0cfFjvrFryi4vcvzN/LXRfzV8rNp93wtfMdipfStS47q3dWpuY5KUcdvtDpmmhO3Xy&#xA;jT4R8w+X9X8va1d6LrFs1pqVjIYriB+oYdwRsysN1YbEbjJsWQ/lx+Y+oeUNQ4tyuNHuGH1yzr07&#xA;erFXYOB/wXQ9iJRlTKMqfTuk6rZanYW+padMJrW4USQTLUbfrBB6jscyAbbQXqnkzzmL0Jp2ovS8&#xA;G0Mx6SjwP+X+v55TOFbhrlFmOVsHYq7FXYq7FXYq7FXYq8+/MzSXE1vqiCsbL6E1OzCpU/SKj6Mu&#xA;xno2QL5r/wCchPLkl3odlrkC1bTXMVzQf7pnIAY/6rqB/sscg6rMPEfL2uXug69p2t2J43mm3MV1&#xA;BWtC8LhwDTsaUPtlLW/THQ9Y03zH5estWsz6un6rbR3EVe8cyBuLU7gGhHjiCryH8wfJtvrOlar5&#xA;avNlmUpFKRUo4+KGUD2PFvwzPPri2cw+KNZ0fUNG1W60vUIjDe2khimjPiOhB7qw3U9xvmCRTW+r&#xA;fyA/NUea9DGiapNy8xaVGAzuatc24+FZqncuuyyfQ3c0x8ka3bIyfROgSB9LiHdCyn/gif45Zj5M&#xA;Zc1DzleyWPlDXL6IlZLXT7qZCOoaOFmFOnhl2IXIDzWA9QfCWdE7REadf31hfQXlhM9veQOHgmiJ&#xA;Dq4OxBGCQBFFSLfRcmg6dOU80TaNaXH5qHT1vJPLMkyiNpAaC8NsACZioDGPl/w2+avjP03+7vn+&#xA;hw+I8r9Pe89/NLVtZ1T8vfI9/rEskup3k2syXrSji3qR3SRheO3AIo4hQABmTp4gTkBy2bcYAkQP&#xA;J7R+VPl3yLJ+VFhBwttR064X6xqclyilTdnaXmJB8JiPwKfAAjxzB1E5+IehcfLKXG+cbmz02D80&#xA;TaaHMp09NYWPT5UJZRH9ZATixJLBegNd+ubQEnHZ505gJ4d+57FdvLqWreb4fPKRr+XNve3C2l/d&#xA;lkngugxWmnsoZ3LMDyUAj8VOCNhHg+uvxbj8gOH6vxzeefnc+qxarp9hHFFB5Qt7cHyuto3O2kt2&#xA;A5S8/wBqVj9uu/zryOTpaon+Lq24arz6vK7m/iiqq/HJ4DoPnl08oDOU6ZH+Vr3E3nPRnr8ZvE7b&#xA;cRu34VyjNK8MiWN3Evq+GaSGVZYzxdDVTnNg04rCfz//ACdtvzJ8s/p/RIlTzhpUZCRjY3UK1ZrZ&#xA;j/N1aI+PwnrUZMZWGkinxA6PG7RyKUdCVdGFCCNiCDkkM2/LH8ybzylqIguGabQ7lv8ASrcfEYyd&#xA;vVjH8w7juPoyUZUyjKn03YX9re2sF9YzLNbTKJIJ4zUEHcEHMgG216j5K84/X1XTtQcC9UUhlP8A&#xA;u0Dsf8sfjlM4Vu1yizDK2DsVdirsVdirsVdiqD1bTYdS06eym+zMpAb+VuqsPkd8INFINPDNb0aO&#xA;eG90fUYuUciyW1zGfAgq1D+o5k8w3c3yB5p8vXfl7X7zSLrd7V6JJSgeM/Ejj/WUg5jEU0kU+sv+&#xA;cNfzA/SflW98mXclbzRHNzYAndrOdqsoHX91MTX/AF1GBD2Pzto3rQDUYV/eQjjOB3Ts3+x/V8sy&#xA;ME62ZRL5t/Pj8tDr2mf4i0uLlq+nRn6xEg+K4t13O3d49yPEVG+2TzY73CZB87aDruq6Dq9rq+k3&#xA;DW2oWbiSCZex6EEHZlYEhlOxGxzEYPvX8ifzR0nz35ee4tisN/Dx/SFhX4oZiKGldzG9Ko3hUdQc&#xA;hEVsyJtnPm6xk1DyprVhEC0l3YXMCKOpaWFkA/HLsZqQPmsDRD4QzonaM+/Ky0sLBNZ87ajCtzb+&#xA;WIo3s7V/sy39y5S2qO6owLGm42OY2oJNQH8X3NWQ3Ue9iV35i1u6119emvZf0vJL9YN6rFZBIDsV&#xA;ZacePRadBsMuEABw1s2CIqnsmqax5c88/lt5dvPO15JYakLq7srfW4IuUMc/wOfrMKdRKgUkrShF&#xA;dhXMGMZY8hENxts44iYyPCwy7/LL8z7KL9FaR62r6Fqrq0c+lTtNp9xxNVeTiQi8SOsoFMyBnxnc&#xA;7Ed/Ns8SPM82TeQ/y/8AKegecdHs/MV+uq+aZLmMwaJYMHhtXQ+oXvJhsTGFJ9Ne43qpynNmlKJM&#xA;RUe/9TCcyQa5MD/MvztrPmnzNey3t00tjbXEyadbjaKKEOQvFRtVlA5N1OZODEIRFNuOAiE18rXM&#xA;nmX8vPMflC8YNJo9nLrmhTtXlC1sQ1zCp68ZkY0HStTlOoHDISHXYteUUbHueO5Bi9g/IXQHuPM6&#xA;3rL+60uFpGbt6swMar9zMfoyvXz4MXD1LPJtGn0NmicZG6VqDWV0H6xN8Mq+3j9GSjKiiQt86/8A&#xA;OWf5OR2FyfzE0CEfo++dRrkMY+GOeQ0S5FNgspoH/wAuh/azJaXzRir0T8qPzPn8sXi6bqTtJoNw&#xA;246m3dj/AHif5P8AOv0jfrOEqZRlT6TtrlJEiubaUOjhZIZo2qCDurKw+8EZe2vUPJnnAakgsb5g&#xA;t+g/dudvVA/42HfKZwprlGmW5WwdirsVdirsVdirsVef/mToXF49YhXZqRXQHiNkf/jX7stxy6Nk&#xA;D0fNn59eTP0hpEfmKzjrd6aOF4FG72xP2j/xjY1+RPhhyR6rMPKvyt8+XfkXzzpfmODk8NtJwvoF&#xA;6y2snwzR77V4mq1/aAOUtb9HtPv7DVNNt7+zkW5sL2JZreVd1kilUMpHsVOKvP8AzHoraXfFUBNr&#xA;LVoG9u6n3XM7FPiDYDb5U/PT8rDol6/mXR4aaPdv/pkCDa2mY9QB0jkPTsG27qMozY63HJjIPP8A&#xA;yR538xeSvMVvr2g3BgvIDR0NTHNGSOUUq1HJGpuPpFCAcoYvvz8pfza8u/mR5dXUdOYQahAFTVNL&#xA;dgZLeQj6OUbUPB6b+xBAVfMn5teUJfK3nnUbH0+FlcSG609qfCYJiWUD/UNUPyzfafJxwBdlinxR&#xA;t3kLzRoNhY6x5e8yRTPoOvJCJ7i14me3mtnLwyorbEVajDw8emObGSRKPMLOJNEcwy6H8rfylk8p&#xA;S64PPZ4RzBTP9WoUViFETWVfrBkrX4gaU3pTfKDqMvFXD+Pe1+JO64U10Kb8sV/LbWrCyhvPNMHl&#xA;65i1iS2uybFZHlH1YtEYucnpovxOrZCYyeICfTxbd6JcXEOlsNl/PHznA0UWgraeX9NgNY9OsLaI&#xA;RHt+89RXZyR1PfMj8pD+Lctngx67s1/Ljzr5cvjq/nDWPLVrp135ctTJJrWlloC0t0DbpGLYn0jL&#xA;Lyb4yevzzHz4pCoiV8XQteSB2APNKLfyj+QV55SutTj8yX1lcrKOEd36TXkdSFCG1jH70HryQ7dy&#xA;KEZM5MwlVBPHkuqYrqvnbyP5W0LU9I8lR3t7q2tWzWWoa3fhIljtJSPUit4ULbyAULNuO2RyCciO&#xA;KtuiJ2Tu850fTZ7u5iWONpJJHCQRKKs7saKAO++XY4/xHkGcI9X1d+XflBPK/l2O0ehv5z6184oR&#xA;6hFOAP8AKg2+8980er1Hizvp0ackrLJ8xWDsVSXzJ+a/5aeX7C60LznqFvJZ3UbRT6bQ3EpSQbq8&#xA;MYdgrdiQMuxktc6fEPnSDyjD5huv8JXVxdaC7lrM3cfpTop/YfchuPZu/cDLWCR4q9S/KX82E8vj&#xA;9C67K36FNWtrjizm3bdivFQzFGPh0P05ZCdM4yp7hovnbyvqcqHStXt5rgENGiShZQR0IQlX/DLR&#xA;IFnYL0qx/M3UYlRLu1juAoALoTGxp3NeYr9GQOMMTBkmmefdAvWWOSRrSU7cZgAtf9cVX76ZAwIY&#xA;mBZGrBgGUgqRUEdCMgxbxV2KuxV2KqN5aQXlrLazryhmUo49j4e47YQVDxTXdGayvLnTLxBIm6MG&#xA;FVkjYdaHsynpmQDYbwbfIv5jeTJvKnmWayAJsJqzafKamsLH7JP8yH4T9/fKJRotJFPov/nD782l&#xA;uLV/y81ab/SLcPcaDI53eL7c1sK903kUeHLsoyKH0pqumQalZvbTbV3R+6sOhGShIxNpBp5Zreip&#xA;S50rU4FlhlVop4XFUkjYU79QRmcCJBs5vkf82PyxvPJererAGm0G8c/Ubk78GNT6Eh/nUdD+0N/E&#xA;DDyY+E+TWRTHvJvnPzF5O16DXNAu2tL6A0NN45Y6gtFKnR0am4/jlaH1pB5l8p/85A+ShFaGPTPP&#xA;ekoZlsJG3qdnCMaepBLQfF1RqV/ysjTZ/Dl5NuLJwnyeD6npmoaXfzafqNu9re27cJoJQVZT8j49&#xA;Qe+buMgRYdgDaGySWdfk7540jyf5plvdXt5LjT721eyn9OjcFkdGLNGdpF+ChX/azH1OIzjQ5tWW&#xA;BkNky86/lT5pvPN9zceWtIF7oeqzNcaTdacFazEEjVUFxRIuPQhqAdtshi1ERH1Hcc7RDKK3O6H8&#xA;+XeneWvLNr+X+l3Ed3cxzfXvMt9CQyPeceKW6MOqwDY/5XgajDhBnLjPwTAEniPwebTzCJK05Odk&#xA;QdScyJSpsJpS03RL7Ub1Ikiee5nakdvGCzsfkMo4K9UmsR6l9Fflj+VsXl5E1TVAsmsMtI4hRkt1&#xA;PZT3emxYfIeJ1Gs1viemP0/e1ZMl7Dk9GAJIAFSegGa9qTG10DUJ6Ep6KHvJsfu65MYyWJkEl89f&#xA;l5q2rWS2tt5uPlyydaXUkFupuZDXcJO0q+mKfyry9+2WwxfFiZEvD9Y/5xY8lAObTzZfzXTEs0r2&#xA;scikmtS1XiY7965kjBIo4S8K89+T9O8saiLOz1601o1IcW4YPGRt+8A9SMH2EhPtlco11QQxjIod&#xA;irsVZl5T/Nbzf5dmRVumvrAEc7G6YuvHwRzVo/am3iDkhIhIkQ+k/LPmKw8xaJbavYE+hcA/A32k&#xA;dTxZGp3UjLwbDcDbOvJ3mq5028itJ5C+nTMEZWNfTLHZl8BXqMjONsZRt6rlDU7FXYq7FXYqxbz5&#xA;5e/SOn/XYFreWgJoOrxdWX6Oo+nxyyEqZxNPAPzL8kQ+bPLslsgVdStazafKe0lN0J/lkAofoPbL&#xA;JxsM5C3zBY3uq6HrEN5avJZapps4kicfDJFNC1Rse6sOmY7S/QT8lPzc0v8AMjypHfIUh1uzCxax&#xA;YA7xy02kQHf05KVU/MdRirLfMOgxarbbUS7jH7mQ/wDEW9j+GWY8nCfJINPLPMflyy1KyutF1q1E&#xA;tvKPTngk+8EEdCOqsPmMzCBINnN8j/mV+WmreStUKOGuNHnY/Ub+mzdT6clNlkAHTv1HthTgYlrI&#xA;pjOja1q2iapbarpN1JZajaOJLe5hbi6sP1g9CDsRscgh9Q+S/wAx/IH50Wlv5f8AO8cejeekURWO&#xA;rw8Y1uiPshSfh5k9Ym2P7BFaC/DqJY+XJsx5TFLvNv8Azj35+0OR5LCAa3Yg/BNaf3tO3KAnnX/U&#xA;5fPNnj1kJc9i5kM8T5POr7TNS0+Yw39pNaTDYxTxtEwP+q4BzKEgeTaDara67rdnaSWdpqFzb2kv&#xA;97bxTSJG1f5kUhTgMATZC0ERo/lHzRrLhdK0m7vfFoYXZBXuzgcR9JwSyRjzKDIDm9O8qf8AOMnm&#xA;y/kjm8wXEOkWp+3EpE9yR1oAh9Na+PM08Mw8muiPp3aZaiI5bvRvLnkjy55YR4tKt6SGqyXcnxzO&#xA;Af2n7DbotB7Zpc+onkPqLVKZPNmGn6Bc3IEk37mE9Kj4j8hkI4yWsypMri60LQk+MgTEbKPjlb+n&#xA;4DMjHhvkw3LG9S876hPVLRRaxfzfaf7zsPuzLjgA5shF4x59/PvyvoTyxQznXdXBIaGF6xo3/Fk5&#xA;5KKHstT4gYyyxjsFMqeBecvzb86eag8N5d/VdOev+4+1rHER4Oal5P8AZEj2zGlkMubAlhmQQ7FX&#xA;Yq7FXYq+o/yd0G80byNaRXimO4u3e7aJhQostOAI8eKgkZfjFBtiNmcwQyTTRwxiskrBEHizGgyb&#xA;J7xmK0OxV2KuxV2KuxV5b568tfo29+u2yUsblug6RyHcr8j1GXwlbbE2+a/zz/LosH816XFuAP0r&#xA;Cg7DYTgD7n+/xyOSPVE49Xm35e+f/MHkTzNba/okvGaI8bi2Yn0riEn44ZQOqt+BoRuMqa36A/ln&#xA;+Zvlr8wvLsesaNLxlWi3+nuR61tLTdHA6g/st0YfSAqm3mDy9BqsPJaR3iD93L2I/lb2/VluPJw+&#xA;5INPMPMXly0vrS60XW7NZraZeE9vKNiOoIIoQQd1ZTUHcHMvaQbOb5W/ND8ntW8nTSX1pzvvLrMO&#xA;F5QGSHkaKlwFAA32DgcT7E0zDyYzH3NZFPPASDUbEdDlaH0j+Sf/ADlffaOINA8/SSX2lCiW+uby&#xA;XMA6ATgVaZP8r7Y/yuyr63sL/S9Y02G9sZ4b/TrtA8M8TLLFIh7gioIxVcmm6dG4dLWFHU1VljUE&#xA;H2IGHiKbKJwIUrqb0baSQblVPEeJ7D6TgJoJCVaXokNqn1m84mRRyoxHFAN6mu1chDGylJJ9d86M&#xA;S1vphoOjXJ6n/UB/XmdjwdSoi8p89fmb5Z8pRGTVrozahKOcVjEfUuJK/tEE/Cp/mYj6ctnkEUk0&#xA;+cfPf5zebPNZktlk/RukNUCwt2ILr4TSbNJ8tl9sxJ5TJgTbAcrQrWtndXUnp28TSv3CjYV2qT0A&#xA;+eGMSTQSATyTGTSLSxQNqdwfWIqtpBQybjbkx+FevgfbLZYhH6jv3MzDh5pfdTxSvWGBYIh9lFJY&#xA;/wCyZqknKi1qGBWaeUfym83eZOE6QfUdOah+u3QKBl8Y0+2/saU98kIEshEl7F5W/JDyloskV1d8&#xA;9VvoiHWSf4YlYdCsK7f8GWy0YwGYgHo0MM00ixQxtLI2yogLMfkBk2TO/JPk28t71dR1KL0vSFba&#xA;FqFix25MB0p2r3yqc+gYSkz3Kmt2KuxV2KuxV2Koe/sba/s5bS5XnDKvFh39iPcdRhBpQXjnmHQJ&#xA;tLvJbG6USQuD6bkVWSNtuh+4jMiJsNwNvlz82vyxl8tXrappsZfQbl9gAT9Wdv8Adbf5BP2D9B96&#xA;ZxprlGmMeSfPPmbyVr0Wt+XrtrW8j+GResU0ZILRTJ0dDTp9IoaHIMX3Z+TH53+X/wAy9Kb0gLHz&#xA;BaKDqOlM1SBsPWhP7cRbbxU7HsSqznV9EstUh4TrxlUfu5l+0v8AUe2ThMxSDTzzXPL1zZB7e9hW&#xA;a0mDRlivKKRGFCrA7bjqpzMjMSDYDbwj8w/+ceLC+Euo+UitleGrvpbmlvIev7pj/dHrsfh/1RlU&#xA;8HcxMXz/AKlpmoaZfTWGoW8lreQNxlglUqynr0PYjcHvmMRTBmn5WfnT5z/Lm/D6VP8AWdJkflea&#xA;NcEm3lrsWXvHJQfbX6ajbAr7d/Kr83/Kn5kaO15o8hgv7cKNQ0qYj14GPQ7bOjU+F1696GoCrOcV&#xA;WyGNULyEBE+Is2wAG9T8sVeeebPNiXKygSi30uAFpJXIQMF3LuTSij3zMx4xEWWwCnzX+ZH/ADkL&#xA;xaXS/JxBIqkusOKivf6uh/4m30Dochkz9AgyeE3V1dXdzJc3Urz3EzF5ZpGLuzHqWY1JOYzB1vbT&#xA;3MoigjMkjdFUV+k+AwgEmgkC2RWXlSCCM3GqSgKnxNGpooG32n/Db78zoaMAcWQ0HIjgoXI0o6h5&#xA;kjiiNppKCGEVBmAoT2qo7f6x3+WV5NTQ4cY4R9rGWXpHYMfZmZizEszGrMdyScxGhOvK3k7zB5nv&#xA;fquk2xk4ketcN8MMQPd37fLqewwgEpAt775J/Jny35eCXV6o1XVBQ+tMo9KMjf8AdxGor/lNU+FM&#xA;ujjAbBF6JDDLNKsUKNJK5oiKCWJ9gMmyZnof5b3EwWbVpDAh3FvHQyH/AFm3C/jlcsncwM2c6dpO&#xA;m6bF6dlbpCvRiB8Tf6zH4j9OVEksCbRmBDsVdirsVdirsVdirsVS3X9CtNZsWtpxxdfigmHVHp1+&#xA;XiMlGVJBp43r+gPA1xpWq26yRyKUlicco5I22qK9VOXgghu5vm38y/yevfLxm1XRg11oY+ORPtS2&#xA;w/yv5kH83bv45TKFNUo0wXy75i1vy5rNtrWiXb2Op2bc4LiOlQehBBqrKw2ZWFCNjkGL7u/Iv89N&#xA;I/MjSPq9xwsvNNkgOoaeDRZFG31i3ruYyeo6odj2JVeoyxRSxtHKgeNtmRhUH6DiCrEtc8lgBrjT&#xA;B03a2Jr/AMAT+o5k48/QsxJ5N5//AC20DzjZG31GIwahCCtrfotJoj/Ka05JXqh+ih3y6eMSSRb5&#xA;S85eS9c8pau+m6rFRvtW9wlTFMn88bED6R1GYUomJosCFPyf5w8weUPMFtr2g3Jtb+1Ox6pIh+1F&#xA;Kv7SN3H8cih+hP5V/mXo35h+U4Nd0791OP3Wo2Jbk9vcKAWQnaqmtUam496jFUr/ADY/MHR/LmmS&#xA;m/uhb2kIBuWG7yOd0hjUbsx8P4A5kYgIjiLId74t/Mn83Nc85XD20Zax0JG/c2Ctu9Ds85H2m706&#xA;D8cryZDJBNsCytCb6P5dub/jNLWG0r9s/aYf5AP6/wBeZODTSyeQbceIy9zI5rjSdCteCKFZhVYl&#xA;3kkI7sT29z9HhmdKWPAKH1OSZRxjbmxPU9XvNQk5TNSMfYhX7K/1Pvmsy5ZTNlxJzMjugcrYPT/y&#xA;6/JfUNdEWp65zsdIajxQ0pPOvalfsIf5jue3jk4wtlGNvftJ0jTNIsY7DTbZLW0iHwRRigr3J8Se&#xA;5O5y8Cm0Bk/l7ylqWsuHQehZg/FcuNvkg/aORlMBBlT0zRPLml6PFxtY6ykUkuH3kb6ew9hlMpEt&#xA;RNppkUOxV2KuxV2KuxV2KuxV2KuxV2KpdrehWGsWnoXS/Eu8Uy/bQ+IP6xhjKkg08o8w+XLvSLk2&#xA;10okgkB9KUD4JF77Hv4jMiMrbQbfNf5tflK2kNLr2gxFtKYl7u0QVNuT1dB/vr/iPy6VThTCUXm2&#xA;ha7q+gava6xo909lqVk4kt7iM0ZWH4EEbEHYjY7ZWwfeP5F/nppH5kaR9XuOFl5pskB1DTwaLIo2&#xA;+sW9dzGT1HVDsexKr1TFUh8xeWYdRRri3AjvVHXoJKdm9/A5djy8Ox5MhJ5H538laZ5n0i40XV4S&#xA;hqTFLQerBMvR0r0I7+I2zKlESDMi3yD5x8oat5T12bSNSSkifHBMB8E0JJCyp7Gn0Go6jMGUSDRa&#xA;yGSfkv8Am1qX5beaxqcStc6Vdr6Oq2CkfvY+qutSB6kbbqfmKiuRQk35g/mFr/njXZdU1WQiPkxt&#xA;LNTWOFGNSBsOTH9pj19hQCUpWkljGRQyXy/5cEgW8vl+A/FDAf2vBnHh4Dv8uudpdJxeqXJycOG9&#xA;zyTDW/MMNipt7ekl10p+zHt38T7ff736jViHphz+5sy5uHaLDpp5Z5WlmcvI5qzHqc1ZN7lwibdB&#xA;BPcTxwQRtLPKwSOJAWZmJoAANyTgV71+Wf5LW+miLV/Msa3GobPBp5o0cJ61k7O/t0Hv2ujDvbIx&#xA;73riqzMFUEsTQAbkk5YzZ15X/L8sEvNZUgdY7PofYyU6f6v3+GVSydzCU+5n0caRoqRqERRRVUUA&#xA;A7ADKmtdirsVdirsVdirsVdirsVdirsVdirsVdiqE1TS7PU7N7S7TnG/Q/tK3ZlPYjCDSQaeReY/&#xA;Ll1pF01tcqJLeQH0pafBIncEePiMyIyttBt80/m7+VH6FaTXtDjJ0l2rd2iiv1dm/aX/AIqJ/wCB&#xA;+XSqcKYSjTzjQtd1fQNXtdY0e6ey1KycSW9xGaMrD8CCNiDsRsdsrYPvf8j/AM7dG/MnQwrFLTzN&#xA;ZRr+lNOrSvQevBXdomP0qdj2JVenYqkXmXy4mpRGeABb5BsegcD9lvfwOXYsvDseTIF4R+bn5fL5&#xA;u8tTWqR8dasOU2muwAb1B9uElqUEoXj1FG4k9Mvyw4hsyIt8gujo7I6lXUlWVhQgjYgg5hNa3FU+&#xA;8saMLqX63cLW3iNEU9Hcb7jwX/PvmXpNPxmz9Ib8GLiNnkmXmHzD9W5Wlo1bk7Syj9j2H+V+r59M&#xA;jVaqvTFtzZugYgSSanrmscNE6Zpl/ql/Dp+nwtcXdw3CKJOpP8AOpJ6Yq+kvy1/KvTvKkC3t3xu9&#xA;dkX95cdUhBG6Q1H0Fup9htl8IU2xjT0O0tLm8uEt7aNpZpDREUVJyZLJ6f5W8l2ukqtzdUn1Aj7X&#xA;VI/ZPf8AysolO2qUrZNkGLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVQeq6XZ6nZSWl0nKN/&#xA;st+0rdmU+Iwg0kGnkHmLy7c6VcvZ3iCWCUEI5FUlQ7HY/iMyAbbQbfMv5t/lW2gTNrOjRM2iytWe&#xA;Eb/VnJ2Hj6bdj26eGUzhTXKNMG8readd8ra7a65od01pqNo3KORehH7SOvRkYbMp65Bi/QL8n/zZ&#xA;0T8yfLC6lZ8bfU7bjHq2m8qtBKQaEdzHJxJRvo6g4qzzFWL+bvLv1hG1C1X/AEhBWdB+2o/aH+UM&#xA;yMOStiyiXxF/zkD5RXRPOn6St04WWuK1yKUAFwpAuAO+5ZXPu2QzRqSyDzOKJ5ZUijHKSRgqL4km&#xA;gGVMWX6vqEejadFY2285TijdOK9Gkp4sa0982ebJ4UBCPNy8k+CPCObDiSSSTUnqc1jiI7RNE1PW&#xA;9Th03TYTPdzmiqOgHdmPZR3OEC1AfTf5eflzpnk+wIUi51WcD63ekUr39OOv2UB+/qe1L4xpujGm&#xA;daXpV7qd2traRl5G3Y/sqvdmPYDCTSSaeseXPLNjolvxjHqXTj99cEbn2HgvtlEpW1GVpxkWLsVd&#xA;irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVQOsaRZ6rYvaXS1Vt0cfaRuzL74QaSDTx/zD5e&#xA;n06eWwv4llglUqCwrHLGdjsdunUZkAghtBt8vfmv+V83li6Op6arS6FcPsNy1s7HaNz/ACH9hvoO&#xA;/Wmcaa5RpIvy4/MLXvIPmm21/R3q8fwXdqxIjuIGI5wyddjTY9jQ9sgxfof5I856J5y8s2XmHRZf&#xA;UsrxK8Gp6kUg2eKQCtHRtj94qKHFU9xV84f85deSIz5G/TluqrHY3cUrbbr6xMLIvgGaRW/2OWyn&#xA;cd+YTez5BsJkhvreZyQkcqOxG5orAnIQlUgViaILd9eS3l3JcyfakNQPAdAv0DGcjI2VlKzavomi&#xA;anrepw6bpsJnu5zRVHQDuzHso7nABaAH0/8Al9+X2meUNM9OOk+pzgG9vSN2PXgleiDsO/U5fGNN&#xA;0Y0zrRtFvtWvFtrVK/78kP2EXxY4SaSTT1rQ9CsdHsxb2y1dqGaY/adh3Pt4DMeUraSbTLAh2Kux&#xA;V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kpdrmh2WsWTW1yKEbxSj7SN4j+IwxlSQae&#xA;OeY/LrW73Gk6rAssMqlHRhWOWNtqjxBzIBBDaDb5X/M/8t7nyjqXrW4aXRLpj9UnO5Rupik9x2Pc&#xA;fTlEo01yjTOf+cUvzQn8seeY/Ld5LTQ/MTiEqxosV5SkMor05/3beNV/lyLF9x4q8g/5yvvrW2/J&#xA;LWIZivqXs9nBbV6+oLqOY8ff04m+jFXwViqK0zTL/VL+HT9Pha4u7huEUSdSf4AdST0xV9Qflz+X&#xA;lh5P0wqCJ9VuQDe3dNttxHHXoi/j1PYDIjGm6MaZ/omiXusXq21stAN5ZT9lF8T/AAGGUqSTT1zR&#xA;tGstIsltbVaAbySH7Tt3ZjmOTbSTaPwIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs&#xA;VdirsVdiqVeYvL9prVkYZfhnSpt5u6Mf+NT3GSjKkg08V80+V4biC80LW7cSRSDhNGe46q6MPvUj&#xA;L9iG3mHyf588k6j5Q1trKeslrJWSwu6UEkYP4OvRh/AjKJRpqIp7F+Wf/OYHmHy/pkWk+bLFtft7&#xA;deFvqCSCO7CqKKspYFZfDkaN4lsihhn55fntqf5nX1rDHanTdA08l7WxLiR3mYUM0rAKOXHZVH2R&#xA;XxOKvL7e3nubiO3t42lnmYRxRIKszMaKoA7k4q+mfys/La38p6d9au1WTXbtB9ZlG4iQ0PoofYj4&#xA;j3PsBl8I02xjT0nSNIvNVvktLVas27ufsovdm9skTTImnruh6HZaPZC2thVjvNMftO3if4DMeUra&#xA;SbTHAh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpF5r8sw61Z/DR&#xA;L6EE28vj/kN7H8MlGVMoyp4L5/8AJFv5i0e60a/T0byIk20rD4oZ12B+XZvEZdIWGwiw+TtX0jUd&#xA;H1GbTtRha3u7duMkbfgQehBG4I65jkNKDxV73+R35dmxth5m1WGl5cLTTI3G8cTDeWnZpK7f5Pzy&#xA;7HHq2Qj1ez6fp91qF5HaWqc5pTQDsB3JPYDLCaZkvXfL3l+10WxEEXxzPRriY9Xb+g7DMeUraSbT&#xA;XIodirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirEvPPlYahbn&#xA;ULRP9OgX94o6yoP+Nl7fd4ZZCVbM4yeMeZPJ3lvzJAsWsWSXJQUim3SVO/wyKQwHtWmWmILMi0i0&#xA;b8nPIWlXi3cdi1zNG3KL6zI0qqe1E2U07cgciMYQIBnEUUksqRRKXkkIVEG5LE0AGTZPW/KflmHR&#xA;bOr0e+mA9eUdu/BfYfjlEpW1SlafZBi7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FXYq7FXYq7FXYq7FXnfm/yPcrcSX+lR+rDIS0tsn2kY9Sg7g+A6ZdCfe2RkxCLTtQlm9GO&#xA;2leXp6aoxb7qZZbO3ofkzyYdOI1DUADekfuoeoiB6kkdWP4ZTOd8muUmYZWwdirsVdirsVdirsVd&#xA;irsVdirsVdirsVf/2Q==</xapGImg:image>
+ </rdf:li>
+ </rdf:Alt>
+ </xap:Thumbnails>
+ </rdf:Description>
+
+ <rdf:Description rdf:about='uuid:324eb2c0-1160-11d9-a4e0-0050e466842e'
+ xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/'>
+ <xapMM:DocumentID>uuid:5b2fe784-0f30-11d9-85f1-0050e466842e</xapMM:DocumentID>
+ </rdf:Description>
+
+ <rdf:Description rdf:about='uuid:324eb2c0-1160-11d9-a4e0-0050e466842e'
+ xmlns:dc='http://purl.org/dc/elements/1.1/'>
+ <dc:format>image/svg+xml</dc:format>
+ </rdf:Description>
+
+</rdf:RDF>
+</x:xmpmeta>
+ <?xpacket end='w'?>
+ </metadata>
+ <g id="Layer_1">
+ <g>
+ <path fill="#AC9BB2" d="M116.146,53.311c0,0-28.893-31.216-49.47-43.77c0,0-7.116-6.189-8.165-9.541
+ c0,0-43.711,14.932-54.197,16.231c0,0-9.104-1.825-0.859,10.207c0,0,9.117,13.099,10.15,18.856c0,0,11.223,24.509,23.251,32.915
+ c0,0,24.128,24.107,27.505,30.087c0,0,5.149,7.889,11.188-1.723c0,0,26.621-32.253,49.518-40.096
+ C125.066,66.478,134.444,56.414,116.146,53.311z"/>
+ <path d="M110.765,54.776c0,0-26.371-30.238-44.887-41.538c0,0-6.396-5.57-7.34-8.589c0,0-39.308,13.482-48.743,14.657
+ c0,0-8.761-2.743-0.802,9.185c0,0,8.174,11.784,9.092,16.965c0,0,10.062,22.061,20.904,29.636c0,0,21.779,21.735,24.833,27.127
+ c0,0,5.419,6.784,10.117-1.538c0,0,23.995-29.05,44.623-36.116C118.562,64.565,127.241,57.567,110.765,54.776z"/>
+ <path fill="#FFFFFF" d="M18.075,22.304c0,0,33.983-9.696,38.999-13.145c0,0,6.244,8.138,9.441,9.892
+ c0,0,22.086,17.06,32.353,33.079c0,0,3.826,4.401,5.722,4.544c0,0-27.273,11.886-33.271,21.382c0,0-3.542-5.772-7.203-8.204
+ c0,0-18.891-12.319-27.319-24.809C36.797,45.043,25.205,26.731,18.075,22.304z"/>
+ <path fill="#BEAED4" d="M18.075,22.304c0,0,37.578-10.982,38.999-13.145C57.074,9.159,47.479,21.511,18.075,22.304z"/>
+ <path fill="#BEAED4" d="M71.319,78.055c0,0,10.4-11.517,34.46-21.2C105.779,56.855,79.29,59.546,71.319,78.055z"/>
+ <path fill="#FFFFFF" d="M66.07,80.752c0,0-3.484-5.093-14.62-12.507c0,0-12.939-9.522-20.991-23.583
+ c0,0-6.322-11.266-10.88-15.163c0,0,3.696,27.301,20.968,40.195c0,0,21.264,19.888,22.666,25.39c0,0,3.98,4.902,6.232,1.604
+ C69.445,96.688,73.675,92.938,66.07,80.752z"/>
+ <path fill="#D8CEBF" d="M58.044,12.869c0,0,5.902,7.083,9.47,9.445c0,0,18.516,13.68,27.727,28.171c0,0,2.906,4.375,5.08,5.182
+ c0,0-17.84,2.77-25.761,12.57C74.56,68.237,83.6,52.912,58.044,12.869z"/>
+ <path fill="#552173" d="M70.556,63.111c10.546-2.578,17.8-11.507,16.097-20.106c-1.727-8.632-12.14-14.307-23.158-12.515
+ C52.562,32.427,45.57,41.768,47.776,51.188C49.952,60.572,60.101,65.836,70.556,63.111z"/>
+ <path d="M107.532,56.957c0,0-4.73-6.188-14.403,0.764c0,0,7.363-1.158,9.633,1.418L107.532,56.957z"/>
+ <path d="M55.228,7.213c0,0,0.008,4.022-1.056,6.188c0,0,5.249-1.347,5.16-4.18l-1.629-1.94L55.228,7.213z"/>
+ <path fill="#D8CEBF" d="M42.724,52.248c0,0-8.934-10.593-9.77-12.848c0,0,4.053-7.326,11.985-11.696
+ C44.939,27.703,36.779,39.669,42.724,52.248z"/>
+ <path fill="#BEAED4" d="M19.579,29.5c0,0,5.854,4.138,11.996,16.503c0,0,9.161,14.194,19.875,22.243
+ c0,0,16.916,8.626,19.09,23.054c0,0-9.754-14.077-19.241-19.29c0,0-12.633-7.096-22.314-24.417
+ C28.984,47.594,24.558,35.935,19.579,29.5z"/>
+ <path fill="#321344" d="M73.323,60.062c0,0,11.553-3.571,11.854-15.559l-6.258,3.991C78.919,48.495,78.691,55.375,73.323,60.062
+ z"/>
+ <path fill="#321344" d="M55.763,36.297c0,0,8.988-8.089,19.435-2.204l-5.986,3.182C69.211,37.276,62.54,34.09,55.763,36.297z"/>
+ <path fill="#552173" d="M75.253,90.35c0,0-2.806-12.836,29.989-25.781C105.242,64.568,80.432,78.269,75.253,90.35z"/>
+ <g>
+ <g>
+
+ <ellipse transform="matrix(0.4969 0.8678 -0.8678 0.4969 73.4716 -34.5971)" fill="none" stroke="#FFFFFF" cx="66.574" cy="46.066" rx="5.16" ry="14.04"/>
+ <path fill="none" stroke="#FFFFFF" d="M66.573,46.066"/>
+ </g>
+ <g>
+ <path fill="none" stroke="#FFFFFF" d="M71.891,45.996c0.156-7.529-2.096-13.601-5.031-13.56
+ c-2.936,0.039-5.443,6.173-5.601,13.702c-0.156,7.527,2.097,13.599,5.031,13.56C69.226,59.658,71.734,53.524,71.891,45.996z"
+ />
+ <path fill="none" stroke="#FFFFFF" d="M66.573,46.066"/>
+ </g>
+ <g>
+ <path fill="none" stroke="#FFFFFF" d="M69.327,41.517c-6.571-3.674-13.133-4.618-14.652-2.105s2.577,7.528,9.147,11.204
+ c6.571,3.675,13.131,4.617,14.652,2.105C79.994,50.208,75.896,45.193,69.327,41.517z"/>
+ <path fill="none" stroke="#FFFFFF" d="M66.573,46.066"/>
+ </g>
+ <g>
+
+ <ellipse transform="matrix(0.4973 0.8676 -0.8676 0.4973 76.3231 -22.8764)" fill="#FFFFFF" stroke="#FFFFFF" cx="57.903" cy="54.427" rx="0.695" ry="0.723"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M57.904,54.427"/>
+ </g>
+ <g>
+
+ <ellipse transform="matrix(0.4973 0.8676 -0.8676 0.4973 70.1129 -45.1581)" fill="#FFFFFF" stroke="#FFFFFF" cx="74.023" cy="37.921" rx="0.694" ry="0.723"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M74.023,37.92"/>
+ </g>
+ <g>
+
+ <ellipse transform="matrix(0.4971 0.8677 -0.8677 0.4971 63.325 -36.4085)" fill="#FFFFFF" stroke="#FFFFFF" cx="63.073" cy="36.427" rx="0.694" ry="0.724"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M63.074,36.428"/>
+ </g>
+ <g>
+
+ <ellipse transform="matrix(0.4973 0.8676 -0.8676 0.4973 84.1341 -36.889)" fill="#FFFFFF" stroke="#FFFFFF" cx="73.901" cy="54.161" rx="0.695" ry="0.722"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M73.902,54.162"/>
+ </g>
+ <g>
+
+ <ellipse transform="matrix(0.4971 0.8677 -0.8677 0.4971 64.9622 -26.2987)" fill="#FFFFFF" stroke="#FFFFFF" cx="55.169" cy="42.895" rx="0.694" ry="0.723"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M55.168,42.895"/>
+ </g>
+ <g>
+
+ <ellipse transform="matrix(0.4972 0.8676 -0.8676 0.4972 81.4217 -26.2138)" fill="#FFFFFF" stroke="#FFFFFF" cx="63.328" cy="57.144" rx="0.695" ry="0.722"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M63.327,57.143"/>
+ </g>
+ <g>
+
+ <ellipse transform="matrix(0.4963 0.8682 -0.8682 0.4963 72.2595 -34.6006)" fill="#FFFFFF" stroke="#FFFFFF" cx="65.947" cy="44.97" rx="0.695" ry="0.722"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M65.946,44.971"/>
+ </g>
+ <g>
+
+ <ellipse transform="matrix(0.4971 0.8677 -0.8677 0.4971 72.8806 -33.4321)" fill="#FFFFFF" stroke="#FFFFFF" cx="65.283" cy="46.159" rx="0.694" ry="0.721"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M65.283,46.16"/>
+ </g>
+ <g>
+
+ <ellipse transform="matrix(0.4973 0.8676 -0.8676 0.4973 73.2933 -34.3089)" fill="#FFFFFF" stroke="#FFFFFF" cx="66.251" cy="46.09" rx="0.694" ry="0.724"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M66.25,46.09"/>
+ </g>
+ <g>
+
+ <ellipse transform="matrix(0.4967 0.8679 -0.8679 0.4967 73.2137 -35.3296)" fill="#FFFFFF" stroke="#FFFFFF" cx="67.068" cy="45.46" rx="0.695" ry="0.724"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M67.069,45.459"/>
+ </g>
+ <g>
+
+ <ellipse transform="matrix(0.497 0.8678 -0.8678 0.497 74.17 -35.0339)" fill="#FFFFFF" stroke="#FFFFFF" cx="67.303" cy="46.458" rx="0.695" ry="0.723"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M67.305,46.458"/>
+ </g>
+ <g>
+
+ <ellipse transform="matrix(0.4965 0.868 -0.868 0.4965 74.2046 -33.5804)" fill="#FFFFFF" stroke="#FFFFFF" cx="66.049" cy="47.176" rx="0.695" ry="0.722"/>
+ <path fill="#FFFFFF" stroke="#FFFFFF" d="M66.05,47.176"/>
+ </g>
+ </g>
+ <g>
+ <circle stroke="#000000" stroke-miterlimit="3.8636" cx="47.601" cy="25.252" r="4.619"/>
+ <path fill="#FFFFFF" d="M47.637,29.214c0,0-1.742-0.559-2.267-2.049c0.312-1.549,2.267-2.402,2.267-2.402v1.07
+ c0,0,1.951-0.882,2.237-2.437c-0.55-1.481-2.237-1.948-2.237-1.948v0.77c0,0-3.621,0.197-3.798,3.765
+ c-0.159,3.228,3.216,3.847,3.216,3.847c2.188,0.232,4.359-1.117,4.986-3.306c0.702-2.452-0.715-5.01-3.167-5.713
+ c-0.327-0.094-0.57-0.152-0.897-0.173c0,0,3.395,0.501,3.346,3.732c-0.05,3.573-3.686,3.873-3.686,3.873V29.214z"/>
+ </g>
+ </g>
+ </g>
+ </svg>
diff --git a/data/mime/oregano.keys.in b/data/mime/oregano.keys.in
new file mode 100644
index 0000000..6668fa2
--- /dev/null
+++ b/data/mime/oregano.keys.in
@@ -0,0 +1,4 @@
+application/x-oregano:
+ open=oregano %f
+ view=oregano %f
+ icon-filename=@icondir@/gnome-oregano.png
diff --git a/data/mime/oregano.xml.in b/data/mime/oregano.xml.in
new file mode 100644
index 0000000..e8791d1
--- /dev/null
+++ b/data/mime/oregano.xml.in
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
+ <mime-type type="application/x-oregano">
+ <sub-class-of type="application/xml"/>
+ <_comment>Schematic file</_comment>
+ <magic priority="60">
+ <match type="string" value="oregano" offset="20:140"/>
+ </magic>
+ <glob pattern="*.oregano"/>
+ </mime-type>
+</mime-info>
diff --git a/data/models/12AX7A.model b/data/models/12AX7A.model
new file mode 100644
index 0000000..10b45bd
--- /dev/null
+++ b/data/models/12AX7A.model
@@ -0,0 +1,10 @@
+* Vacuum tube triode 12ax7a
+.SUBCKT 12AX7A A G K
+Bca ca 0 V=45+V(A,K)+95.43*V(G,K)
+Bre re 0 V=URAMP(V(A,K)/5)-URAMP(V(A,K)/5-1)
+Baa A K I=V(re)*1.147E-6*(URAMP(V(ca))^1.5)
+Bgg G K I=5E-6*(URAMP(V(G,K)+0.2)^1.5)
+Cgk G K 1.6P
+Cgp G A 1.7P
+Cpk A K 0.46P
+.ENDS 12AX7A
diff --git a/data/models/1N4148.model b/data/models/1N4148.model
new file mode 100644
index 0000000..3db259c
--- /dev/null
+++ b/data/models/1N4148.model
@@ -0,0 +1 @@
+.model D1N4148 D(IS=0.1P RS=16 CJO=2P TT=12N BV=100 IBV=3.867E-10)
diff --git a/data/models/1N750.model b/data/models/1N750.model
new file mode 100644
index 0000000..d32aca1
--- /dev/null
+++ b/data/models/1N750.model
@@ -0,0 +1,3 @@
+.model 1N750 D(Is=880.5E-18 Rs=.25 Ikf=0 N=1 Xti=3 Eg=1.11 Cjo=175p M=.5516
++ Vj=.75 Fc=.5 Isr=1.859n Nr=2 Bv=4.7 Ibv=20.245m Nbv=1.6989
++ Ibvl=1.9556m Nbvl=14.976 Tbv1=-21.277u)
diff --git a/data/models/DiodeBridge.model b/data/models/DiodeBridge.model
new file mode 100644
index 0000000..fc099b9
--- /dev/null
+++ b/data/models/DiodeBridge.model
@@ -0,0 +1,8 @@
+* Diode Bridge
+.model mod1 d
+.SUBCKT DiodeBridge 1 2 3 4
+d1 3 4 mod1
+d2 1 3 mod1
+d3 2 4 mod1
+d4 1 2 mod1
+.ENDS DiodeBridge
diff --git a/data/models/Makefile.am b/data/models/Makefile.am
new file mode 100644
index 0000000..64f7ff0
--- /dev/null
+++ b/data/models/Makefile.am
@@ -0,0 +1,13 @@
+oreganomodeldir = $(datadir)/oregano/models
+
+oreganomodel_DATA = \
+ 1N750.model \
+ 1N4148.model \
+ 12AX7A.model \
+ DiodeBridge.model\
+ TLC555.model \
+ UA741.model \
+ PNP.model \
+ NPN.model
+
+EXTRA_DIST = $(oreganomodel_DATA)
diff --git a/data/models/NPN.model b/data/models/NPN.model
new file mode 100644
index 0000000..02c5b18
--- /dev/null
+++ b/data/models/NPN.model
@@ -0,0 +1 @@
+.model NPN NPN(Is=1.0e-16)
diff --git a/data/models/PNP.model b/data/models/PNP.model
new file mode 100644
index 0000000..c3b3b84
--- /dev/null
+++ b/data/models/PNP.model
@@ -0,0 +1 @@
+.model PNP PNP(Is=1.0e-16)
diff --git a/data/models/TLC555.model b/data/models/TLC555.model
new file mode 100644
index 0000000..b39b458
--- /dev/null
+++ b/data/models/TLC555.model
@@ -0,0 +1,56 @@
+.SUBCKT TLC555 1 2 3 4 5 6 7 8
+EREF 15 1 8 1 .5
+GSOURCE 8 3 8 26 12.5E-3
+GSINK 3 1 26 1 67E-3
+VD1 8 27 DC .8
+VD2 28 1 DC .85
+VREF 30 1 DC 1.2
+C1 29 1 700E-15
+RREF2 30 1 100E3
+RREF 15 1 100E3
+ROUT 3 1 100K
+R1 6 1 500E9
+R2 2 1 500E9
+R3 8 5 75E3
+R4 5 9 75E3
+R5 9 1 75E3
+R6 10 11 1E3
+R7 13 14 1E3
+R8 8 12 150E3
+R9 4 8 500E9
+R10 20 19 1E3
+R11 16 17 1E3
+R12 8 18 150E3
+R13 8 21 150E3
+R14 22 23 1E3
+R15 8 26 150E3
+R16 24 25 1E3
+R19 7 1 500E9
+R20 29 26 1E6
+D1 1 11 DMOD
+D2 12 11 DMOD
+D3 12 14 DMOD
+D4 1 14 DMOD
+D5 18 17 DMOD
+D6 1 17 DMOD
+D7 18 19 DMOD
+D8 1 19 DMOD
+D9 21 14 DMOD
+D10 21 25 DMOD
+D11 1 23 DMOD
+D12 18 23 DMOD
+D13 26 25 DMOD
+D14 1 25 DMOD1
+D15 3 27 DMOD
+D16 28 3 DMOD
+E1 10 1 6 5 1000
+E2 13 1 2 9 1000
+E3 16 1 15 12 1000
+E4 22 1 15 21 1000
+E5 24 1 15 18 1000
+E7 20 1 4 30 1000
+M1 7 29 1 1 MOSMOD
+.MODEL MOSMOD NMOS (LEVEL=1 KP=1 VTO=1 RD=5)
+.MODEL DMOD D (RS=1E-6)
+.MODEL DMOD1 D (RS=1E-6 IS=1E-9)
+.ENDS
diff --git a/data/models/UA741.model b/data/models/UA741.model
new file mode 100644
index 0000000..605d662
--- /dev/null
+++ b/data/models/UA741.model
@@ -0,0 +1,52 @@
+.subckt UA741 1 2 3 4 5
+* connections: | | | | |
+* | | | | |
+* non-inverting input | | | |
+* inverting input | | |
+* positive power supply | |
+* negative power supply |
+* output
+*
+*
+ c1 11 12 8.661E-12
+ c2 6 7 30.00E-12
+ dc 5 53 dx
+ de 54 5 dx
+ dlp 90 91 dx
+ dln 92 90 dx
+ dp 4 3 dx
+
+*SPICE2:
+* egnd 99 0 poly(2) (3,0) (4,0) 0 .5 .5
+*SPICE3:
+ Begnd 99 0 V = .5*V(3,0) + .5*V(4,0)
+
+*SPICE2:
+* fb 7 99 poly(5) vb vc ve vlp vln 0 10.61E6 -10E6 10E6 10E6 -10E6
+*SPICE3:
+ Bfb 7 99 I = 10.61E6*I(vb) + -10E6*I(vc) + 10E6*I(ve) + 10E6*I(vlp) + -10E6*I(vln)
+
+ ga 6 0 11 12 188.5E-6
+ gcm 0 6 10 99 5.961E-9
+ iee 10 4 dc 15.16E-6
+ hlim 90 0 vlim 1K
+ q1 11 2 13 qx
+ q2 12 1 14 qx
+ r2 6 9 100.0E3
+ rc1 3 11 5.305E3
+ rc2 3 12 5.305E3
+ re1 13 10 1.836E3
+ re2 14 10 1.836E3
+ ree 10 99 13.19E6
+ ro1 8 5 50
+ ro2 7 99 100
+ rp 3 4 18.16E3
+ vb 9 0 dc 0
+ vc 3 53 dc 1
+ ve 54 4 dc 1
+ vlim 7 8 dc 0
+ vlp 91 0 dc 40
+ vln 0 92 dc 40
+.model dx D(Is=800.0E-18 Rs=1)
+.model qx NPN(Is=800.0E-18 Bf=93.75)
+.ends UA741
diff --git a/data/netlist.lang b/data/netlist.lang
new file mode 100644
index 0000000..8672f37
--- /dev/null
+++ b/data/netlist.lang
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<language id="netlist" _name="Netlist" version="2.0" _section="Markup">
+ <metadata>
+ <property name="mimetypes">application/x-oregano</property>
+ <property name="globs">*.netlist</property>
+ </metadata>
+
+ <styles>
+ <style id="comment" _name="Comment" map-to="def:comment"/>
+ <style id="floating-point" _name="Floating Point" map-to="def:floating-point"/>
+ <style id="decimal" _name="Decimal" map-to="def:decimal"/>
+ <style id="preprocessor" _name="Preprocessor" map-to="def:identifier"/>
+ <style id="keyword" _name="Keyword" map-to="def:keyword"/>
+ <style id="values" _name="Values" map-to="def:special-char"/>
+ </styles>
+
+ <definitions>
+ <context id="block-comment" style-ref="comment" end-at-line-end="true">
+ <start>\*</start>
+ </context>
+ <context id="decimal" style-ref="decimal">
+ <match>\b([1-9][0-9]*|0)([Uu]([Ll]|LL|ll)?|([Ll]|LL|ll)[Uu]?)?\b</match>
+ </context>
+ <context id="floating-point-number" style-ref="floating-point">
+ <match>\b([0-9]+[Ee][-]?[0-9]+|([0-9]*\.[0-9]+|[0-9]+\.)([Ee][-]?[0-9]+)?)[fFlL]?</match>
+ </context>
+ <context id="keywords" style-ref="keyword">
+ <keyword>print</keyword>
+ <keyword>tran</keyword>
+ <keyword>op</keyword>
+ <keyword>dc</keyword>
+ <keyword>options</keyword>
+ <keyword>end</keyword>
+ <keyword>ac</keyword>
+ <keyword>fourier</keyword>
+ </context>
+ <context id="entity" style-ref="values">
+ <match>(v|i)(\(.*\))</match>
+ </context>
+ <context id="common-macro" style-ref="preprocessor">
+ <keyword>UIC</keyword>
+ <keyword>OUT</keyword>
+ <keyword>TEMP</keyword>
+ <keyword>GMIN</keyword>
+ <keyword>ABSTOL</keyword>
+ <keyword>CHGTOL</keyword>
+ <keyword>RELTOL</keyword>
+ <keyword>VNTOL</keyword>
+ <keyword>ITL1</keyword>
+ <keyword>ITL2</keyword>
+ <keyword>ITL4</keyword>
+ <keyword>PIVREL</keyword>
+ <keyword>PIVTOL</keyword>
+ <keyword>TNOM</keyword>
+ <keyword>TRTOL</keyword>
+ <keyword>DEFAD</keyword>
+ <keyword>DEFAS</keyword>
+ <keyword>DEFL</keyword>
+ <keyword>DEFW</keyword>
+ </context>
+ <context id="netlist">
+ <include>
+ <context ref="block-comment"/>
+ <context ref="decimal"/>
+ <context ref="floating-point-number"/>
+ <context ref="keywords"/>
+ <context ref="entity"/>
+ <context ref="common-macro"/>
+ </include>
+ </context>
+ </definitions>
+</language>
diff --git a/data/oregano.desktop.in.in b/data/oregano.desktop.in.in
new file mode 100644
index 0000000..b46c0d6
--- /dev/null
+++ b/data/oregano.desktop.in.in
@@ -0,0 +1,13 @@
+[Desktop Entry]
+_Name=Oregano
+_GenericName=Electrical Engineering Tool
+_Comment=Schematic, capture and simulation of electronic circuits
+Exec=oregano %F
+Icon=gnome-oregano.svg
+Terminal=false
+X-MultipleArgs=false
+Type=Application
+Categories=GNOME;GTK;Science;Education;Physics;
+Encoding=UTF-8
+StartupNotify=true
+MimeType=application/x-oregano;
diff --git a/docs/Library-HOWTO.txt b/docs/Library-HOWTO.txt
new file mode 100644
index 0000000..eb45fb2
--- /dev/null
+++ b/docs/Library-HOWTO.txt
@@ -0,0 +1,131 @@
+How to create a new library part
+---------------------------------
+
+The libraries are stored in an XML based format, called *.oreglib, and are
+installed in <prefix>/share/oregano/libraries.
+
+The easiest way to describe how to create a part is to look at one from the
+default library, the resistor. In each library, there is first a <symbols> tag.
+This tag contains all the symbols used for the parts in the library. Take a look
+at the resistor symbol:
+
+ <ogo:symbol>
+ <ogo:name>resistor</ogo:name>
+ <ogo:objects>
+ <ogo:line>(0 10)(10 10)(11 10)(13 6)(16 14)(19 6)(22 14)(25 6)(28 14)(30 10)(40 10)</ogo:line>
+ </ogo:objects>
+
+ <ogo:connections>
+ <ogo:connection>(0 10)</ogo:connection>
+ <ogo:connection>(40 10)</ogo:connection>
+ </ogo:connections>
+ </ogo:symbol>
+
+It is built with a polyline, where each (x y) pair is a point on the line. So
+far so good. Now lets take a look at the <parts> section, containing all the
+parts that are shown in the part browser. The resistor definition looks like
+this:
+
+ <ogo:part>
+ <ogo:name>Resistor</ogo:name>
+ <ogo:symbol>resistor</ogo:symbol>
+ <ogo:description>Resistor</ogo:description>
+
+ <ogo:properties>
+ <ogo:property>
+ <ogo:name>Refdes</ogo:name>
+ <ogo:value>R</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Res</ogo:name>
+ <ogo:value>1k</ogo:value>
+ </ogo:property>
+ <ogo:property>
+ <ogo:name>Template</ogo:name>
+ <ogo:value>R_@refdes %1 %2 @res</ogo:value>
+ </ogo:property>
+ </ogo:properties>
+
+ <ogo:labels>
+ <ogo:label>
+ <ogo:name>Reference designator</ogo:name>
+ <ogo:text>@refdes</ogo:text>
+ <ogo:position>(15 0)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ <ogo:label>
+ <ogo:name>Resistance</ogo:name>
+ <ogo:text>@res</ogo:text>
+ <ogo:position>(15 30)</ogo:position>
+ <ogo:modify>yes</ogo:modify>
+ </ogo:label>
+ </ogo:labels>
+
+ </ogo:part>
+
+This is a bit more compilicated than the symbol tag. First we define a name,
+which is what is shown in the part list in the browser. The description is the
+string shown below the part in the part preview. This could be a longer and more
+descriptive string than the name, if needed. The symbol tag assigns the symbol
+that should be used for this part (this way a symbol can be shared between
+several parts).
+
+Then we can define properties. Most parts define Refdes, that is the reference
+designator to use. For a resistor, we use R. Likewise, a capacitor would use C.
+We also define a property named Res, which is the actual resistance. Finally,
+we have Template, which is the template to use when generating spice netlists.
+As you can see, when evaluating these strings, the proporties can be referred
+to as @<property name>.
+
+The use of label tags are more or less obvious. We can use properties, using the
+@ character. For example, the label whose text is <ogo:text>@refdes</ogo:text>
+will display the reference designator.
+
+Part models
+-----------
+
+If you need to include a spice model for a part, you either add it inline in the
+library or by including a model file.
+
+For the former, you can do like this example (a diode):
+
+ <ogo:name>Template</ogo:name>
+ <ogo:value>D_@refdes %1 %2 M_@refdes \n.model M_@refdes (IS=0.1PA, RS=16 CJO=2PF TT=12N BV=100 IBV=0.1PA)</ogo:value>
+
+This will add the model below each instance of the diode in the netlist.
+
+For more complicated models, you should probably choose the latter method, which
+is to add a property called Model. If the value of this property is, for instance,
+PNP, the model file should be called PNP.model. The model file should be placed
+in <srcdir>/data/models/ and gets installed in <prefix>/share/oregano/models.
+
+Note that we can NOT ship most models that can be found on the internet. Most of
+these have some kind of restrictive license that keeps them from being used
+commercially etc. So if anyone creates any models from scratch, I would be very
+interested in adding them to Oregano. Perhaps we should start a library of free
+part spice models.
+
+
+Advanced parts
+--------------
+
+For parts that do more than just sit and wait for spice to handle them, there
+might be a need to do some hacking. Examples of this are the parts Ground and
+Jumper Wire. They all have a property called internal. The netlist generator looks
+for this property and have special case code to handle them.
+
+If you need to hack in some kind of special behaviour, take a look at netlist.c
+and search for "internal", and "jumper". This should get you going.
+
+
+The future
+----------
+
+So now when you learned how to create parts, I have some good news: the library
+format is about to change ;) I'm moving to an SVG based format for the graphics,
+and to a much saner approach for the rest of the format. There will not be support
+for symbols. Instead each part will have to declare its own symbol. The benefit
+of sharing symbols is not greater then the pain it causes. There are some other
+nice changes planned as well, more about that later.
+
+
diff --git a/docs/Makefile.am b/docs/Makefile.am
new file mode 100644
index 0000000..a87340b
--- /dev/null
+++ b/docs/Makefile.am
@@ -0,0 +1,3 @@
+EXTRA_DIST = \
+ Library-HOWTO.txt \
+ oregano-inheritance.dia
diff --git a/docs/oregano-inheritance.dia b/docs/oregano-inheritance.dia
new file mode 100644
index 0000000..09f7dff
--- /dev/null
+++ b/docs/oregano-inheritance.dia
Binary files differ
diff --git a/help/C/Makefile.am b/help/C/Makefile.am
new file mode 100644
index 0000000..3ca4fad
--- /dev/null
+++ b/help/C/Makefile.am
@@ -0,0 +1,10 @@
+figdir = figures
+docname = oregano
+lang = C
+omffile = oregano-C.omf
+entities = legal.xml
+include $(top_srcdir)/xmldocs.make
+dist-hook: app-dist-hook
+
+
+
diff --git a/help/C/figures/oregano-main-window.png b/help/C/figures/oregano-main-window.png
new file mode 100644
index 0000000..8d23806
--- /dev/null
+++ b/help/C/figures/oregano-main-window.png
Binary files differ
diff --git a/help/C/legal.xml b/help/C/legal.xml
new file mode 100644
index 0000000..70d0183
--- /dev/null
+++ b/help/C/legal.xml
@@ -0,0 +1,74 @@
+<legalnotice id="legalnotice">
+ <para>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License (GFDL), Version 1.1 or any later version published
+ by the Free Software Foundation with no Invariant Sections,
+ no Front-Cover Texts, and no Back-Cover Texts. You can find
+ a copy of the GFDL at this <ulink type="help" url="ghelp:fdl">link</ulink> or in the file COPYING-DOCS
+ distributed with this manual.
+ </para>
+ <para> This manual is part of a collection of GNOME manuals
+ distributed under the GFDL. If you want to distribute this
+ manual separately from the collection, you can do so by
+ adding a copy of the license to the manual, as described in
+ section 6 of the license.
+ </para>
+
+ <para>
+ Many of the names used by companies to distinguish their
+ products and services are claimed as trademarks. Where those
+ names appear in any GNOME documentation, and the members of
+ the GNOME Documentation Project are made aware of those
+ trademarks, then the names are in capital letters or initial
+ capital letters.
+ </para>
+
+ <para>
+ DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED
+ UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE
+ WITH THE FURTHER UNDERSTANDING THAT:
+
+ <orderedlist>
+ <listitem>
+ <para>DOCUMENT IS PROVIDED ON AN "AS IS" BASIS,
+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
+ IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
+ THAT THE DOCUMENT OR MODIFIED VERSION OF THE
+ DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR
+ A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE
+ RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE
+ OF THE DOCUMENT OR MODIFIED VERSION OF THE
+ DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR
+ MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT,
+ YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY
+ CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
+ SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
+ OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS
+ LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED
+ VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER
+ EXCEPT UNDER THIS DISCLAIMER; AND
+ </para>
+ </listitem>
+ <listitem>
+ <para>UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL
+ THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE),
+ CONTRACT, OR OTHERWISE, SHALL THE AUTHOR,
+ INITIAL WRITER, ANY CONTRIBUTOR, OR ANY
+ DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION
+ OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH
+ PARTIES, BE LIABLE TO ANY PERSON FOR ANY
+ DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
+ CONSEQUENTIAL DAMAGES OF ANY CHARACTER
+ INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS
+ OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR
+ MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR
+ LOSSES ARISING OUT OF OR RELATING TO USE OF THE
+ DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT,
+ EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF
+ THE POSSIBILITY OF SUCH DAMAGES.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </legalnotice> \ No newline at end of file
diff --git a/help/C/oregano-C.omf b/help/C/oregano-C.omf
new file mode 100644
index 0000000..b353465
--- /dev/null
+++ b/help/C/oregano-C.omf
@@ -0,0 +1,31 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE omf PUBLIC "-//OMF//DTD Scrollkeeper OMF Variant V1.0//EN" "http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd">
+<omf>
+ <resource>
+ <creator>
+ rmarkie@fi.uba.ar (Ricardo Markiewicz)
+ </creator>
+ <title>
+ Oregano User Guide
+ </title>
+ <date>
+ 2004-05-03
+ </date>
+ <version identifier="0.0.3" date="2004-08-11" description="alpha version"/>
+ <subject category="GNOME|Core Desktop"/>
+ <description>
+ This document will describe the benefits of oregano 2, and show you
+ some examples.
+ </description>
+ <type>
+ manual
+ </type>
+ <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//EN"/>
+ <identifier url=""/>
+ <language code="C"/>
+ <relation seriesid="b57e7e48-be78-11d6-85a3-d094906a987c"/>
+ <rights type="GNU FDL" license.version="1.1"
+ license="http://www.gnu.org/licenses/fdl.html" holder="Havoc
+ Pennington, John Fleck"/>
+ </resource>
+</omf>
diff --git a/help/C/oregano.xml b/help/C/oregano.xml
new file mode 100644
index 0000000..5d36977
--- /dev/null
+++ b/help/C/oregano.xml
@@ -0,0 +1,447 @@
+<?xml version="1.0"?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "/usr/share/xml/docbook/custom/mathml/1.0/dbmathml.dtd"
+ [
+ <!ENTITY legal SYSTEM "legal.xml">
+ <!ENTITY appversion "0.1">
+ <!ENTITY manrevision "0.1">
+ <!ENTITY date "15 November 2009">
+ <!ENTITY app "<application>Oregano</application>">
+]>
+<article id="index" lang="en">
+ <articleinfo>
+ <title><application>Oregano</application> User's Guide</title>
+ <copyright>
+ <year>2009</year>
+ <holder>Marc Lorber</holder>
+ </copyright>
+ <copyright>
+ <year>2003</year><year>2004</year>
+ <holder>LUGFi</holder>
+ </copyright>
+ <copyright>
+ <year>1999</year><year>2001</year><year>2002</year>
+ <holder>Richard Hult</holder>
+ </copyright>
+ <publisher>
+ <publishername> LUGFI </publishername>
+ </publisher>
+
+ <authorgroup>
+ <author>
+ <firstname>Marc</firstname> <surname>Lorber</surname>
+ <affiliation>
+ <address><email>Lorber.Marc@wanadoo.fr</email></address>
+ </affiliation>
+ </author><author>
+ <firstname>Ricardo</firstname> <surname>Markiewicz</surname>
+ <affiliation>
+ <address><email>rmarkie@fi.uba.ar</email></address>
+ </affiliation>
+ </author>
+ </authorgroup>
+ <revhistory>
+ <revision>
+ <revnumber>Oregano Manual V 0.1</revnumber>
+ <date>2009</date>
+ <revdescription>
+ <para role="author">Marc Lorber</para>
+ </revdescription>
+ </revision>
+ <revision>
+ <revnumber>Oregano Manual V 0</revnumber>
+ <date>2004</date>
+ <revdescription>
+ <para role="author">Ricardo Markiewicz</para>
+ </revdescription>
+ </revision>
+ </revhistory>
+
+ <releaseinfo>
+ Oregano is a tool for schematic capture and simulation
+ of electronic circuits. It simplifes design of simple circuits
+ by letting the user draw the circuit and then simulate its
+ electrical characteristics.
+
+ This document is mostly meant to be an introduction
+ for someone who already is familiar with circuit simulation
+ and wants to try out Oregano.
+ </releaseinfo>
+ <!-- An address can be added to the publisher information. If a role is
+ not specified, the publisher/author is the same for all versions of the
+ document. -->
+
+ &legal;
+ <!-- This file contains link to license for the documentation (GNU FDL), and
+ other legal stuff such as "NO WARRANTY" statement. Please do not change
+ any of this. -->
+
+ <legalnotice>
+ <title>Feedback</title>
+ <para>To report a bug or make a suggestion regarding the
+ <application>Oregano</application> application or
+ this manual, follow the directions in the <ulink
+ url="ghelp:oregano-feedback" type="help">Oregano Feedback Page</ulink>.
+ </para>
+ </legalnotice>
+ </articleinfo>
+
+
+
+<!-- ============= Document Body ============================= -->
+
+ <sect1 id="Spice">
+ <title><emphasis>Spice</emphasis>: circuit simulation program</title>
+ <para><emphasis>Spice</emphasis> is a general-purpose circuit simulation program for nonlinear DC, nonlinear
+ transient, and linear AC analyses. Circuits may contain resistors, capacitors, inductors,
+ mutual inductors, independent voltage and current sources, four types of dependent sources,
+ lossless and lossy transmission lines (two separate implementations), switches, uniform
+ distributed RC lines, and the five most common semiconductor devices: diodes, BJTs, JFETs,
+ MESFETs, and MOSFETs.</para>
+ <para><emphasis>Spice</emphasis> has built-in models for the semiconductor devices, and the user need specify
+ only the pertinent model parameter values. The model for the BJT is based on the
+ integral-charge model of Gummel and Poon; however, if the Gummel-Poon parameters are not
+ specified, the model reduces to the simpler Ebers-Moll model. In either case, charge-storage
+ effects, ohmic resistances, and a current-dependent output conductance may be included. The
+ diode model can be used for either junction diodes or Schottky barrier diodes. The JFET model
+ is based on the FET model of Shichman and Hodges. Six MOSFET models are implemented: MOS1
+ is described by a square-law I-V characteristic, MOS2 [1] is an analytical model, while MOS3
+ [1] is a semi-empirical model; MOS6 [2] is a simple analytic model accurate in the short-channel
+ region; MOS4 [3, 4] and MOS5 [5] are the BSIM (Berkeley Short-channel IGFET Model) and BSIM2.
+ MOS2, MOS3, and MOS4 include second-order effects such as channel-length modulation,
+ subthreshold conduction, scattering-limited velocity saturation, small-size effects, and
+ charge-controlled capacitances.</para>
+ <sect2 id="analyses-types">
+ <title>Types of analyses</title>
+
+ <sect3 id="dc-analyses">
+ <title>DC analyses</title>
+ <para>The DC analysis portion of <emphasis>Spice</emphasis> (.DC) determines the DC operating point of the circuit
+ with inductors shorted and capacitors opened. The DC analysis options are specified on the .DC,
+ .TF, and .OP control lines. A DC analysis is automatically performed prior to a transient analysis
+ to determine the transient initial conditions, and prior to an AC small-signal analysis to determine
+ the linearized, small-signal models for nonlinear devices. If requested, the DC small-signal value
+ of a transfer function (ratio of output variable to input source), input resistance, and output
+ resistance is also computed as a part of the dc solution. The DC analysis can also be used to
+ generate dc transfer curves: a specified independent voltage or current source is stepped over a
+ user-specified range and the DC output variables are stored for each sequential source value.
+ </para>
+ </sect3>
+
+ <sect3 id="ac-analyses">
+ <title>AC Small-Signal Analysis</title>
+ <para>The AC small-signal portion of <emphasis>Spice</emphasis> (.AC) computes the AC output variables as a function of
+ frequency. The program first computes the DC operating point of the circuit and determines linearized,
+ small-signal models for all of the nonlinear devices in the circuit. The resultant linear circuit is
+ then analyzed over a user-specified range of frequencies. The desired output of an AC small-signal
+ analysis is usually a transfer function (voltage gain, trans-impedance, etc). If the circuit has only
+ one AC input, it is convenient to set that input to unity and zero phase, so that output variables
+ have the same value as the transfer function of the output variable with respect to the input.</para>
+ </sect3>
+
+ <sect3 id="transient-analysis">
+ <title>Transient analysis</title>
+ <para>The transient analysis portion of <emphasis>Spice</emphasis> (.TRAN) computes the transient output variables as a
+ function of time over a user-specified time interval. The initial conditions are automatically
+ determined by a DC analysis. All sources which are not time dependent (for example, power supplies)
+ are set to their DC value. The transient time interval is specified on a .TRAN control line. </para>
+ </sect3>
+
+ <sect3 id="pole-zero-analysis">
+ <title>Pole-Zero Analysis</title>
+ <para>The pole-zero analysis portion of <emphasis>Spice</emphasis> (.PZ) computes the poles and/or zeros in the small-signal
+ AC transfer function. The program first computes the DC operating point and then determines the linearized,
+ small-signal models for all the nonlinear devices in the circuit. This circuit is then used to find the
+ poles and zeros of the transfer function.
+ </para>
+ <para>Two types of transfer functions are allowed: one of the form (output voltage)/(input voltage) and
+ the other of the form (output voltage)/(input current). These two types of transfer functions cover all
+ the cases and one can find the poles/zeros of functions like input/output impedance and voltage gain.
+ The input and output ports are specified as two pairs of nodes.
+ </para>
+ <para>The pole-zero analysis works with resistors, capacitors, inductors, linear-controlled sources,
+ independent sources, BJTs, MOSFETs, JFETs and diodes. Transmission lines are not supported.
+ </para>
+ <para>The method used in the analysis is a sub-optimal numerical search. For large circuits it may
+ take a considerable time or fail to find all poles and zeros. For some circuits, the method becomes
+ "lost" and finds an excessive number of poles or zeros.
+ </para>
+ </sect3>
+
+ <sect3 id="small-signal-distorsion-signal">
+ <title>Small-Signal Distortion Analysis</title>
+ <para>The distortion analysis portion of <emphasis>Spice</emphasis> (.DISTO) computes steady-state harmonic and
+ intermodulation products for small input signal magnitudes. If signals of a single frequency are
+ specified as the input to the circuit, the complex values of the second and third harmonics are
+ determined at every point in the circuit. If there are signals of two frequencies input to the circuit,
+ the analysis finds out the complex values of the circuit variables at the sum and difference of the input
+ frequencies, and at the difference of the smaller frequency from the second harmonic of the larger
+ frequency. </para>
+ <para>Distortion analysis is supported for the following nonlinear devices: diodes (DIO), BJT, JFET,
+ MOSFETs (levels 1, 2, 3, 4/BSIM1, 5/BSIM2, and 6) and MESFETS. All linear devices are automatically
+ supported by distortion analysis. If there are switches present in the circuit, the analysis continues
+ to be accurate provided the switches do not change state under the small excitations used for distortion
+ calculations. </para>
+ </sect3>
+
+ <sect3 id="sensistivity-analysis">
+ <title>Sensitivity Analysis</title>
+ <para><emphasis>Spice</emphasis> will calculate (.SENS) either the DC operating-point sensitivity or the AC small-signal
+ sensitivity of an output variable with respect to all circuit variables, including model parameters.
+ <emphasis>Spice</emphasis> calculates the difference in an output variable (either a node voltage or a branch current)
+ by perturbing each parameter of each device independently. Since the method is a numerical approximation,
+ the results may demonstrate second order affects in highly sensitive parameters, or may fail to show very
+ low but non-zero sensitivity. Further, since each variable is perturb by a small fraction of its value,
+ zero-valued parameters are not analyized (this has the benefit of reducing what is usually a very large
+ amount of data). </para>
+ </sect3>
+
+ <sect3 id="noise-analysis">
+ <title>Noise Analysis</title>
+ <para>The noise analysis portion of <emphasis>Spice</emphasis> (.NOISE) does analysis device-generated noise for the given
+ circuit. When provided with an input source and an output port, the analysis calculates the noise
+ contributions of each device (and each noise generator within the device) to the output port voltage.
+ It also calculates the input noise to the circuit, equivalent to the output noise referred to the specified
+ input source. This is done for every frequency point in a specified range - the calculated value of the noise
+ corresponds to the spectral density of the circuit variable viewed as a stationary gaussian stochastic
+ process. </para>
+ <para>After calculating the spectral densities, noise analysis integrates these values over the specified
+ frequency range to arrive at the total noise voltage/current (over this frequency range). This calculated
+ value corresponds to the variance of the circuit variable viewed as a stationary gaussian process.
+ </para>
+ </sect3>
+ </sect2>
+
+ <sect2 id="temperatures-analysis">
+ <title>Analyses at different temperatures</title>
+ <para>All input data for <emphasis>Spice</emphasis> is assumed to have been measured at a nominal temperature of 27°C, which
+ can be changed by use of the TNOM parameter on the .OPTIONS control line. This value can further be
+ overridden for any device which models temperature effects by specifying the TNOM parameter on the model
+ itself. The circuit simulation is performed at a temperature of 27°C, unless overridden by a TEMP parameter
+ on the .OPTIONS control line. Individual instances may further override the circuit temperature through
+ the specification of a TEMP parameter on the instance.
+ </para>
+ <para>Temperature appears explicitly in the exponential terms of the BJT and diode model paras. In
+ addition, saturation currents have a built-in temperature dependence. The temperature dependence of the
+ saturation current in the BJT models is determined by:
+ </para>
+ <center>
+ <para>I<subscript>S</subscript>(T<subscript>1</subscript>) = I<subscript>S</subscript>(T<subscript>0</subscript>)*(T<subscript>1</subscript><superscript>XTI</superscript>/T<subscript>0</subscript>)
+ *exp(q*E<subscript>G</subscript>*(T<subscript>1</subscript>*T<subscript>0</subscript>)/(k*T<subscript>1</subscript>-T<subscript>0</subscript>)) </para>
+ </center>
+ <para>where k is Boltzmann's constant, q is the electronic charge, E<subscript>g</subscript> is the energy gap which is a model
+ parameter, and XTI is the saturation current temperature exponent (also a model parameter, and usually
+ equal to 3).
+ </para>
+ <para>The temperature dependence of forward and reverse beta is according to the formula:
+ </para>
+ <para>B(T<subscript>1</subscript>) = B(T<subscript>0</subscript>)* T<subscript>1</subscript><superscript>XTB</superscript>/T<subscript>0</subscript></para>
+ <pre>
+ XTI
+ |T | | E q(T T )|
+ 1 g 1 0
+ I (T ) = I (T ) |--| exp|-----------|
+ S 1 S 0
+ |T | |k (T - T )|
+ 0 1 0
+ </pre>
+ <para>COUCOUCOUCOUCOIU</para>
+
+ <mml:mrow>
+ <mml:mi>x</mml:mi>
+ <mml:mo>=</mml:mo>
+ <mml:mfrac>
+ <mml:mrow>
+ <mml:mrow><mml:mo>-</mml:mo><mml:mi>b</mml:mi></mml:mrow>
+ <mml:mo>&PlusMinus;</mml:mo>
+ <mml:msqrt>
+ <mml:mrow>
+ <mml:msup><mml:mi>b</mml:mi><mml:mn>2</mml:mn></mml:msup>
+ <mml:mo>-</mml:mo>
+ <mml:mrow><mml:mn>4</mml:mn><mml:mi>a</mml:mi><mml:mi>c</mml:mi></mml:mrow>
+ </mml:mrow>
+ </mml:msqrt>
+ </mml:mrow>
+ <mml:mrow><mml:mn>2</mml:mn><mml:mo>&InvisibleTimes;</mml:mo><mml:mi>a</mml:mi></mml:mrow>
+ </mml:mfrac>
+</mml:mrow>
+
+ <para>COUCOUCOUCOUCOIU</para>
+
+ <para>where T<subscript>1</subscript> and T<subscript>0</subscript> are in kelvin, and XTB is a user-supplied model parameter. Temperature effects
+ on beta are carried out by appropriate adjustment to the values of BF, ISE, BR , and ISC (<emphasis>Spice</emphasis> model
+ parameters BF, ISE, BR, and ISC, respectively).
+ </para>
+ <para>Temperature dependence of the saturation current in the junction diode model is determined by: </para>
+ <para>I<subscript>S</subscript>(T<subscript>1</subscript>) = I<subscript>S</subscript>(T<subscript>0</subscript>)*(T<subscript>1</subscript><superscript>XTI</superscript>/T<subscript>0</subscript>)
+ *exp(q*E<subscript>G</subscript>*(T<subscript>1</subscript>*T<subscript>0</subscript>)/(k*T<subscript>1</subscript>-T<subscript>0</subscript>)) </para>
+
+ <pre>
+ XTB
+ |T |
+ 1
+ B(T ) = B(T ) |--|
+ 1 0
+ |T |
+ 0
+ </pre>
+
+
+ <para>where N is the emission coefficient, which is a model parameter, and the other symbols have
+ the same meaning as above. Note that for Schottky barrier diodes, the value of the saturation current
+ temperature exponent, XTI, is usually 2.
+ </para>
+ <para>Temperature appears explicitly in the value of junction potential, U (in <emphasis>Spice</emphasis> PHI), for all the
+ device models. The temperature dependence is determined by:
+ </para>
+
+ <pre>
+ XTI
+ ---
+ N
+ |T | | E q(T T ) |
+ 1 g 1 0
+ I (T ) = I (T ) |--| exp|-------------|
+ S 1 S 0
+ |T | |N k (T - T )|
+ 0 1 0
+ </pre>
+ <para>where k is Boltzmann's constant, q is the electronic charge, Na is the acceptor impurity density,
+ Nd is the donor impurity density, Ni is the intrinsic carrier concentration, and Eg is the energy gap.
+ </para>
+ <para>Temperature appears explicitly in the value of surface mobility, M0 (or UO), for the MOSFET model.
+ The temperature dependence is determined by:
+ </para>
+ <para>R(T) = R(T<subscript>0</subscript>) [1 + TC<subscript>1</subscript> (T - T<subscript>0</subscript> ) + TC<subscript>2</subscript> (T - T<subscript>0</subscript>)<superscript>2</superscript>]
+ </para>
+ <pre>
+
+ | N N |
+ a d
+ kT |------ |
+ U(T) = -- log 2
+ q e |N (T) |
+ i
+ </pre>
+
+
+ <para>The effects of temperature on resistors is modeled by the formula:
+ </para>
+ <para>I<subscript>S</subscript>(T<subscript>1</subscript>) = I<subscript>S</subscript>(T<subscript>0</subscript>)*(T<subscript>1</subscript><superscript>XTI</superscript>/T<subscript>0</subscript>)
+ *exp(q*E<subscript>G</subscript>*(T<subscript>1</subscript>*T<subscript>0</subscript>)/(k*T<subscript>1</subscript>-T<subscript>0</subscript>)) </para>
+ <pre>
+ M (T )
+ 0 0
+ M (T) = -------
+ 0 1.5
+ | T|
+ |--|
+ |T |
+ 0
+ </pre>
+
+
+
+ <para>where T is the circuit temperature, T<subscript>0</subscript> is the nominal temperature, and TC<subscript>1</subscript> and TC<subscript>2</subscript> are the first-
+ and second-order temperature coefficients.
+ </para>
+ </sect2>
+
+ <sect2 id="convergence">
+ <title>Convergence</title>
+ <para>Both dc and transient solutions are obtained by an iterative process which is terminated when both
+ of the following conditions hold:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>The nonlinear branch currents converge to within a tolerance of 0.1% or 1 picoamp (1.0<superscript>-12</superscript>A), whichever
+ is larger.</para></listitem>
+ <listitem><para>The node voltages converge to within a tolerance of 0.1% or 1 microvolt (1.0<superscript>-6</superscript>V), whichever is larger.
+ </para>
+ </listitem></orderedlist>
+ <para>Although the algorithm used in <emphasis>Spice</emphasis> has been found to be very reliable, in some cases it fails to
+ converge to a solution. When this failure occurs, the program terminates the job.
+ </para>
+ <para>Failure to converge in dc analysis is usually due to an error in specifying circuit connections,
+ element values, or model parameter values. Regenerative switching circuits or circuits with positive feedback
+ probably will not converge in the dc analysis unless the OFF option is used for some of the devices in the
+ feedback path, or the .NODESET control line is used to force the circuit to converge to the desired state.
+ </para>
+ </sect2>
+
+
+ </sect1>
+
+ <sect1 id="getting-started">
+ <title>Getting Started with Oregano</title>
+
+ <para>When you first start &app;, you will be presented to an
+ empty sheet, where you can place circuit components and connect
+ them with wires. To place a component, also known as 'part',
+ first select one in the part browser on the right hand side of
+ the application window. Then press the 'Place' button, or double-click
+ the selected part. You can also drag the part preview and drop it
+ on the sheet.</para>
+
+ <figure id="general-view">
+ <title>&app; oregano: main window</title>
+ <screenshot><graphic fileref="figures/oregano-main-window.png" format="PNG"></graphic>
+ </screenshot>
+ </figure>
+
+ <para>When you have some parts placed on the sheet, you can start
+ connecting them with wires. Select the wire tool on the toolbar,
+ and click on the sheet where you want the wire to start. Then
+ click where you want to fixate the wire.</para>
+
+ <para>Make sure you connect at least one ground node to the circuit,
+ as this is neccessary to perform a simulation.</para>
+
+ </sect1>
+
+ <sect1 id="editing">
+ <title>Editing the Circuit</title>
+
+ <para>There are a few accelerator keys that can help editing the
+ circuit:</para>
+
+ <variablelist>
+ <varlistentry><term>Ctrl-A</term><listitem><para>Select all objects on the sheet</para>
+ </listitem></varlistentry>
+
+ <varlistentry><term>Ctrl-Shift-A</term><listitem><para>Deselect all objects</para>
+ </listitem></varlistentry>
+
+ <varlistentry><term>r</term><listitem><para>Rotate the selected objects 90 degrees clockwise</para>
+ </listitem></varlistentry>
+
+ <varlistentry><term>&lt;Del&gt;</term><listitem><para>Delete the selected objects</para>
+ </listitem></varlistentry>
+
+ <varlistentry><term>l</term><listitem><para>Place the currently selected part</para>
+ </listitem></varlistentry>
+
+ </variablelist>
+
+ <para>Parts and wires can be selected by clicking on them, and by holding the
+ Shift-key while clicking, you can select multiple parts and wires. You can
+ also select objects by 'rubber-banding': hold down the mouse button while dragging
+ the pointer over the objects that you wish to select.</para>
+
+ </sect1>
+
+ <sect1 id="simulation">
+ <title>Simulation</title>
+
+ <para>When you have a circuit and wish to run a simulation, either press the
+ simulate button on the toolbar or select
+ <guimenu>Tools</guimenu>-&gt;<guimenuitem>Simulation</guimenuitem>.
+ The simulation then starts and you can follow the progress on the dialog box
+ that pops up.</para>
+
+ <para>If you want to change the simulation parameters, select
+ <guimenu>Settings</guimenu>-&gt;<guimenuitem>Simulation Settings</guimenuitem>.
+ </para>
+
+ </sect1>
+</article>
diff --git a/help/Makefile.am b/help/Makefile.am
new file mode 100644
index 0000000..4d6054c
--- /dev/null
+++ b/help/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = C es fr
diff --git a/help/es/Makefile.am b/help/es/Makefile.am
new file mode 100644
index 0000000..0c117c0
--- /dev/null
+++ b/help/es/Makefile.am
@@ -0,0 +1,7 @@
+#figdir = figures
+docname = oregano
+lang = es
+omffile = oregano-es.omf
+entities = legal.xml oregano.xml
+include $(top_srcdir)/xmldocs.make
+dist-hook: app-dist-hook
diff --git a/help/es/legal.xml b/help/es/legal.xml
new file mode 100644
index 0000000..70d0183
--- /dev/null
+++ b/help/es/legal.xml
@@ -0,0 +1,74 @@
+<legalnotice id="legalnotice">
+ <para>
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation
+ License (GFDL), Version 1.1 or any later version published
+ by the Free Software Foundation with no Invariant Sections,
+ no Front-Cover Texts, and no Back-Cover Texts. You can find
+ a copy of the GFDL at this <ulink type="help" url="ghelp:fdl">link</ulink> or in the file COPYING-DOCS
+ distributed with this manual.
+ </para>
+ <para> This manual is part of a collection of GNOME manuals
+ distributed under the GFDL. If you want to distribute this
+ manual separately from the collection, you can do so by
+ adding a copy of the license to the manual, as described in
+ section 6 of the license.
+ </para>
+
+ <para>
+ Many of the names used by companies to distinguish their
+ products and services are claimed as trademarks. Where those
+ names appear in any GNOME documentation, and the members of
+ the GNOME Documentation Project are made aware of those
+ trademarks, then the names are in capital letters or initial
+ capital letters.
+ </para>
+
+ <para>
+ DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED
+ UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE
+ WITH THE FURTHER UNDERSTANDING THAT:
+
+ <orderedlist>
+ <listitem>
+ <para>DOCUMENT IS PROVIDED ON AN "AS IS" BASIS,
+ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
+ IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
+ THAT THE DOCUMENT OR MODIFIED VERSION OF THE
+ DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR
+ A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE
+ RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE
+ OF THE DOCUMENT OR MODIFIED VERSION OF THE
+ DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR
+ MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT,
+ YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY
+ CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
+ SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
+ OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS
+ LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED
+ VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER
+ EXCEPT UNDER THIS DISCLAIMER; AND
+ </para>
+ </listitem>
+ <listitem>
+ <para>UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL
+ THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE),
+ CONTRACT, OR OTHERWISE, SHALL THE AUTHOR,
+ INITIAL WRITER, ANY CONTRIBUTOR, OR ANY
+ DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION
+ OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH
+ PARTIES, BE LIABLE TO ANY PERSON FOR ANY
+ DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
+ CONSEQUENTIAL DAMAGES OF ANY CHARACTER
+ INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS
+ OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR
+ MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR
+ LOSSES ARISING OUT OF OR RELATING TO USE OF THE
+ DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT,
+ EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF
+ THE POSSIBILITY OF SUCH DAMAGES.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </legalnotice> \ No newline at end of file
diff --git a/help/es/oregano-es.omf b/help/es/oregano-es.omf
new file mode 100644
index 0000000..b353465
--- /dev/null
+++ b/help/es/oregano-es.omf
@@ -0,0 +1,31 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE omf PUBLIC "-//OMF//DTD Scrollkeeper OMF Variant V1.0//EN" "http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd">
+<omf>
+ <resource>
+ <creator>
+ rmarkie@fi.uba.ar (Ricardo Markiewicz)
+ </creator>
+ <title>
+ Oregano User Guide
+ </title>
+ <date>
+ 2004-05-03
+ </date>
+ <version identifier="0.0.3" date="2004-08-11" description="alpha version"/>
+ <subject category="GNOME|Core Desktop"/>
+ <description>
+ This document will describe the benefits of oregano 2, and show you
+ some examples.
+ </description>
+ <type>
+ manual
+ </type>
+ <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//EN"/>
+ <identifier url=""/>
+ <language code="C"/>
+ <relation seriesid="b57e7e48-be78-11d6-85a3-d094906a987c"/>
+ <rights type="GNU FDL" license.version="1.1"
+ license="http://www.gnu.org/licenses/fdl.html" holder="Havoc
+ Pennington, John Fleck"/>
+ </resource>
+</omf>
diff --git a/help/es/oregano.xml b/help/es/oregano.xml
new file mode 100644
index 0000000..7b21aca
--- /dev/null
+++ b/help/es/oregano.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "/usr/share/xml/docbook/schema/dtd/4.1.2/docbookx.dtd" [
+<!ENTITY legal SYSTEM "legal.xml">
+<!ENTITY appversion "0.1">
+<!ENTITY manrevision "0.1">
+<!ENTITY date "03 Mayo 2004">
+<!ENTITY app "<application>Oregano</application>">
+]>
+<article id="index" lang="es">
+ <articleinfo>
+ <title><application>Oregano</application>Manual de Usuario</title>
+ <copyright>
+ <year>2003</year>
+ <year>2004</year>
+ <holder>LUGFi</holder>
+ </copyright>
+ <copyright>
+ <year>1999</year>
+ <year>2001</year>
+ <year>2002</year>
+ <holder>Richard Hult</holder>
+ </copyright>
+ <publisher>
+ <publishername> LUGFI </publishername>
+ </publisher>
+
+ <authorgroup>
+ <author>
+ <firstname>Ricardo</firstname> <surname>Markiewicz</surname>
+ <affiliation>
+ <address>
+ <email>rmarkie@fi.uba.ar</email>
+ </address>
+ </affiliation>
+ </author>
+ </authorgroup>
+ <revhistory>
+ <revision>
+ <revnumber>Manual de Oregano</revnumber>
+ <date>2004</date>
+ <revdescription>
+ <para role="author">Ricardo Markiewicz</para>
+ </revdescription>
+ </revision>
+ </revhistory>
+
+ <releaseinfo>
+ Oregano is a tool for schematic capture and simulation
+ of electronic circuits. It simplifes design of simple circuits
+ by letting the user draw the circuit and then simulate its
+ electrical characteristics.
+
+ This document is mostly meant to be an introduction
+ for someone who already is familiar with circuit simulation
+ and wants to try out Oregano.
+ </releaseinfo>
+ <legalnotice>
+ <title>Feedback</title>
+ <para>To report a bug or make a suggestion regarding the
+ <application>Oregano</application> application or
+ this manual, follow the directions in the <ulink url="ghelp:oregano-feedback" type="help">Oregano Feedback Page</ulink>.
+ </para>
+ </legalnotice>
+ </articleinfo>
+
+ <sect1 id="getting-started">
+ <title>Introducci&#xF3;n</title>
+
+
+
+
+
+
+
+ <para><application>Oregano</application> es una aplicaci&#xF3;n de captura esquem&#xE1;tica y simulaci&#xF3;n de circuitos electr&#xF3;nicos.</para></sect1>
+
+ <sect1 id="editing">
+ <title>Editando un Circuito</title>
+
+
+
+
+
+
+
+ <para>Al iniciar la aplicaci&#xF3;n tendr&#xE1; una hoja vac&#xED;a donde podr&#xE1; comenzar a agregar los componentes de su circuito. Los componentes se encuentran en la lista de la derecha, agrupados por categor&#xED;as.</para></sect1>
+
+ <sect1 id="simulation">
+ <title>Simulaci&#xF3;n de Circuitos</title>
+
+
+
+
+
+ <sect2><title>Par&#xE1;metros de simulaci&#xF3;n</title><para>TODO</para></sect2></sect1>
+<sect1><title>Configurar <application>Oregano</application></title><sect2><title>Opciones de Edici&#xF3;n</title><para>TODO</para></sect2><sect2><title>Rutas de archivos</title><para>TODO : agregar que se supone que se configura aca</para><simplelist><member>Oregano Parser : Especifica el n&#xF3;mbre y ruta donde se encuentra el script <filename>oregano_parser.pl</filename> que es utilizado para la simulaci&#xF3;n. Este ejecutable es el encargado de realizar la simulaci&#xF3;n utilizando el motor (TODO:ver de poner un ref a donde se explique los motores de simulaci&#xF3;n) y entregar los datos en un formato que Oregano pueda entender.</member></simplelist></sect2><sect2><title>Formato de Archivos</title><simplelist><member>Comprimir los archivos guardados : Especifica si los archivos guardados deben ser comprimidos. Oregano utiliza el estandar XML para guardar los archivos. Al ser estos de texto, puede que uds quiera guardarlos comprimidos para que ocupen menos lugar. Tenga en cuenta que no todos los parsers XML soportan compresi&#xF3;n y esta opci&#xF3;n puede dificultar exportar el documento guardado para ser utilizado con otra aplicaci&#xF3;n.</member></simplelist></sect2><sect2><title>Motor de Simulaci&#xF3;n</title><para>Puede seleccionar entre dos motores de simulaci&#xF3;n : GNU Cap o ngSpice.</para></sect2></sect1></article>
diff --git a/help/fr/Makefile.am b/help/fr/Makefile.am
new file mode 100644
index 0000000..de2d88f
--- /dev/null
+++ b/help/fr/Makefile.am
@@ -0,0 +1,7 @@
+#figdir = figures
+docname = oregano
+lang = fr
+omffile = oregano-fr.omf
+entities = legal.xml oregano.xml
+include $(top_srcdir)/xmldocs.make
+dist-hook: app-dist-hook
diff --git a/help/fr/legal.xml b/help/fr/legal.xml
new file mode 100644
index 0000000..b1ecadf
--- /dev/null
+++ b/help/fr/legal.xml
@@ -0,0 +1,28 @@
+ <legalnotice id="legalnotice">
+ <para>
+ L'utilisateur est libre de copier, distribuer et/ou modifier le pr&eacute;sent document dans les termes de la GFDL (GNU Free Documentation License), Version 1.1 ou toute autre version ult&eacute;rieure publi&eacute;e par la Free Software Foundation sans section invariante, sans texte de page de couverture et sans textes de plat verso. Vous trouverez un exemplaire de la GFDL au <ulink type="help" url="ghelp:fdl">lien</ulink> suivant ou dans le fichier COPYING-DOCS fourni avec le pr&eacute;sent manuel.
+ </para>
+ <para> Le pr&eacute;sent manuel fait partie d'une collection de manuels GNOME distribu&eacute;s dans les termes de la GFDL. Vous souhaitez, si vous le souhaitez, le distribuer ind&eacute;pendamment de la collection en incluant un exemplaire de la licence du manuel, comme le d&eacute;crit la section 6 de la licence.
+ </para>
+
+ <para>
+ La plupart des noms utilis&eacute;s par les entreprises pour leurs produits et leurs services sont des marques d&eacute;pos&eacute;es. Lorsque ces noms apparaissent dans la documentation GNOME et que les membres du projet de documentation GNOME sont inform&eacute;s de l'existence de ces marques d&eacute;pos&eacute;es, ces noms apparaissent en majuscules, ou la premi&egrave;re lettre en majuscule.
+ </para>
+
+ <para>
+ LE PR&Eacute;SENT DOCUMENT ET SES VERSIONS DE MISE &Agrave; JOUR SONT FOURNIS SOUS LES CONDITIONS DE L'ACCORD DE LICENCE DE DOCUMENTATION LIBRE GNU, SACHANT QUE :
+
+ <orderedlist>
+ <listitem>
+ <para>LE PR&Eacute;SENT DOCUMENT EST FOURNI "TEL QUEL", SANS AUCUNE GARANTIE, EXPRESSE OU IMPLICITE, ET INCLUT SANS LIMITATION LES GARANTIES DE BONNE QUALIT&Eacute; MARCHANDE OU D'APTITUDE &Agrave; UN EMPLOI PARTICULIER OU AUTORIS&Eacute; DU DOCUMENT OU DE SA VERSION DE MISE &Agrave; JOUR. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. DANS LE CAS OU UN DOCUMENT OU SA VERSION DE MISE &Agrave; JOUR S'AV&Eacute;RAIT D&Eacute;FECTUEUX DE QUELQUE MANI&Egrave;RE QUE CE SOIT, L'UTILISATEUR (ET NON LE REDACTEUR INITIAL, L'AUTEUR OU TOUT AUTRE PARTICIPANT) ENDOSSERA LES CO&Ucirc;TS N&Eacute;CESSAIRES &Agrave; TOUTE INTERVENTION, R&Eacute;PARATION OU CORRECTION. CETTE LIMITATION DE RESPONSABILIT&Eacute; CONSTITUE UNE PARTIE ESSENTIELLE DE LA PR&Eacute;SENTE LICENCE. AUCUNE UTILISATION DU PR&Eacute;SENT DOCUMENT OU DE SA VERSION DE MISE &Agrave; JOUR N'EST AUTORIS&Eacute;E AUX TERMES DU PR&Eacute;SENT ACCORD, EXCEPT&Eacute; SOUS CETTE LIMITATION DE RESPONSABILIT&Eacute; ;
+ </para>
+ </listitem>
+ <listitem>
+ <para>EN AUCUNE CIRCONSTANCE ET SOUS AUCUNE INTERPR&Eacute;TATION DE LA LOI, QU'IL S'AGISSE DE RESPONSABILIT&Eacute; CIVILE (Y COMPRIS LA N&Eacute;GLIGENCE), CONTRACTUELLE OU AUTRE, L'AUTEUR, LE R&Eacute;DACTEUR INITIAL, TOUT PARTICIPANT ET TOUT DISTRIBUTEUR DE CE DOCUMENTOU DE SA VERSION DE MISE &Agrave; JOUR AINSI QUE TOUT FOURNISSEUR DE QUELQUE PARTIE QUE CE SOIT NE POURRONT &Ecirc;TRE TENUS RESPONSABLES &Agrave; L'&Eacute;GARD DE QUICONQUE POUR TOUT DOMMAGE DIRECT, INDIRECT, PARTICULIER OU ACCIDENTEL DE TOUT TYPE Y COMPRIS, SANS LIMITATION, LES DOMMAGES LI&Eacute;S &Agrave; LA PERTE DE CLIENT&Egrave;LE, AUX ARR&Ecirc;TS DE TRAVAIL, AUX D&Eacute;FAILLANCES ET AUX DYSFONCTIONNEMENTS INFORMATIQUES OU TOUT AUTRE DOMMAGE OU PERTE LI&Eacute;E &Agrave; L'UTILISATION DU PR&Eacute;SENT DOCUMENT ET DE SES VERSIONS DE MISE &Agrave; JOUR, ET CE M&Ecirc;ME SI CES PARTIES ONT &Eacute;T&Eacute; INFORM&Eacute;ES DE LA POSSIBILIT&Eacute; DE TELS DOMMAGES.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </legalnotice>
+
+
diff --git a/help/fr/oregano-fr.omf b/help/fr/oregano-fr.omf
new file mode 100644
index 0000000..38cc2d6
--- /dev/null
+++ b/help/fr/oregano-fr.omf
@@ -0,0 +1,30 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE omf PUBLIC "-//OMF//DTD Scrollkeeper OMF Variant V1.0//EN" "http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd">
+<omf>
+ <resource>
+ <creator>
+ rmarkie@fi.uba.ar (Ricardo Markiewicz)
+ </creator>
+ <title>
+ Guide de l'Utilisateur d'Oregano
+ </title>
+ <date>
+ 2004-05-03
+ </date>
+ <version identifier="0.0.3" date="2004-08-11" description="alpha version"/>
+ <subject category="GNOME|Core Desktop"/>
+ <description>
+ Ce document décrit les particularités d'oregano et les présente au travers d'exemples.
+ </description>
+ <type>
+ manual
+ </type>
+ <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//FR"/>
+ <identifier url=""/>
+ <language code="C"/>
+ <relation seriesid="b57e7e48-be78-11d6-85a3-d094906a987c"/>
+ <rights type="GNU FDL" license.version="1.1"
+ license="http://www.gnu.org/licenses/fdl.html" holder="Havoc
+ Pennington, John Fleck"/>
+ </resource>
+</omf>
diff --git a/help/fr/oregano.xml b/help/fr/oregano.xml
new file mode 100644
index 0000000..5560841
--- /dev/null
+++ b/help/fr/oregano.xml
@@ -0,0 +1,137 @@
+<?xml version="1.0"?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "/usr/share/xml/docbook/schema/dtd/4.1.2/docbookx.dtd" [
+ <!ENTITY legal SYSTEM "legal.xml">
+ <!ENTITY appversion "0.1">
+ <!ENTITY manrevision "0.1">
+ <!ENTITY date "03 Mayo 2004">
+ <!ENTITY app "<application>Oregano</application>">
+]>
+<article id="index" lang="fr">
+ <articleinfo>
+ <title>Guide de l'Utilisateur d'<application>Oregano</application></title>
+ <copyright>
+ <year>2003</year>
+ <year>2004</year>
+ <holder>LUGFi</holder>
+ </copyright>
+ <copyright>
+ <year>1999</year>
+ <year>2001</year>
+ <year>2002</year>
+ <holder>Richard Hult</holder>
+ </copyright>
+ <publisher>
+ <publishername> LUGFI </publishername>
+ </publisher>
+
+ <authorgroup>
+ <author>
+ <firstname>Ricardo</firstname> <surname>Markiewicz</surname>
+ <affiliation>
+ <address>
+ <email>rmarkie@fi.uba.ar</email>
+ </address>
+ </affiliation>
+ </author>
+ </authorgroup>
+ <revhistory>
+ <revision>
+ <revnumber>Oregano Manual V 0</revnumber>
+ <date>2004</date>
+ <revdescription>
+ <para role="author">Ricardo Markiewicz</para>
+ </revdescription>
+ </revision>
+ </revhistory>
+
+ <releaseinfo>
+ Oregano est à la fois un logiciel de saisie de schéma
+ éléctrique et un outil de simulation. Dans son utilisation,
+ il simplifie la conception de cicuit éléctrique simple en
+ laissant l'utilisateur passer facilement de la saisie du
+ schéma à la simulation.
+
+ Ce document ne prétend être qu'une introduction à la simulation
+ éléctrique pour celui qui est déjà familier à ce genre de pratique.
+ </releaseinfo>
+ <legalnotice>
+ <title>Retour d'expérience</title>
+ <para>Pour faire part d'un problème ou faire une suggestion au
+ sujet de <application>Oregano</application> ou de ce guide, nous
+ vous proposons de suivre les instructions proposées dans <ulink
+ url="ghelp:oregano-feedback" type="help">Oregano Feedback Page</ulink>.
+ </para>
+ </legalnotice>
+ </articleinfo>
+
+ <sect1 id="getting-started">
+ <title>Comment utiliser oregano pour la première fois</title>
+
+ <para>Quand vous lancez Oregano, vous vous trouvez face à une feuille
+ de saisie vide, sur laquelle vous pouvez placer des composants et les
+ relier. Pour positionner un composant, sélectionner le dans le navigateur
+ de composants installé sur le côté droit de la fenêtre de l'application.
+ Appuyer, alors, sur le boutton « Placer » ou bien clicker deux fois sur
+ le composant choisi. Vous pouvez aussi partir du composant prévisualisé,
+ le faire glisser et le coller sur la feuille de saisie.</para>
+
+ <para>Une fois que quelques composants sont positionnés sur la feuille
+ de saisie, vous pouvez commencez à les connecter. Sélectionner l'outil
+ de saisie des fils éléctriques sur la barre d'outils et clicker une fois
+ avec le boutton gauche de la souris pour déterminer le lieu de départ du
+ cablage. Pour arrêter le fil, cliquer à nouveau sur lieu où vous
+ souhaiter l'arrêter.</para>
+
+ <para>Assurez-vous d'avoir connecter au moins une masse au circuit,
+ celle-ci étant nécessaire pour réaliser une simulation.</para>
+
+ </sect1>
+
+ <sect1 id="editing">
+ <title>Saisie d'un circuit</title>
+
+ <para>Il existe quelques raccourcis calvier permettant d'accélérer l'édition du
+ schéma :</para>
+
+ <variablelist>
+ <varlistentry><term>Ctrl-A</term><listitem><para>Permet de sélectionner tous les objets
+ sur le schéma</para>
+ </listitem></varlistentry>
+
+ <varlistentry><term>Ctrl-Shift-A</term><listitem><para>Permet de désélectionner tous les objets</para>
+ </listitem></varlistentry>
+
+ <varlistentry><term>r</term><listitem><para>Permet de tourner l'objet sélectionner de 90 degrés dans le
+ sens des aiguilles d'une montre</para>
+ </listitem></varlistentry>
+
+ <varlistentry><term>&lt;Del&gt;</term><listitem><para>Permet de détruire les objets sélectionnés</para>
+ </listitem></varlistentry>
+
+ <varlistentry><term>l</term><listitem><para>Permet de mette en place le composant sélectionné</para>
+ </listitem></varlistentry>
+
+ </variablelist>
+
+ <para>Composants et fils sont sélectionnés en cliquant dessus, et en maintenant la
+ touche Shiftn vous pouvez effectuer une sélection multiple. Vous pouvez en outre
+ sélectionner plusieurs objets en les 'entourrant' : maintenez le boutton gauche appuyé
+ lorsque vous encadrez les objets que vous désirez sélectionner.</para>
+
+ </sect1>
+
+ <sect1 id="simulation">
+ <title>Simulation</title>
+
+ <para>Quand vous avez dessiné un circuit et souhaitez effectuer une simulation,
+ pressez soit le boutton sur la barre d'outils ou sélectionner <guimenu>Outils
+ </guimenu>-&gt;<guimenuitem>Simulation</guimenuitem>.
+ La simulation est alors lancée et vous suivez sa progression sur la fenêtre qui
+ apparait devant vous.</para>
+
+ <para>Si vous souhaitez changer les paramètres de simulation, sélectionner
+ <guimenu>Paramètres</guimenu>-&gt;<guimenuitem>Paramètres de Simulation</guimenuitem>.
+ </para>
+
+ </sect1>
+</article>
diff --git a/idl/oregano.idl b/idl/oregano.idl
new file mode 100644
index 0000000..4d37fcf
--- /dev/null
+++ b/idl/oregano.idl
@@ -0,0 +1,14 @@
+module GNOME {
+ module Oregano {
+ interface Sheet {
+
+ //
+ // Selection
+ //
+ void select_all ();
+ boolean is_all_selected ();
+
+ Sheet sheet_load (in string name);
+ };
+ };
+};
diff --git a/intl/ChangeLog b/intl/ChangeLog
new file mode 100644
index 0000000..1989501
--- /dev/null
+++ b/intl/ChangeLog
@@ -0,0 +1,1086 @@
+1998-04-29 Ulrich Drepper <drepper@cygnus.com>
+
+ * intl/localealias.c (read_alias_file): Use unsigned char for
+ local variables. Remove unused variable tp.
+ * intl/l10nflist.c (_nl_normalize_codeset): Use unsigned char *
+ for type of codeset. For loosing Solaris systems.
+ * intl/loadinfo.h: Adapt prototype of _nl_normalize_codeset.
+ * intl/bindtextdom.c (BINDTEXTDOMAIN): Don't define local variable
+ len if not needed.
+ Patches by Jim Meyering.
+
+1998-04-28 Ulrich Drepper <drepper@cygnus.com>
+
+ * loadmsgcat.c (_nl_load_domain): Don't assign the element use_mmap if
+ mmap is not supported.
+
+ * hash-string.h: Don't include <values.h>.
+
+1998-04-27 Ulrich Drepper <drepper@cygnus.com>
+
+ * textdomain.c: Use strdup is available.
+
+ * localealias.c: Define HAVE_MEMPCPY so that we can use this
+ function. Define and use semapahores to protect modfication of
+ global objects when compiling for glibc. Add code to allow
+ freeing alias table.
+
+ * l10nflist.c: Don't assume stpcpy not being a macro.
+
+ * gettextP.h: Define internal_function macri if not already done.
+ Use glibc byte-swap macros instead of defining SWAP when compiled
+ for glibc.
+ (struct loaded_domain): Add elements to allow unloading.
+
+ * Makefile.in (distclean): Don't remove libintl.h here.
+
+ * bindtextdomain.c: Carry over changes from glibc. Use strdup if
+ available.
+
+ * dcgettext.c: Don't assume stpcpy not being a macro. Mark internal
+ functions. Add memory freeing code for glibc.
+
+ * dgettext.c: Update copyright.
+
+ * explodename.c: Include stdlib.h and string.h only if they exist.
+ Use strings.h eventually.
+
+ * finddomain.c: Mark internal functions. Use strdup if available.
+ Add memory freeing code for glibc.
+
+1997-10-10 20:00 Ulrich Drepper <drepper@cygnus.com>
+
+ * libgettext.h: Fix dummy textdomain and bindtextdomain macros.
+ They should return reasonable values.
+ Reported by Tom Tromey <tromey@cygnus.com>.
+
+1997-09-16 03:33 Ulrich Drepper <drepper@cygnus.com>
+
+ * libgettext.h: Define PARAMS also to `args' if __cplusplus is defined.
+ * intlh.inst.in: Likewise.
+ Reported by Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>.
+
+ * libintl.glibc: Update from current glibc version.
+
+1997-09-06 02:10 Ulrich Drepper <drepper@cygnus.com>
+
+ * intlh.inst.in: Reformat copyright.
+
+1997-08-19 15:22 Ulrich Drepper <drepper@cygnus.com>
+
+ * dcgettext.c (DCGETTEXT): Remove wrong comment.
+
+1997-08-16 00:13 Ulrich Drepper <drepper@cygnus.com>
+
+ * Makefile.in (install-data): Don't change directory to install.
+
+1997-08-01 14:30 Ulrich Drepper <drepper@cygnus.com>
+
+ * cat-compat.c: Fix copyright.
+
+ * localealias.c: Don't define strchr unless !HAVE_STRCHR.
+
+ * loadmsgcat.c: Update copyright. Fix typos.
+
+ * l10nflist.c: Don't define strchr unless !HAVE_STRCHR.
+ (_nl_make_l10nflist): Handle sponsor and revision correctly.
+
+ * gettext.c: Update copyright.
+ * gettext.h: Likewise.
+ * hash-string.h: Likewise.
+
+ * finddomain.c: Remoave dead code. Define strchr only if
+ !HAVE_STRCHR.
+
+ * explodename.c: Include <sys/types.h>.
+
+ * explodename.c: Reformat copyright text.
+ (_nl_explode_name): Fix typo.
+
+ * dcgettext.c: Define and use __set_errno.
+ (guess_category_value): Don't use setlocale if HAVE_LC_MESSAGES is
+ not defined.
+
+ * bindtextdom.c: Pretty printing.
+
+1997-05-01 02:25 Ulrich Drepper <drepper@cygnus.com>
+
+ * dcgettext.c (guess_category_value): Don't depend on
+ HAVE_LC_MESSAGES. We don't need the macro here.
+ Patch by Bruno Haible <haible@ilog.fr>.
+
+ * cat-compat.c (textdomain): DoN't refer to HAVE_SETLOCALE_NULL
+ macro. Instead use HAVE_LOCALE_NULL and define it when using
+ glibc, as in dcgettext.c.
+ Patch by Bruno Haible <haible@ilog.fr>.
+
+ * Makefile.in (CPPFLAGS): New variable. Reported by Franc,ois
+ Pinard.
+
+Mon Mar 10 06:51:17 1997 Ulrich Drepper <drepper@cygnus.com>
+
+ * Makefile.in: Implement handling of libtool.
+
+ * gettextP.h: Change data structures for use of generic lowlevel
+ i18n file handling.
+
+Wed Dec 4 20:21:18 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * textdomain.c: Put parentheses around arguments of memcpy macro
+ definition.
+ * localealias.c: Likewise.
+ * l10nflist.c: Likewise.
+ * finddomain.c: Likewise.
+ * bindtextdom.c: Likewise.
+ Reported by Thomas Esken.
+
+Mon Nov 25 22:57:51 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * textdomain.c: Move definition of `memcpy` macro to right
+ position.
+
+Fri Nov 22 04:01:58 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * finddomain.c [!HAVE_STRING_H && !_LIBC]: Define memcpy using
+ bcopy if not already defined. Reported by Thomas Esken.
+ * bindtextdom.c: Likewise.
+ * l10nflist.c: Likewise.
+ * localealias.c: Likewise.
+ * textdomain.c: Likewise.
+
+Tue Oct 29 11:10:27 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * Makefile.in (libdir): Change to use exec_prefix instead of
+ prefix. Reported by Knut-HåvardAksnes <etokna@eto.ericsson.se>.
+
+Sat Aug 31 03:07:09 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * l10nflist.c (_nl_normalize_codeset): We convert to lower case,
+ so don't prepend uppercase `ISO' for only numeric arg.
+
+Fri Jul 19 00:15:46 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * l10nflist.c: Move inclusion of argz.h, ctype.h, stdlib.h after
+ definition of _GNU_SOURCE. Patch by Roland McGrath.
+
+ * Makefile.in (uninstall): Fix another bug with `for' loop and
+ empty arguments. Patch by Jim Meyering. Correct name os
+ uninstalled files: no intl- prefix anymore.
+
+ * Makefile.in (install-data): Again work around shells which
+ cannot handle mpty for list. Reported by Jim Meyering.
+
+Sat Jul 13 18:11:35 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * Makefile.in (install): Split goal. Now depend on install-exec
+ and install-data.
+ (install-exec, install-data): New goals. Created from former
+ install goal.
+ Reported by Karl Berry.
+
+Sat Jun 22 04:58:14 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * Makefile.in (MKINSTALLDIRS): New variable. Path to
+ mkinstalldirs script.
+ (install): use MKINSTALLDIRS variable or if the script is not present
+ try to find it in the $top_scrdir).
+
+Wed Jun 19 02:56:56 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * l10nflist.c: Linux libc *partly* includes the argz_* functions.
+ Grr. Work around by renaming the static version and use macros
+ for renaming.
+
+Tue Jun 18 20:11:17 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * l10nflist.c: Correct presence test macros of __argz_* functions.
+
+ * l10nflist.c: Include <argz.h> based on test of it instead when
+ __argz_* functions are available.
+ Reported by Andreas Schwab.
+
+Thu Jun 13 15:17:44 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * explodename.c, l10nflist.c: Define NULL for dumb systems.
+
+Tue Jun 11 17:05:13 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * intlh.inst.in, libgettext.h (dcgettext): Rename local variable
+ result to __result to prevent name clash.
+
+ * l10nflist.c, localealias.c, dcgettext.c: Define _GNU_SOURCE to
+ get prototype for stpcpy and strcasecmp.
+
+ * intlh.inst.in, libgettext.h: Move declaration of
+ `_nl_msg_cat_cntr' outside __extension__ block to prevent warning
+ from gcc's -Wnested-extern option.
+
+Fri Jun 7 01:58:00 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * Makefile.in (install): Remove comment.
+
+Thu Jun 6 17:28:17 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * Makefile.in (install): Work around for another Buglix stupidity.
+ Always use an `else' close for `if's. Reported by Nelson Beebe.
+
+ * Makefile.in (intlh.inst): Correct typo in phony rule.
+ Reported by Nelson Beebe.
+
+Thu Jun 6 01:49:52 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * dcgettext.c (read_alias_file): Rename variable alloca_list to
+ block_list as the macro calls assume.
+ Patch by Eric Backus.
+
+ * localealias.c [!HAVE_ALLOCA]: Define alloca as macro using
+ malloc.
+ (read_alias_file): Rename varriabe alloca_list to block_list as the
+ macro calls assume.
+ Patch by Eric Backus.
+
+ * l10nflist.c: Correct conditional for <argz.h> inclusion.
+ Reported by Roland McGrath.
+
+ * Makefile.in (all): Depend on all-@USE_INCLUDED_LIBINTL@, not
+ all-@USE_NLS@.
+
+ * Makefile.in (install): intlh.inst comes from local dir, not
+ $(srcdir).
+
+ * Makefile.in (intlh.inst): Special handling of this goal. If
+ used in gettext, this is really a rul to construct this file. If
+ used in any other package it is defined as a .PHONY rule with
+ empty body.
+
+ * finddomain.c: Extract locale file information handling into
+ l10nfile.c. Rename local stpcpy__ function to stpcpy.
+
+ * dcgettext.c (stpcpy): Add local definition.
+
+ * l10nflist.c: Solve some portability problems. Patches partly by
+ Thomas Esken. Add local definition of stpcpy.
+
+Tue Jun 4 02:47:49 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * intlh.inst.in: Don't depend including <locale.h> on
+ HAVE_LOCALE_H. Instead configure must rewrite this fiile
+ depending on the result of the configure run.
+
+ * Makefile.in (install): libintl.inst is now called intlh.inst.
+ Add rules for updating intlh.inst from intlh.inst.in.
+
+ * libintl.inst: Renamed to intlh.inst.in.
+
+ * localealias.c, dcgettext.c [__GNUC__]: Define HAVE_ALLOCA to 1
+ because gcc has __buitlin_alloca.
+ Reported by Roland McGrath.
+
+Mon Jun 3 00:32:16 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * Makefile.in (installcheck): New goal to fulfill needs of
+ automake's distcheck.
+
+ * Makefile.in (install): Reorder commands so that VERSION is
+ found.
+
+ * Makefile.in (gettextsrcdir): Now use subdirectory intl/ in
+ @datadir@/gettext.
+ (COMSRCS): Add l10nfile.c.
+ (OBJECTS): Add l10nfile.o.
+ (DISTFILES): Rename to DISTFILE.normal. Remove $(DISTFILES.common).
+ (DISTFILE.gettext): Remove $(DISTFILES.common).
+ (all-gettext): Remove goal.
+ (install): If $(PACKAGE) = gettext install, otherwose do nothing. No
+ package but gettext itself should install libintl.h + headers.
+ (dist): Extend goal to work for gettext, too.
+ (dist-gettext): Remove goal.
+
+ * dcgettext.c [!HAVE_ALLOCA]: Define macro alloca by using malloc.
+
+Sun Jun 2 17:33:06 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * loadmsgcat.c (_nl_load_domain): Parameter is now comes from
+ find_l10nfile.
+
+Sat Jun 1 02:23:03 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * l10nflist.c (__argz_next): Add definition.
+
+ * dcgettext.c [!HAVE_ALLOCA]: Add code for handling missing alloca
+ code. Use new l10nfile handling.
+
+ * localealias.c [!HAVE_ALLOCA]: Add code for handling missing
+ alloca code.
+
+ * l10nflist.c: Initial revision.
+
+Tue Apr 2 18:51:18 1996 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (all-gettext): New goal. Same as all-yes.
+
+Thu Mar 28 23:01:22 1996 Karl Eichwalder <ke@ke.central.de>
+
+ * Makefile.in (gettextsrcdir): Define using @datadir@.
+
+Tue Mar 26 12:39:14 1996 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c: Include <ctype.h>. Reported by Roland McGrath.
+
+Sat Mar 23 02:00:35 1996 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c (stpcpy): Rename to stpcpy__ to prevent clashing
+ with external declaration.
+
+Sat Mar 2 00:47:09 1996 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (all-no): Rename from all_no.
+
+Sat Feb 17 00:25:59 1996 Ulrich Drepper <drepper@myware>
+
+ * gettextP.h [loaded_domain]: Array `successor' must now contain up
+ to 63 elements (because of codeset name normalization).
+
+ * finddomain.c: Implement codeset name normalization.
+
+Thu Feb 15 04:39:09 1996 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (all): Define to `all-@USE_NLS@'.
+ (all-yes, all_no): New goals. `all-no' is noop, `all-yes'
+ is former all.
+
+Mon Jan 15 21:46:01 1996 Howard Gayle <howard@hal.com>
+
+ * localealias.c (alias_compare): Increment string pointers in loop
+ of strcasecmp replacement.
+
+Fri Dec 29 21:16:34 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (install-src): Who commented this goal out ? :-)
+
+Fri Dec 29 15:08:16 1995 Ulrich Drepper <drepper@myware>
+
+ * dcgettext.c (DCGETTEXT): Save `errno'. Failing system calls
+ should not effect it because a missing catalog is no error.
+ Reported by Harald K<o:>nig <koenig@tat.physik.uni-tuebingen.de>.
+
+Tue Dec 19 22:09:13 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (Makefile): Explicitly use $(SHELL) for running
+ shell scripts.
+
+Fri Dec 15 17:34:59 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * Makefile.in (install-src): Only install library and header when
+ we use the own implementation. Don't do it when using the
+ system's gettext or catgets functions.
+
+ * dcgettext.c (find_msg): Must not swap domain->hash_size here.
+
+Sat Dec 9 16:24:37 1995 Ulrich Drepper <drepper@myware>
+
+ * localealias.c, libintl.inst, libgettext.h, hash-string.h,
+ gettextP.h, finddomain.c, dcgettext.c, cat-compat.c:
+ Use PARAMS instead of __P. Suggested by Roland McGrath.
+
+Tue Dec 5 11:39:14 1995 Larry Schwimmer <rosebud@cyclone.stanford.edu>
+
+ * libgettext.h: Use `#if !defined (_LIBINTL_H)' instead of `#if
+ !_LIBINTL_H' because Solaris defines _LIBINTL_H as empty.
+
+Mon Dec 4 15:42:07 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (install-src):
+ Install libintl.inst instead of libintl.h.install.
+
+Sat Dec 2 22:51:38 1995 Marcus Daniels <marcus@sysc.pdx.edu>
+
+ * cat-compat.c (textdomain):
+ Reverse order in which files are tried you load. First
+ try local file, when this failed absolute path.
+
+Wed Nov 29 02:03:53 1995 Nelson H. F. Beebe <beebe@math.utah.edu>
+
+ * cat-compat.c (bindtextdomain): Add missing { }.
+
+Sun Nov 26 18:21:41 1995 Ulrich Drepper <drepper@myware>
+
+ * libintl.inst: Add missing __P definition. Reported by Nelson Beebe.
+
+ * Makefile.in:
+ Add dummy `all' and `dvi' goals. Reported by Tom Tromey.
+
+Sat Nov 25 16:12:01 1995 Franc,ois Pinard <pinard@iro.umontreal.ca>
+
+ * hash-string.h: Capitalize arguments of macros.
+
+Sat Nov 25 12:01:36 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (DISTFILES): Prevent files names longer than 13
+ characters. libintl.h.glibc->libintl.glibc,
+ libintl.h.install->libintl.inst. Reported by Joshua R. Poulson.
+
+Sat Nov 25 11:31:12 1995 Eric Backus <ericb@lsid.hp.com>
+
+ * dcgettext.c: Fix bug in preprocessor conditionals.
+
+Sat Nov 25 02:35:27 1995 Nelson H. F. Beebe <beebe@math.utah.edu>
+
+ * libgettext.h: Solaris cc does not understand
+ #if !SYMBOL1 && !SYMBOL2. Sad but true.
+
+Thu Nov 23 16:22:14 1995 Ulrich Drepper <drepper@myware>
+
+ * hash-string.h (hash_string):
+ Fix for machine with >32 bit `unsigned long's.
+
+ * dcgettext.c (DCGETTEXT):
+ Fix horrible bug in loop for alternative translation.
+
+Thu Nov 23 01:45:29 1995 Ulrich Drepper <drepper@myware>
+
+ * po2tbl.sed.in, linux-msg.sed, xopen-msg.sed:
+ Some further simplifications in message number generation.
+
+Mon Nov 20 21:08:43 1995 Ulrich Drepper <drepper@myware>
+
+ * libintl.h.glibc: Use __const instead of const in prototypes.
+
+ * Makefile.in (install-src):
+ Install libintl.h.install instead of libintl.h. This
+ is a stripped-down version. Suggested by Peter Miller.
+
+ * libintl.h.install, libintl.h.glibc: Initial revision.
+
+ * localealias.c (_nl_expand_alias, read_alias_file):
+ Protect prototypes in type casts by __P.
+
+Tue Nov 14 16:43:58 1995 Ulrich Drepper <drepper@myware>
+
+ * hash-string.h: Correct prototype for hash_string.
+
+Sun Nov 12 12:42:30 1995 Ulrich Drepper <drepper@myware>
+
+ * hash-string.h (hash_string): Add prototype.
+
+ * gettextP.h: Fix copyright.
+ (SWAP): Add prototype.
+
+Wed Nov 8 22:56:33 1995 Ulrich Drepper <drepper@myware>
+
+ * localealias.c (read_alias_file): Forgot sizeof.
+ Avoid calling *printf function. This introduces a big overhead.
+ Patch by Roland McGrath.
+
+Tue Nov 7 14:21:08 1995 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c, cat-compat.c: Wrong indentation in #if for stpcpy.
+
+ * finddomain.c (stpcpy):
+ Define substitution function local. The macro was to flaky.
+
+ * cat-compat.c: Fix typo.
+
+ * xopen-msg.sed, linux-msg.sed:
+ While bringing message number to right place only accept digits.
+
+ * linux-msg.sed, xopen-msg.sed: Now that the counter does not have
+ leading 0s we don't need to remove them. Reported by Marcus
+ Daniels.
+
+ * Makefile.in (../po/cat-id-tbl.o): Use $(top_srdir) in
+ dependency. Reported by Marcus Daniels.
+
+ * cat-compat.c: (stpcpy) [!_LIBC && !HAVE_STPCPY]: Define replacement.
+ Generally cleanup using #if instead of #ifndef.
+
+ * Makefile.in: Correct typos in comment. By Franc,ois Pinard.
+
+Mon Nov 6 00:27:02 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (install-src): Don't install libintl.h and libintl.a
+ if we use an available gettext implementation.
+
+Sun Nov 5 22:02:08 1995 Ulrich Drepper <drepper@myware>
+
+ * libgettext.h: Fix typo: HAVE_CATGETTS -> HAVE_CATGETS. Reported
+ by Franc,ois Pinard.
+
+ * libgettext.h: Use #if instead of #ifdef/#ifndef.
+
+ * finddomain.c:
+ Comments describing what has to be done should start with FIXME.
+
+Sun Nov 5 19:38:01 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (DISTFILES): Split. Use DISTFILES with normal meaning.
+ DISTFILES.common names the files common to both dist goals.
+ DISTFILES.gettext are the files only distributed in GNU gettext.
+
+Sun Nov 5 17:32:54 1995 Ulrich Drepper <drepper@myware>
+
+ * dcgettext.c (DCGETTEXT): Correct searching in derived locales.
+ This was necessary since a change in _nl_find_msg several weeks
+ ago. I really don't know this is still not fixed.
+
+Sun Nov 5 12:43:12 1995 Ulrich Drepper <drepper@myware>
+
+ * loadmsgcat.c (_nl_load_domain): Test for FILENAME == NULL. This
+ might mark a special condition.
+
+ * finddomain.c (make_entry_rec): Don't make illegal entry as decided.
+
+ * Makefile.in (dist): Suppress error message when ln failed.
+ Get files from $(srcdir) explicitly.
+
+ * libgettext.h (gettext_const): Rename to gettext_noop.
+
+Fri Nov 3 07:36:50 1995 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c (make_entry_rec):
+ Protect against wrong locale names by testing mask.
+
+ * libgettext.h (gettext_const): Add macro definition.
+ Capitalize macro arguments.
+
+Thu Nov 2 23:15:51 1995 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c (_nl_find_domain):
+ Test for pointer != NULL before accessing value.
+ Reported by Tom Tromey.
+
+ * gettext.c (NULL):
+ Define as (void*)0 instad of 0. Reported by Franc,ois Pinard.
+
+Mon Oct 30 21:28:52 1995 Ulrich Drepper <drepper@myware>
+
+ * po2tbl.sed.in: Serious typo bug fixed by Jim Meyering.
+
+Sat Oct 28 23:20:47 1995 Ulrich Drepper <drepper@myware>
+
+ * libgettext.h: Disable dcgettext optimization for Solaris 2.3.
+
+ * localealias.c (alias_compare):
+ Peter Miller reported that tolower in some systems is
+ even dumber than I thought. Protect call by `isupper'.
+
+Fri Oct 27 22:22:51 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (libdir, includedir): New variables.
+ (install-src): Install libintl.a and libintl.h in correct dirs.
+
+Fri Oct 27 22:07:29 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (SOURCES): Fix typo: intrl.compat.c -> intl-compat.c.
+
+ * po2tbl.sed.in: Patch for buggy SEDs by Christian von Roques.
+
+ * localealias.c:
+ Fix typo and superflous test. Reported by Christian von Roques.
+
+Fri Oct 6 11:52:05 1995 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c (_nl_find_domain):
+ Correct some remainder from the pre-CEN syntax. Now
+ we don't have a constant number of successors anymore.
+
+Wed Sep 27 21:41:13 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (DISTFILES): Add libintl.h.glibc.
+
+ * Makefile.in (dist-libc): Add goal for packing sources for glibc.
+ (COMSRCS, COMHDRS): Splitted to separate sources shared with glibc.
+
+ * loadmsgcat.c: Forget to continue #if line.
+
+ * localealias.c:
+ [_LIBC]: Rename strcasecmp to __strcasecmp to keep ANSI C name
+ space clean.
+
+ * dcgettext.c, finddomain.c: Better comment to last change.
+
+ * loadmsgcat.c:
+ [_LIBC]: Rename fstat, open, close, read, mmap, and munmap to
+ __fstat, __open, __close, __read, __mmap, and __munmap resp
+ to keep ANSI C name space clean.
+
+ * finddomain.c:
+ [_LIBC]: Rename stpcpy to __stpcpy to keep ANSI C name space clean.
+
+ * dcgettext.c:
+ [_LIBC]: Rename getced and stpcpy to __getcwd and __stpcpy resp to
+ keep ANSI C name space clean.
+
+ * libgettext.h:
+ Include sys/types.h for those old SysV systems out there.
+ Reported by Francesco Potorti`.
+
+ * loadmsgcat.c (use_mmap): Define if compiled for glibc.
+
+ * bindtextdom.c: Include all those standard headers
+ unconditionally if _LIBC is defined.
+
+ * finddomain.c: Fix 2 times defiend -> defined.
+
+ * textdomain.c: Include libintl.h instead of libgettext.h when
+ compiling for glibc. Include all those standard headers
+ unconditionally if _LIBC is defined.
+
+ * localealias.c, loadmsgcat.c: Prepare to be compiled in glibc.
+
+ * gettext.c:
+ Include libintl.h instead of libgettext.h when compiling for glibc.
+ Get NULL from stddef.h if we compile for glibc.
+
+ * finddomain.c: Include libintl.h instead of libgettext.h when
+ compiling for glibc. Include all those standard headers
+ unconditionally if _LIBC is defined.
+
+ * dcgettext.c: Include all those standard headers unconditionally
+ if _LIBC is defined.
+
+ * dgettext.c: If compiled in glibc include libintl.h instead of
+ libgettext.h.
+ (locale.h): Don't rely on HAVE_LOCALE_H when compiling for glibc.
+
+ * dcgettext.c: If compiled in glibc include libintl.h instead of
+ libgettext.h.
+ (getcwd): Don't rely on HAVE_GETCWD when compiling for glibc.
+
+ * bindtextdom.c:
+ If compiled in glibc include libintl.h instead of libgettext.h.
+
+Mon Sep 25 22:23:06 1995 Ulrich Drepper <drepper@myware>
+
+ * localealias.c (_nl_expand_alias): Don't call bsearch if NMAP <= 0.
+ Reported by Marcus Daniels.
+
+ * cat-compat.c (bindtextdomain):
+ String used in putenv must not be recycled.
+ Reported by Marcus Daniels.
+
+ * libgettext.h (__USE_GNU_GETTEXT):
+ Additional symbol to signal that we use GNU gettext
+ library.
+
+ * cat-compat.c (bindtextdomain):
+ Fix bug with the strange stpcpy replacement.
+ Reported by Nelson Beebe.
+
+Sat Sep 23 08:23:51 1995 Ulrich Drepper <drepper@myware>
+
+ * cat-compat.c: Include <string.h> for stpcpy prototype.
+
+ * localealias.c (read_alias_file):
+ While expand strdup code temporary variable `cp' hided
+ higher level variable with same name. Rename to `tp'.
+
+ * textdomain.c (textdomain):
+ Avoid warning by using temporary variable in strdup code.
+
+ * finddomain.c (_nl_find_domain): Remove unused variable `application'.
+
+Thu Sep 21 15:51:44 1995 Ulrich Drepper <drepper@myware>
+
+ * localealias.c (alias_compare):
+ Use strcasecmp() only if available. Else use
+ implementation in place.
+
+ * intl-compat.c:
+ Wrapper functions now call *__ functions instead of __*.
+
+ * libgettext.h: Declare prototypes for *__ functions instead for __*.
+
+ * cat-compat.c, loadmsgcat.c:
+ Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
+ of the standard libc and so prevent libintl.a from being used
+ standalone.
+
+ * bindtextdom.c:
+ Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
+ of the standard libc and so prevent libintl.a from being used
+ standalone.
+ Rename to bindtextdomain__ if not used in GNU C Library.
+
+ * dgettext.c:
+ Rename function to dgettext__ if not used in GNU C Library.
+
+ * gettext.c:
+ Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
+ of the standard libc and so prevent libintl.a from being used
+ standalone.
+ Functions now called gettext__ if not used in GNU C Library.
+
+ * dcgettext.c, localealias.c, textdomain.c, finddomain.c:
+ Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
+ of the standard libc and so prevent libintl.a from being used
+ standalone.
+
+Sun Sep 17 23:14:49 1995 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c: Correct some bugs in handling of CEN standard
+ locale definitions.
+
+Thu Sep 7 01:49:28 1995 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c: Implement CEN syntax.
+
+ * gettextP.h (loaded_domain): Extend number of successors to 31.
+
+Sat Aug 19 19:25:29 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (aliaspath): Remove path to X11 locale dir.
+
+ * Makefile.in: Make install-src depend on install. This helps
+ gettext to install the sources and other packages can use the
+ install goal.
+
+Sat Aug 19 15:19:33 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (uninstall): Remove stuff installed by install-src.
+
+Tue Aug 15 13:13:53 1995 Ulrich Drepper <drepper@myware>
+
+ * VERSION.in: Initial revision.
+
+ * Makefile.in (DISTFILES):
+ Add VERSION file. This is not necessary for gettext, but
+ for other packages using this library.
+
+Tue Aug 15 06:16:44 1995 Ulrich Drepper <drepper@myware>
+
+ * gettextP.h (_nl_find_domain):
+ New prototype after changing search strategy.
+
+ * finddomain.c (_nl_find_domain):
+ We now try only to find a specified catalog. Fall back to other
+ catalogs listed in the locale list is now done in __dcgettext.
+
+ * dcgettext.c (__dcgettext):
+ Now we provide message fall back even to different languages.
+ I.e. if a message is not available in one language all the other
+ in the locale list a tried. Formerly fall back was only possible
+ within one language. Implemented by moving one loop from
+ _nl_find_domain to here.
+
+Mon Aug 14 23:45:50 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (gettextsrcdir):
+ Directory where source of GNU gettext library are made
+ available.
+ (INSTALL, INSTALL_DATA): Programs used for installing sources.
+ (gettext-src): New. Rule to install GNU gettext sources for use in
+ gettextize shell script.
+
+Sun Aug 13 14:40:48 1995 Ulrich Drepper <drepper@myware>
+
+ * loadmsgcat.c (_nl_load_domain):
+ Use mmap for loading only when munmap function is
+ also available.
+
+ * Makefile.in (install): Depend on `all' goal.
+
+Wed Aug 9 11:04:33 1995 Ulrich Drepper <drepper@myware>
+
+ * localealias.c (read_alias_file):
+ Do not overwrite '\n' when terminating alias value string.
+
+ * localealias.c (read_alias_file):
+ Handle long lines. Ignore the rest not fitting in
+ the buffer after the initial `fgets' call.
+
+Wed Aug 9 00:54:29 1995 Ulrich Drepper <drepper@myware>
+
+ * gettextP.h (_nl_load_domain):
+ Add prototype, replacing prototype for _nl_load_msg_cat.
+
+ * finddomain.c (_nl_find_domain):
+ Remove unneeded variable filename and filename_len.
+ (expand_alias): Remove prototype because functions does not
+ exist anymore.
+
+ * localealias.c (read_alias_file):
+ Change type of fname_len parameter to int.
+ (xmalloc): Add prototype.
+
+ * loadmsgcat.c: Better prototypes for xmalloc.
+
+Tue Aug 8 22:30:39 1995 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c (_nl_find_domain):
+ Allow alias name to be constructed from the four components.
+
+ * Makefile.in (aliaspath): New variable. Set to preliminary value.
+ (SOURCES): Add localealias.c.
+ (OBJECTS): Add localealias.o.
+
+ * gettextP.h: Add prototype for _nl_expand_alias.
+
+ * finddomain.c: Aliasing handled in intl/localealias.c.
+
+ * localealias.c: Aliasing for locale names.
+
+ * bindtextdom.c: Better prototypes for xmalloc and xstrdup.
+
+Mon Aug 7 23:47:42 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (DISTFILES): gettext.perl is now found in misc/.
+
+ * cat-compat.c (bindtextdomain):
+ Correct implementation. dirname parameter was not used.
+ Reported by Marcus Daniels.
+
+ * gettextP.h (loaded_domain):
+ New fields `successor' and `decided' for oo, lazy
+ message handling implementation.
+
+ * dcgettext.c:
+ Adopt for oo, lazy message handliing.
+ Now we can inherit translations from less specific locales.
+ (find_msg): New function.
+
+ * loadmsgcat.c, finddomain.c:
+ Complete rewrite. Implement oo, lazy message handling :-).
+ We now have an additional environment variable `LANGUAGE' with
+ a higher priority than LC_ALL for the LC_MESSAGE locale.
+ Here we can set a colon separated list of specifications each
+ of the form `language[_territory[.codeset]][@modifier]'.
+
+Sat Aug 5 09:55:42 1995 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c (unistd.h):
+ Include to get _PC_PATH_MAX defined on system having it.
+
+Fri Aug 4 22:42:00 1995 Ulrich Drepper <drepper@myware>
+
+ * finddomain.c (stpcpy): Include prototype.
+
+ * Makefile.in (dist): Remove `copying instead' message.
+
+Wed Aug 2 18:52:03 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (ID, TAGS): Do not use $^.
+
+Tue Aug 1 20:07:11 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (TAGS, ID): Use $^ as command argument.
+ (TAGS): Give etags -o option t write to current directory,
+ not $(srcdir).
+ (ID): Use $(srcdir) instead os $(top_srcdir)/src.
+ (distclean): Remove ID.
+
+Sun Jul 30 11:51:46 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (gnulocaledir):
+ New variable, always using share/ for data directory.
+ (DEFS): Add GNULOCALEDIR, used in finddomain.c.
+
+ * finddomain.c (_nl_default_dirname):
+ Set to GNULOCALEDIR, because it always has to point
+ to the directory where GNU gettext Library writes it to.
+
+ * intl-compat.c (textdomain, bindtextdomain):
+ Undefine macros before function definition.
+
+Sat Jul 22 01:10:02 1995 Ulrich Drepper <drepper@myware>
+
+ * libgettext.h (_LIBINTL_H):
+ Protect definition in case where this file is included as
+ libgettext.h on Solaris machines. Add comment about this.
+
+Wed Jul 19 02:36:42 1995 Ulrich Drepper <drepper@myware>
+
+ * intl-compat.c (textdomain): Correct typo.
+
+Wed Jul 19 01:51:35 1995 Ulrich Drepper <drepper@myware>
+
+ * dcgettext.c (dcgettext): Function now called __dcgettext.
+
+ * dgettext.c (dgettext): Now called __dgettext and calls
+ __dcgettext.
+
+ * gettext.c (gettext):
+ Function now called __gettext and calls __dgettext.
+
+ * textdomain.c (textdomain): Function now called __textdomain.
+
+ * bindtextdom.c (bindtextdomain): Function now called
+ __bindtextdomain.
+
+ * intl-compat.c: Initial revision.
+
+ * Makefile.in (SOURCES): Add intl-compat.c.
+ (OBJECTS): We always compile the GNU gettext library functions.
+ OBJECTS contains all objects but cat-compat.o, ../po/cat-if-tbl.o,
+ and intl-compat.o.
+ (GETTOBJS): Contains now only intl-compat.o.
+
+ * libgettext.h:
+ Re-include protection matches dualistic character of libgettext.h.
+ For all functions in GNU gettext library define __ counter part.
+
+ * finddomain.c (strchr): Define as index if not found in C library.
+ (_nl_find_domain): For relative paths paste / in between.
+
+Tue Jul 18 16:37:45 1995 Ulrich Drepper <drepper@myware>
+
+ * loadmsgcat.c, finddomain.c: Add inclusion of sys/types.h.
+
+ * xopen-msg.sed: Fix bug with `msgstr ""' lines.
+ A little bit better comments.
+
+Tue Jul 18 01:18:27 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in:
+ po-mode.el, makelinks, combine-sh are now found in ../misc.
+
+ * po-mode.el, makelinks, combine-sh, elisp-comp:
+ Moved to ../misc/.
+
+ * libgettext.h, gettextP.h, gettext.h: Uniform test for __STDC__.
+
+Sun Jul 16 22:33:02 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (INSTALL, INSTALL_DATA): New variables.
+ (install-data, uninstall): Install/uninstall .elc file.
+
+ * po-mode.el (Installation comment):
+ Add .pox as possible extension of .po files.
+
+Sun Jul 16 13:23:27 1995 Ulrich Drepper <drepper@myware>
+
+ * elisp-comp: Complete new version by Franc,ois: This does not
+ fail when not compiling in the source directory.
+
+Sun Jul 16 00:12:17 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (../po/cat-id-tbl.o):
+ Use $(MAKE) instead of make for recursive make.
+
+ * Makefile.in (.el.elc): Use $(SHELL) instead of /bin/sh.
+ (install-exec): Add missing dummy goal.
+ (install-data, uninstall): @ in multi-line shell command at
+ beginning, not in front of echo. Reported by Eric Backus.
+
+Sat Jul 15 00:21:28 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (DISTFILES):
+ Rename libgettext.perl to gettext.perl to fit in 14 chars
+ file systems.
+
+ * gettext.perl:
+ Rename to gettext.perl to fit in 14 chars file systems.
+
+Thu Jul 13 23:17:20 1995 Ulrich Drepper <drepper@myware>
+
+ * cat-compat.c: If !STDC_HEADERS try to include malloc.h.
+
+Thu Jul 13 20:55:02 1995 Ulrich Drepper <drepper@myware>
+
+ * po2tbl.sed.in: Pretty printing.
+
+ * linux-msg.sed, xopen-msg.sed:
+ Correct bugs with handling substitute flags in branches.
+
+ * hash-string.h (hash_string):
+ Old K&R compilers don't under stand `unsigned char'.
+
+ * gettext.h (nls_uint32):
+ Some old K&R compilers (eg HP) don't understand `unsigned int'.
+
+ * cat-compat.c (msg_to_cat_id): De-ANSI-fy prototypes.
+
+Thu Jul 13 01:34:33 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (ELCFILES): New variable.
+ (DISTFILES): Add elisp-comp.
+ Add implicit rule for .el -> .elc compilation.
+ (install-data): install $ELCFILES
+ (clean): renamed po-to-tbl and po-to-msg to po2tbl and po2msg resp.
+
+ * elisp-comp: Initial revision
+
+Wed Jul 12 16:14:52 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in:
+ cat-id-tbl.c is now found in po/. This enables us to use an identical
+ intl/ directory in all packages.
+
+ * dcgettext.c (dcgettext): hashing does not work for table size <= 2.
+
+ * textdomain.c: fix typo (#if def -> #if defined)
+
+Tue Jul 11 18:44:43 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in (stamp-cat-id): use top_srcdir to address source files
+ (DISTFILES,distclean): move tupdate.perl to src/
+
+ * po-to-tbl.sed.in:
+ add additional jump to clear change flag to recognize multiline strings
+
+Tue Jul 11 01:32:50 1995 Ulrich Drepper <drepper@myware>
+
+ * textdomain.c: Protect inclusion of stdlib.h and string.h.
+
+ * loadmsgcat.c: Protect inclusion of stdlib.h.
+
+ * libgettext.h: Protect inclusion of locale.h.
+ Allow use in C++ programs.
+ Define NULL is not happened already.
+
+ * Makefile.in (DISTFILES): ship po-to-tbl.sed.in instead of
+ po-to-tbl.sed.
+ (distclean): remove po-to-tbl.sed and tupdate.perl.
+
+ * tupdate.perl.in: Substitute Perl path even in exec line.
+ Don't include entries without translation from old .po file.
+
+Tue Jul 4 00:41:51 1995 Ulrich Drepper <drepper@myware>
+
+ * tupdate.perl.in: use "Updated: " in msgid "".
+
+ * cat-compat.c: Fix typo (LOCALDIR -> LOCALEDIR).
+ Define getenv if !__STDC__.
+
+ * bindtextdom.c: Protect stdlib.h and string.h inclusion.
+ Define free if !__STDC__.
+
+ * finddomain.c: Change DEF_MSG_DOM_DIR to LOCALEDIR.
+ Define free if !__STDC__.
+
+ * cat-compat.c: Change DEF_MSG_DOM_DIR to LOCALEDIR.
+
+Mon Jul 3 23:56:30 1995 Ulrich Drepper <drepper@myware>
+
+ * Makefile.in: Use LOCALEDIR instead of DEF_MSG_DOM_DIR.
+ Remove unneeded $(srcdir) from Makefile.in dependency.
+
+ * makelinks: Add copyright and short description.
+
+ * po-mode.el: Last version for 0.7.
+
+ * tupdate.perl.in: Fix die message.
+
+ * dcgettext.c: Protect include of string.h.
+
+ * gettext.c: Protect include of stdlib.h and further tries to get NULL.
+
+ * finddomain.c: Some corrections in includes.
+
+ * Makefile.in (INCLUDES): Prune list correct path to Makefile.in.
+
+ * po-to-tbl.sed: Adopt for new .po file format.
+
+ * linux-msg.sed, xopen-msg.sed: Adopt for new .po file format.
+
+Sun Jul 2 23:55:03 1995 Ulrich Drepper <drepper@myware>
+
+ * tupdate.perl.in: Complete rewrite for new .po file format.
+
+Sun Jul 2 02:06:50 1995 Ulrich Drepper <drepper@myware>
+
+ * First official release. This directory contains all the code
+ needed to internationalize own packages. It provides functions
+ which allow to use the X/Open catgets function with an interface
+ like the Uniforum gettext function. For system which does not
+ have neither of those a complete implementation is provided.
diff --git a/intl/VERSION b/intl/VERSION
new file mode 100644
index 0000000..ee66b06
--- /dev/null
+++ b/intl/VERSION
@@ -0,0 +1 @@
+GNU gettext library from gettext-0.10.35
diff --git a/intl/bindtextdom.c b/intl/bindtextdom.c
new file mode 100644
index 0000000..d9c3f34
--- /dev/null
+++ b/intl/bindtextdom.c
@@ -0,0 +1,203 @@
+/* Implementation of the bindtextdomain(3) function
+ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+
+ 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, 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. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#else
+# ifdef HAVE_MALLOC_H
+# include <malloc.h>
+# else
+void free ();
+# endif
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+# include <string.h>
+#else
+# include <strings.h>
+# ifndef memcpy
+# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
+# endif
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "libgettext.h"
+#endif
+#include "gettext.h"
+#include "gettextP.h"
+
+/* @@ end of prolog @@ */
+
+/* Contains the default location of the message catalogs. */
+extern const char _nl_default_dirname[];
+
+/* List with bindings of specific domains. */
+extern struct binding *_nl_domain_bindings;
+
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define BINDTEXTDOMAIN __bindtextdomain
+# ifndef strdup
+# define strdup(str) __strdup (str)
+# endif
+#else
+# define BINDTEXTDOMAIN bindtextdomain__
+#endif
+
+/* Specify that the DOMAINNAME message catalog will be found
+ in DIRNAME rather than in the system locale data base. */
+char *
+BINDTEXTDOMAIN (domainname, dirname)
+ const char *domainname;
+ const char *dirname;
+{
+ struct binding *binding;
+
+ /* Some sanity checks. */
+ if (domainname == NULL || domainname[0] == '\0')
+ return NULL;
+
+ for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
+ {
+ int compare = strcmp (domainname, binding->domainname);
+ if (compare == 0)
+ /* We found it! */
+ break;
+ if (compare < 0)
+ {
+ /* It is not in the list. */
+ binding = NULL;
+ break;
+ }
+ }
+
+ if (dirname == NULL)
+ /* The current binding has be to returned. */
+ return binding == NULL ? (char *) _nl_default_dirname : binding->dirname;
+
+ if (binding != NULL)
+ {
+ /* The domain is already bound. If the new value and the old
+ one are equal we simply do nothing. Otherwise replace the
+ old binding. */
+ if (strcmp (dirname, binding->dirname) != 0)
+ {
+ char *new_dirname;
+
+ if (strcmp (dirname, _nl_default_dirname) == 0)
+ new_dirname = (char *) _nl_default_dirname;
+ else
+ {
+#if defined _LIBC || defined HAVE_STRDUP
+ new_dirname = strdup (dirname);
+ if (new_dirname == NULL)
+ return NULL;
+#else
+ size_t len = strlen (dirname) + 1;
+ new_dirname = (char *) malloc (len);
+ if (new_dirname == NULL)
+ return NULL;
+
+ memcpy (new_dirname, dirname, len);
+#endif
+ }
+
+ if (binding->dirname != _nl_default_dirname)
+ free (binding->dirname);
+
+ binding->dirname = new_dirname;
+ }
+ }
+ else
+ {
+ /* We have to create a new binding. */
+#if !defined _LIBC && !defined HAVE_STRDUP
+ size_t len;
+#endif
+ struct binding *new_binding =
+ (struct binding *) malloc (sizeof (*new_binding));
+
+ if (new_binding == NULL)
+ return NULL;
+
+#if defined _LIBC || defined HAVE_STRDUP
+ new_binding->domainname = strdup (domainname);
+ if (new_binding->domainname == NULL)
+ return NULL;
+#else
+ len = strlen (domainname) + 1;
+ new_binding->domainname = (char *) malloc (len);
+ if (new_binding->domainname == NULL)
+ return NULL;
+ memcpy (new_binding->domainname, domainname, len);
+#endif
+
+ if (strcmp (dirname, _nl_default_dirname) == 0)
+ new_binding->dirname = (char *) _nl_default_dirname;
+ else
+ {
+#if defined _LIBC || defined HAVE_STRDUP
+ new_binding->dirname = strdup (dirname);
+ if (new_binding->dirname == NULL)
+ return NULL;
+#else
+ len = strlen (dirname) + 1;
+ new_binding->dirname = (char *) malloc (len);
+ if (new_binding->dirname == NULL)
+ return NULL;
+ memcpy (new_binding->dirname, dirname, len);
+#endif
+ }
+
+ /* Now enqueue it. */
+ if (_nl_domain_bindings == NULL
+ || strcmp (domainname, _nl_domain_bindings->domainname) < 0)
+ {
+ new_binding->next = _nl_domain_bindings;
+ _nl_domain_bindings = new_binding;
+ }
+ else
+ {
+ binding = _nl_domain_bindings;
+ while (binding->next != NULL
+ && strcmp (domainname, binding->next->domainname) > 0)
+ binding = binding->next;
+
+ new_binding->next = binding->next;
+ binding->next = new_binding;
+ }
+
+ binding = new_binding;
+ }
+
+ return binding->dirname;
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library. */
+weak_alias (__bindtextdomain, bindtextdomain);
+#endif
diff --git a/intl/cat-compat.c b/intl/cat-compat.c
new file mode 100644
index 0000000..867d901
--- /dev/null
+++ b/intl/cat-compat.c
@@ -0,0 +1,262 @@
+/* Compatibility code for gettext-using-catgets interface.
+ Copyright (C) 1995, 1997 Free Software Foundation, Inc.
+
+ 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, 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. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <string.h>
+#else
+char *getenv ();
+# ifdef HAVE_MALLOC_H
+# include <malloc.h>
+# endif
+#endif
+
+#ifdef HAVE_NL_TYPES_H
+# include <nl_types.h>
+#endif
+
+#include "libgettext.h"
+
+/* @@ end of prolog @@ */
+
+/* XPG3 defines the result of `setlocale (category, NULL)' as:
+ ``Directs `setlocale()' to query `category' and return the current
+ setting of `local'.''
+ However it does not specify the exact format. And even worse: POSIX
+ defines this not at all. So we can use this feature only on selected
+ system (e.g. those using GNU C Library). */
+#ifdef _LIBC
+# define HAVE_LOCALE_NULL
+#endif
+
+/* The catalog descriptor. */
+static nl_catd catalog = (nl_catd) -1;
+
+/* Name of the default catalog. */
+static const char default_catalog_name[] = "messages";
+
+/* Name of currently used catalog. */
+static const char *catalog_name = default_catalog_name;
+
+/* Get ID for given string. If not found return -1. */
+static int msg_to_cat_id PARAMS ((const char *msg));
+
+/* Substitution for systems lacking this function in their C library. */
+#if !_LIBC && !HAVE_STPCPY
+static char *stpcpy PARAMS ((char *dest, const char *src));
+#endif
+
+
+/* Set currently used domain/catalog. */
+char *
+textdomain (domainname)
+ const char *domainname;
+{
+ nl_catd new_catalog;
+ char *new_name;
+ size_t new_name_len;
+ char *lang;
+
+#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES \
+ && defined HAVE_LOCALE_NULL
+ lang = setlocale (LC_MESSAGES, NULL);
+#else
+ lang = getenv ("LC_ALL");
+ if (lang == NULL || lang[0] == '\0')
+ {
+ lang = getenv ("LC_MESSAGES");
+ if (lang == NULL || lang[0] == '\0')
+ lang = getenv ("LANG");
+ }
+#endif
+ if (lang == NULL || lang[0] == '\0')
+ lang = "C";
+
+ /* See whether name of currently used domain is asked. */
+ if (domainname == NULL)
+ return (char *) catalog_name;
+
+ if (domainname[0] == '\0')
+ domainname = default_catalog_name;
+
+ /* Compute length of added path element. */
+ new_name_len = sizeof (LOCALEDIR) - 1 + 1 + strlen (lang)
+ + sizeof ("/LC_MESSAGES/") - 1 + sizeof (PACKAGE) - 1
+ + sizeof (".cat");
+
+ new_name = (char *) malloc (new_name_len);
+ if (new_name == NULL)
+ return NULL;
+
+ strcpy (new_name, PACKAGE);
+ new_catalog = catopen (new_name, 0);
+
+ if (new_catalog == (nl_catd) -1)
+ {
+ /* NLSPATH search didn't work, try absolute path */
+ sprintf (new_name, "%s/%s/LC_MESSAGES/%s.cat", LOCALEDIR, lang,
+ PACKAGE);
+ new_catalog = catopen (new_name, 0);
+
+ if (new_catalog == (nl_catd) -1)
+ {
+ free (new_name);
+ return (char *) catalog_name;
+ }
+ }
+
+ /* Close old catalog. */
+ if (catalog != (nl_catd) -1)
+ catclose (catalog);
+ if (catalog_name != default_catalog_name)
+ free ((char *) catalog_name);
+
+ catalog = new_catalog;
+ catalog_name = new_name;
+
+ return (char *) catalog_name;
+}
+
+char *
+bindtextdomain (domainname, dirname)
+ const char *domainname;
+ const char *dirname;
+{
+#if HAVE_SETENV || HAVE_PUTENV
+ char *old_val, *new_val, *cp;
+ size_t new_val_len;
+
+ /* This does not make much sense here but to be compatible do it. */
+ if (domainname == NULL)
+ return NULL;
+
+ /* Compute length of added path element. If we use setenv we don't need
+ the first byts for NLSPATH=, but why complicate the code for this
+ peanuts. */
+ new_val_len = sizeof ("NLSPATH=") - 1 + strlen (dirname)
+ + sizeof ("/%L/LC_MESSAGES/%N.cat");
+
+ old_val = getenv ("NLSPATH");
+ if (old_val == NULL || old_val[0] == '\0')
+ {
+ old_val = NULL;
+ new_val_len += 1 + sizeof (LOCALEDIR) - 1
+ + sizeof ("/%L/LC_MESSAGES/%N.cat");
+ }
+ else
+ new_val_len += strlen (old_val);
+
+ new_val = (char *) malloc (new_val_len);
+ if (new_val == NULL)
+ return NULL;
+
+# if HAVE_SETENV
+ cp = new_val;
+# else
+ cp = stpcpy (new_val, "NLSPATH=");
+# endif
+
+ cp = stpcpy (cp, dirname);
+ cp = stpcpy (cp, "/%L/LC_MESSAGES/%N.cat:");
+
+ if (old_val == NULL)
+ {
+# if __STDC__
+ stpcpy (cp, LOCALEDIR "/%L/LC_MESSAGES/%N.cat");
+# else
+
+ cp = stpcpy (cp, LOCALEDIR);
+ stpcpy (cp, "/%L/LC_MESSAGES/%N.cat");
+# endif
+ }
+ else
+ stpcpy (cp, old_val);
+
+# if HAVE_SETENV
+ setenv ("NLSPATH", new_val, 1);
+ free (new_val);
+# else
+ putenv (new_val);
+ /* Do *not* free the environment entry we just entered. It is used
+ from now on. */
+# endif
+
+#endif
+
+ return (char *) domainname;
+}
+
+#undef gettext
+char *
+gettext (msg)
+ const char *msg;
+{
+ int msgid;
+
+ if (msg == NULL || catalog == (nl_catd) -1)
+ return (char *) msg;
+
+ /* Get the message from the catalog. We always use set number 1.
+ The message ID is computed by the function `msg_to_cat_id'
+ which works on the table generated by `po-to-tbl'. */
+ msgid = msg_to_cat_id (msg);
+ if (msgid == -1)
+ return (char *) msg;
+
+ return catgets (catalog, 1, msgid, (char *) msg);
+}
+
+/* Look through the table `_msg_tbl' which has `_msg_tbl_length' entries
+ for the one equal to msg. If it is found return the ID. In case when
+ the string is not found return -1. */
+static int
+msg_to_cat_id (msg)
+ const char *msg;
+{
+ int cnt;
+
+ for (cnt = 0; cnt < _msg_tbl_length; ++cnt)
+ if (strcmp (msg, _msg_tbl[cnt]._msg) == 0)
+ return _msg_tbl[cnt]._msg_number;
+
+ return -1;
+}
+
+
+/* @@ begin of epilog @@ */
+
+/* We don't want libintl.a to depend on any other library. So we
+ avoid the non-standard function stpcpy. In GNU C Library this
+ function is available, though. Also allow the symbol HAVE_STPCPY
+ to be defined. */
+#if !_LIBC && !HAVE_STPCPY
+static char *
+stpcpy (dest, src)
+ char *dest;
+ const char *src;
+{
+ while ((*dest++ = *src++) != '\0')
+ /* Do nothing. */ ;
+ return dest - 1;
+}
+#endif
diff --git a/intl/dcgettext.c b/intl/dcgettext.c
new file mode 100644
index 0000000..c4c7a2c
--- /dev/null
+++ b/intl/dcgettext.c
@@ -0,0 +1,624 @@
+/* Implementation of the dcgettext(3) function.
+ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+
+ 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, 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. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <sys/types.h>
+
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+# define HAVE_ALLOCA 1
+#else
+# if defined HAVE_ALLOCA_H || defined _LIBC
+# include <alloca.h>
+# else
+# ifdef _AIX
+ #pragma alloca
+# else
+# ifndef alloca
+char *alloca ();
+# endif
+# endif
+# endif
+#endif
+
+#include <errno.h>
+#ifndef errno
+extern int errno;
+#endif
+#ifndef __set_errno
+# define __set_errno(val) errno = (val)
+#endif
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#else
+char *getenv ();
+# ifdef HAVE_MALLOC_H
+# include <malloc.h>
+# else
+void free ();
+# endif
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+# ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+# endif
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+#if !HAVE_STRCHR && !defined _LIBC
+# ifndef strchr
+# define strchr index
+# endif
+#endif
+
+#if defined HAVE_UNISTD_H || defined _LIBC
+# include <unistd.h>
+#endif
+
+#include "gettext.h"
+#include "gettextP.h"
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "libgettext.h"
+#endif
+#include "hash-string.h"
+
+/* @@ end of prolog @@ */
+
+#ifdef _LIBC
+/* Rename the non ANSI C functions. This is required by the standard
+ because some ANSI C functions will require linking with this object
+ file and the name space must not be polluted. */
+# define getcwd __getcwd
+# ifndef stpcpy
+# define stpcpy __stpcpy
+# endif
+#else
+# if !defined HAVE_GETCWD
+char *getwd ();
+# define getcwd(buf, max) getwd (buf)
+# else
+char *getcwd ();
+# endif
+# ifndef HAVE_STPCPY
+static char *stpcpy PARAMS ((char *dest, const char *src));
+# endif
+#endif
+
+/* Amount to increase buffer size by in each try. */
+#define PATH_INCR 32
+
+/* The following is from pathmax.h. */
+/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define
+ PATH_MAX but might cause redefinition warnings when sys/param.h is
+ later included (as on MORE/BSD 4.3). */
+#if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__))
+# include <limits.h>
+#endif
+
+#ifndef _POSIX_PATH_MAX
+# define _POSIX_PATH_MAX 255
+#endif
+
+#if !defined(PATH_MAX) && defined(_PC_PATH_MAX)
+# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX))
+#endif
+
+/* Don't include sys/param.h if it already has been. */
+#if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN)
+# include <sys/param.h>
+#endif
+
+#if !defined(PATH_MAX) && defined(MAXPATHLEN)
+# define PATH_MAX MAXPATHLEN
+#endif
+
+#ifndef PATH_MAX
+# define PATH_MAX _POSIX_PATH_MAX
+#endif
+
+/* XPG3 defines the result of `setlocale (category, NULL)' as:
+ ``Directs `setlocale()' to query `category' and return the current
+ setting of `local'.''
+ However it does not specify the exact format. And even worse: POSIX
+ defines this not at all. So we can use this feature only on selected
+ system (e.g. those using GNU C Library). */
+#ifdef _LIBC
+# define HAVE_LOCALE_NULL
+#endif
+
+/* Name of the default domain used for gettext(3) prior any call to
+ textdomain(3). The default value for this is "messages". */
+const char _nl_default_default_domain[] = "messages";
+
+/* Value used as the default domain for gettext(3). */
+const char *_nl_current_default_domain = _nl_default_default_domain;
+
+/* Contains the default location of the message catalogs. */
+const char _nl_default_dirname[] = GNULOCALEDIR;
+
+/* List with bindings of specific domains created by bindtextdomain()
+ calls. */
+struct binding *_nl_domain_bindings;
+
+/* Prototypes for local functions. */
+static char *find_msg PARAMS ((struct loaded_l10nfile *domain_file,
+ const char *msgid)) internal_function;
+static const char *category_to_name PARAMS ((int category)) internal_function;
+static const char *guess_category_value PARAMS ((int category,
+ const char *categoryname))
+ internal_function;
+
+
+/* For those loosing systems which don't have `alloca' we have to add
+ some additional code emulating it. */
+#ifdef HAVE_ALLOCA
+/* Nothing has to be done. */
+# define ADD_BLOCK(list, address) /* nothing */
+# define FREE_BLOCKS(list) /* nothing */
+#else
+struct block_list
+{
+ void *address;
+ struct block_list *next;
+};
+# define ADD_BLOCK(list, addr) \
+ do { \
+ struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \
+ /* If we cannot get a free block we cannot add the new element to \
+ the list. */ \
+ if (newp != NULL) { \
+ newp->address = (addr); \
+ newp->next = (list); \
+ (list) = newp; \
+ } \
+ } while (0)
+# define FREE_BLOCKS(list) \
+ do { \
+ while (list != NULL) { \
+ struct block_list *old = list; \
+ list = list->next; \
+ free (old); \
+ } \
+ } while (0)
+# undef alloca
+# define alloca(size) (malloc (size))
+#endif /* have alloca */
+
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define DCGETTEXT __dcgettext
+#else
+# define DCGETTEXT dcgettext__
+#endif
+
+/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
+ locale. */
+char *
+DCGETTEXT (domainname, msgid, category)
+ const char *domainname;
+ const char *msgid;
+ int category;
+{
+#ifndef HAVE_ALLOCA
+ struct block_list *block_list = NULL;
+#endif
+ struct loaded_l10nfile *domain;
+ struct binding *binding;
+ const char *categoryname;
+ const char *categoryvalue;
+ char *dirname, *xdomainname;
+ char *single_locale;
+ char *retval;
+ int saved_errno = errno;
+
+ /* If no real MSGID is given return NULL. */
+ if (msgid == NULL)
+ return NULL;
+
+ /* If DOMAINNAME is NULL, we are interested in the default domain. If
+ CATEGORY is not LC_MESSAGES this might not make much sense but the
+ defintion left this undefined. */
+ if (domainname == NULL)
+ domainname = _nl_current_default_domain;
+
+ /* First find matching binding. */
+ for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
+ {
+ int compare = strcmp (domainname, binding->domainname);
+ if (compare == 0)
+ /* We found it! */
+ break;
+ if (compare < 0)
+ {
+ /* It is not in the list. */
+ binding = NULL;
+ break;
+ }
+ }
+
+ if (binding == NULL)
+ dirname = (char *) _nl_default_dirname;
+ else if (binding->dirname[0] == '/')
+ dirname = binding->dirname;
+ else
+ {
+ /* We have a relative path. Make it absolute now. */
+ size_t dirname_len = strlen (binding->dirname) + 1;
+ size_t path_max;
+ char *ret;
+
+ path_max = (unsigned) PATH_MAX;
+ path_max += 2; /* The getcwd docs say to do this. */
+
+ dirname = (char *) alloca (path_max + dirname_len);
+ ADD_BLOCK (block_list, dirname);
+
+ __set_errno (0);
+ while ((ret = getcwd (dirname, path_max)) == NULL && errno == ERANGE)
+ {
+ path_max += PATH_INCR;
+ dirname = (char *) alloca (path_max + dirname_len);
+ ADD_BLOCK (block_list, dirname);
+ __set_errno (0);
+ }
+
+ if (ret == NULL)
+ {
+ /* We cannot get the current working directory. Don't signal an
+ error but simply return the default string. */
+ FREE_BLOCKS (block_list);
+ __set_errno (saved_errno);
+ return (char *) msgid;
+ }
+
+ stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname);
+ }
+
+ /* Now determine the symbolic name of CATEGORY and its value. */
+ categoryname = category_to_name (category);
+ categoryvalue = guess_category_value (category, categoryname);
+
+ xdomainname = (char *) alloca (strlen (categoryname)
+ + strlen (domainname) + 5);
+ ADD_BLOCK (block_list, xdomainname);
+
+ stpcpy (stpcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"),
+ domainname),
+ ".mo");
+
+ /* Creating working area. */
+ single_locale = (char *) alloca (strlen (categoryvalue) + 1);
+ ADD_BLOCK (block_list, single_locale);
+
+
+ /* Search for the given string. This is a loop because we perhaps
+ got an ordered list of languages to consider for th translation. */
+ while (1)
+ {
+ /* Make CATEGORYVALUE point to the next element of the list. */
+ while (categoryvalue[0] != '\0' && categoryvalue[0] == ':')
+ ++categoryvalue;
+ if (categoryvalue[0] == '\0')
+ {
+ /* The whole contents of CATEGORYVALUE has been searched but
+ no valid entry has been found. We solve this situation
+ by implicitly appending a "C" entry, i.e. no translation
+ will take place. */
+ single_locale[0] = 'C';
+ single_locale[1] = '\0';
+ }
+ else
+ {
+ char *cp = single_locale;
+ while (categoryvalue[0] != '\0' && categoryvalue[0] != ':')
+ *cp++ = *categoryvalue++;
+ *cp = '\0';
+ }
+
+ /* If the current locale value is C (or POSIX) we don't load a
+ domain. Return the MSGID. */
+ if (strcmp (single_locale, "C") == 0
+ || strcmp (single_locale, "POSIX") == 0)
+ {
+ FREE_BLOCKS (block_list);
+ __set_errno (saved_errno);
+ return (char *) msgid;
+ }
+
+
+ /* Find structure describing the message catalog matching the
+ DOMAINNAME and CATEGORY. */
+ domain = _nl_find_domain (dirname, single_locale, xdomainname);
+
+ if (domain != NULL)
+ {
+ retval = find_msg (domain, msgid);
+
+ if (retval == NULL)
+ {
+ int cnt;
+
+ for (cnt = 0; domain->successor[cnt] != NULL; ++cnt)
+ {
+ retval = find_msg (domain->successor[cnt], msgid);
+
+ if (retval != NULL)
+ break;
+ }
+ }
+
+ if (retval != NULL)
+ {
+ FREE_BLOCKS (block_list);
+ __set_errno (saved_errno);
+ return retval;
+ }
+ }
+ }
+ /* NOTREACHED */
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library. */
+weak_alias (__dcgettext, dcgettext);
+#endif
+
+
+static char *
+internal_function
+find_msg (domain_file, msgid)
+ struct loaded_l10nfile *domain_file;
+ const char *msgid;
+{
+ size_t top, act, bottom;
+ struct loaded_domain *domain;
+
+ if (domain_file->decided == 0)
+ _nl_load_domain (domain_file);
+
+ if (domain_file->data == NULL)
+ return NULL;
+
+ domain = (struct loaded_domain *) domain_file->data;
+
+ /* Locate the MSGID and its translation. */
+ if (domain->hash_size > 2 && domain->hash_tab != NULL)
+ {
+ /* Use the hashing table. */
+ nls_uint32 len = strlen (msgid);
+ nls_uint32 hash_val = hash_string (msgid);
+ nls_uint32 idx = hash_val % domain->hash_size;
+ nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
+ nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]);
+
+ if (nstr == 0)
+ /* Hash table entry is empty. */
+ return NULL;
+
+ if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len
+ && strcmp (msgid,
+ domain->data + W (domain->must_swap,
+ domain->orig_tab[nstr - 1].offset)) == 0)
+ return (char *) domain->data + W (domain->must_swap,
+ domain->trans_tab[nstr - 1].offset);
+
+ while (1)
+ {
+ if (idx >= domain->hash_size - incr)
+ idx -= domain->hash_size - incr;
+ else
+ idx += incr;
+
+ nstr = W (domain->must_swap, domain->hash_tab[idx]);
+ if (nstr == 0)
+ /* Hash table entry is empty. */
+ return NULL;
+
+ if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len
+ && strcmp (msgid,
+ domain->data + W (domain->must_swap,
+ domain->orig_tab[nstr - 1].offset))
+ == 0)
+ return (char *) domain->data
+ + W (domain->must_swap, domain->trans_tab[nstr - 1].offset);
+ }
+ /* NOTREACHED */
+ }
+
+ /* Now we try the default method: binary search in the sorted
+ array of messages. */
+ bottom = 0;
+ top = domain->nstrings;
+ while (bottom < top)
+ {
+ int cmp_val;
+
+ act = (bottom + top) / 2;
+ cmp_val = strcmp (msgid, domain->data
+ + W (domain->must_swap,
+ domain->orig_tab[act].offset));
+ if (cmp_val < 0)
+ top = act;
+ else if (cmp_val > 0)
+ bottom = act + 1;
+ else
+ break;
+ }
+
+ /* If an translation is found return this. */
+ return bottom >= top ? NULL : (char *) domain->data
+ + W (domain->must_swap,
+ domain->trans_tab[act].offset);
+}
+
+
+/* Return string representation of locale CATEGORY. */
+static const char *
+internal_function
+category_to_name (category)
+ int category;
+{
+ const char *retval;
+
+ switch (category)
+ {
+#ifdef LC_COLLATE
+ case LC_COLLATE:
+ retval = "LC_COLLATE";
+ break;
+#endif
+#ifdef LC_CTYPE
+ case LC_CTYPE:
+ retval = "LC_CTYPE";
+ break;
+#endif
+#ifdef LC_MONETARY
+ case LC_MONETARY:
+ retval = "LC_MONETARY";
+ break;
+#endif
+#ifdef LC_NUMERIC
+ case LC_NUMERIC:
+ retval = "LC_NUMERIC";
+ break;
+#endif
+#ifdef LC_TIME
+ case LC_TIME:
+ retval = "LC_TIME";
+ break;
+#endif
+#ifdef LC_MESSAGES
+ case LC_MESSAGES:
+ retval = "LC_MESSAGES";
+ break;
+#endif
+#ifdef LC_RESPONSE
+ case LC_RESPONSE:
+ retval = "LC_RESPONSE";
+ break;
+#endif
+#ifdef LC_ALL
+ case LC_ALL:
+ /* This might not make sense but is perhaps better than any other
+ value. */
+ retval = "LC_ALL";
+ break;
+#endif
+ default:
+ /* If you have a better idea for a default value let me know. */
+ retval = "LC_XXX";
+ }
+
+ return retval;
+}
+
+/* Guess value of current locale from value of the environment variables. */
+static const char *
+internal_function
+guess_category_value (category, categoryname)
+ int category;
+ const char *categoryname;
+{
+ const char *retval;
+
+ /* The highest priority value is the `LANGUAGE' environment
+ variable. This is a GNU extension. */
+ retval = getenv ("LANGUAGE");
+ if (retval != NULL && retval[0] != '\0')
+ return retval;
+
+ /* `LANGUAGE' is not set. So we have to proceed with the POSIX
+ methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some
+ systems this can be done by the `setlocale' function itself. */
+#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL
+ return setlocale (category, NULL);
+#else
+ /* Setting of LC_ALL overwrites all other. */
+ retval = getenv ("LC_ALL");
+ if (retval != NULL && retval[0] != '\0')
+ return retval;
+
+ /* Next comes the name of the desired category. */
+ retval = getenv (categoryname);
+ if (retval != NULL && retval[0] != '\0')
+ return retval;
+
+ /* Last possibility is the LANG environment variable. */
+ retval = getenv ("LANG");
+ if (retval != NULL && retval[0] != '\0')
+ return retval;
+
+ /* We use C as the default domain. POSIX says this is implementation
+ defined. */
+ return "C";
+#endif
+}
+
+/* @@ begin of epilog @@ */
+
+/* We don't want libintl.a to depend on any other library. So we
+ avoid the non-standard function stpcpy. In GNU C Library this
+ function is available, though. Also allow the symbol HAVE_STPCPY
+ to be defined. */
+#if !_LIBC && !HAVE_STPCPY
+static char *
+stpcpy (dest, src)
+ char *dest;
+ const char *src;
+{
+ while ((*dest++ = *src++) != '\0')
+ /* Do nothing. */ ;
+ return dest - 1;
+}
+#endif
+
+
+#ifdef _LIBC
+/* If we want to free all resources we have to do some work at
+ program's end. */
+static void __attribute__ ((unused))
+free_mem (void)
+{
+ struct binding *runp;
+
+ for (runp = _nl_domain_bindings; runp != NULL; runp = runp->next)
+ {
+ free (runp->domainname);
+ if (runp->dirname != _nl_default_dirname)
+ /* Yes, this is a pointer comparison. */
+ free (runp->dirname);
+ }
+
+ if (_nl_current_default_domain != _nl_default_default_domain)
+ /* Yes, again a pointer comparison. */
+ free ((char *) _nl_current_default_domain);
+}
+
+text_set_element (__libc_subfreeres, free_mem);
+#endif
diff --git a/intl/dgettext.c b/intl/dgettext.c
new file mode 100644
index 0000000..0510c2b
--- /dev/null
+++ b/intl/dgettext.c
@@ -0,0 +1,59 @@
+/* Implementation of the dgettext(3) function
+ Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+
+ 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, 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. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#if defined HAVE_LOCALE_H || defined _LIBC
+# include <locale.h>
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "libgettext.h"
+#endif
+
+/* @@ end of prolog @@ */
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define DGETTEXT __dgettext
+# define DCGETTEXT __dcgettext
+#else
+# define DGETTEXT dgettext__
+# define DCGETTEXT dcgettext__
+#endif
+
+/* Look up MSGID in the DOMAINNAME message catalog of the current
+ LC_MESSAGES locale. */
+char *
+DGETTEXT (domainname, msgid)
+ const char *domainname;
+ const char *msgid;
+{
+ return DCGETTEXT (domainname, msgid, LC_MESSAGES);
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library. */
+weak_alias (__dgettext, dgettext);
+#endif
diff --git a/intl/explodename.c b/intl/explodename.c
new file mode 100644
index 0000000..8066dc2
--- /dev/null
+++ b/intl/explodename.c
@@ -0,0 +1,188 @@
+/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+
+ 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, 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. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+#include <sys/types.h>
+
+#include "loadinfo.h"
+
+/* On some strange systems still no definition of NULL is found. Sigh! */
+#ifndef NULL
+# if defined __STDC__ && __STDC__
+# define NULL ((void *) 0)
+# else
+# define NULL 0
+# endif
+#endif
+
+/* @@ end of prolog @@ */
+
+int
+_nl_explode_name (name, language, modifier, territory, codeset,
+ normalized_codeset, special, sponsor, revision)
+ char *name;
+ const char **language;
+ const char **modifier;
+ const char **territory;
+ const char **codeset;
+ const char **normalized_codeset;
+ const char **special;
+ const char **sponsor;
+ const char **revision;
+{
+ enum { undecided, xpg, cen } syntax;
+ char *cp;
+ int mask;
+
+ *modifier = NULL;
+ *territory = NULL;
+ *codeset = NULL;
+ *normalized_codeset = NULL;
+ *special = NULL;
+ *sponsor = NULL;
+ *revision = NULL;
+
+ /* Now we determine the single parts of the locale name. First
+ look for the language. Termination symbols are `_' and `@' if
+ we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */
+ mask = 0;
+ syntax = undecided;
+ *language = cp = name;
+ while (cp[0] != '\0' && cp[0] != '_' && cp[0] != '@'
+ && cp[0] != '+' && cp[0] != ',')
+ ++cp;
+
+ if (*language == cp)
+ /* This does not make sense: language has to be specified. Use
+ this entry as it is without exploding. Perhaps it is an alias. */
+ cp = strchr (*language, '\0');
+ else if (cp[0] == '_')
+ {
+ /* Next is the territory. */
+ cp[0] = '\0';
+ *territory = ++cp;
+
+ while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@'
+ && cp[0] != '+' && cp[0] != ',' && cp[0] != '_')
+ ++cp;
+
+ mask |= TERRITORY;
+
+ if (cp[0] == '.')
+ {
+ /* Next is the codeset. */
+ syntax = xpg;
+ cp[0] = '\0';
+ *codeset = ++cp;
+
+ while (cp[0] != '\0' && cp[0] != '@')
+ ++cp;
+
+ mask |= XPG_CODESET;
+
+ if (*codeset != cp && (*codeset)[0] != '\0')
+ {
+ *normalized_codeset = _nl_normalize_codeset (*codeset,
+ cp - *codeset);
+ if (strcmp (*codeset, *normalized_codeset) == 0)
+ free ((char *) *normalized_codeset);
+ else
+ mask |= XPG_NORM_CODESET;
+ }
+ }
+ }
+
+ if (cp[0] == '@' || (syntax != xpg && cp[0] == '+'))
+ {
+ /* Next is the modifier. */
+ syntax = cp[0] == '@' ? xpg : cen;
+ cp[0] = '\0';
+ *modifier = ++cp;
+
+ while (syntax == cen && cp[0] != '\0' && cp[0] != '+'
+ && cp[0] != ',' && cp[0] != '_')
+ ++cp;
+
+ mask |= XPG_MODIFIER | CEN_AUDIENCE;
+ }
+
+ if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_'))
+ {
+ syntax = cen;
+
+ if (cp[0] == '+')
+ {
+ /* Next is special application (CEN syntax). */
+ cp[0] = '\0';
+ *special = ++cp;
+
+ while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_')
+ ++cp;
+
+ mask |= CEN_SPECIAL;
+ }
+
+ if (cp[0] == ',')
+ {
+ /* Next is sponsor (CEN syntax). */
+ cp[0] = '\0';
+ *sponsor = ++cp;
+
+ while (cp[0] != '\0' && cp[0] != '_')
+ ++cp;
+
+ mask |= CEN_SPONSOR;
+ }
+
+ if (cp[0] == '_')
+ {
+ /* Next is revision (CEN syntax). */
+ cp[0] = '\0';
+ *revision = ++cp;
+
+ mask |= CEN_REVISION;
+ }
+ }
+
+ /* For CEN syntax values it might be important to have the
+ separator character in the file name, not for XPG syntax. */
+ if (syntax == xpg)
+ {
+ if (*territory != NULL && (*territory)[0] == '\0')
+ mask &= ~TERRITORY;
+
+ if (*codeset != NULL && (*codeset)[0] == '\0')
+ mask &= ~XPG_CODESET;
+
+ if (*modifier != NULL && (*modifier)[0] == '\0')
+ mask &= ~XPG_MODIFIER;
+ }
+
+ return mask;
+}
diff --git a/intl/finddomain.c b/intl/finddomain.c
new file mode 100644
index 0000000..81ea29b
--- /dev/null
+++ b/intl/finddomain.c
@@ -0,0 +1,216 @@
+/* Handle list of needed message catalogs
+ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+ Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+
+ 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, 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. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <ctype.h>
+#include <errno.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#else
+# ifdef HAVE_MALLOC_H
+# include <malloc.h>
+# else
+void free ();
+# endif
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+# include <string.h>
+#else
+# include <strings.h>
+# ifndef memcpy
+# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
+# endif
+#endif
+#if !HAVE_STRCHR && !defined _LIBC
+# ifndef strchr
+# define strchr index
+# endif
+#endif
+
+#if defined HAVE_UNISTD_H || defined _LIBC
+# include <unistd.h>
+#endif
+
+#include "gettext.h"
+#include "gettextP.h"
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "libgettext.h"
+#endif
+
+/* @@ end of prolog @@ */
+/* List of already loaded domains. */
+static struct loaded_l10nfile *_nl_loaded_domains;
+
+
+/* Return a data structure describing the message catalog described by
+ the DOMAINNAME and CATEGORY parameters with respect to the currently
+ established bindings. */
+struct loaded_l10nfile *
+internal_function
+_nl_find_domain (dirname, locale, domainname)
+ const char *dirname;
+ char *locale;
+ const char *domainname;
+{
+ struct loaded_l10nfile *retval;
+ const char *language;
+ const char *modifier;
+ const char *territory;
+ const char *codeset;
+ const char *normalized_codeset;
+ const char *special;
+ const char *sponsor;
+ const char *revision;
+ const char *alias_value;
+ int mask;
+
+ /* LOCALE can consist of up to four recognized parts for the XPG syntax:
+
+ language[_territory[.codeset]][@modifier]
+
+ and six parts for the CEN syntax:
+
+ language[_territory][+audience][+special][,[sponsor][_revision]]
+
+ Beside the first part all of them are allowed to be missing. If
+ the full specified locale is not found, the less specific one are
+ looked for. The various parts will be stripped off according to
+ the following order:
+ (1) revision
+ (2) sponsor
+ (3) special
+ (4) codeset
+ (5) normalized codeset
+ (6) territory
+ (7) audience/modifier
+ */
+
+ /* If we have already tested for this locale entry there has to
+ be one data set in the list of loaded domains. */
+ retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
+ strlen (dirname) + 1, 0, locale, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, domainname, 0);
+ if (retval != NULL)
+ {
+ /* We know something about this locale. */
+ int cnt;
+
+ if (retval->decided == 0)
+ _nl_load_domain (retval);
+
+ if (retval->data != NULL)
+ return retval;
+
+ for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
+ {
+ if (retval->successor[cnt]->decided == 0)
+ _nl_load_domain (retval->successor[cnt]);
+
+ if (retval->successor[cnt]->data != NULL)
+ break;
+ }
+ return cnt >= 0 ? retval : NULL;
+ /* NOTREACHED */
+ }
+
+ /* See whether the locale value is an alias. If yes its value
+ *overwrites* the alias name. No test for the original value is
+ done. */
+ alias_value = _nl_expand_alias (locale);
+ if (alias_value != NULL)
+ {
+#if defined _LIBC || defined HAVE_STRDUP
+ locale = strdup (alias_value);
+ if (locale == NULL)
+ return NULL;
+#else
+ size_t len = strlen (alias_value) + 1;
+ locale = (char *) malloc (len);
+ if (locale == NULL)
+ return NULL;
+
+ memcpy (locale, alias_value, len);
+#endif
+ }
+
+ /* Now we determine the single parts of the locale name. First
+ look for the language. Termination symbols are `_' and `@' if
+ we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */
+ mask = _nl_explode_name (locale, &language, &modifier, &territory,
+ &codeset, &normalized_codeset, &special,
+ &sponsor, &revision);
+
+ /* Create all possible locale entries which might be interested in
+ generalization. */
+ retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
+ strlen (dirname) + 1, mask, language, territory,
+ codeset, normalized_codeset, modifier, special,
+ sponsor, revision, domainname, 1);
+ if (retval == NULL)
+ /* This means we are out of core. */
+ return NULL;
+
+ if (retval->decided == 0)
+ _nl_load_domain (retval);
+ if (retval->data == NULL)
+ {
+ int cnt;
+ for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
+ {
+ if (retval->successor[cnt]->decided == 0)
+ _nl_load_domain (retval->successor[cnt]);
+ if (retval->successor[cnt]->data != NULL)
+ break;
+ }
+ }
+
+ /* The room for an alias was dynamically allocated. Free it now. */
+ if (alias_value != NULL)
+ free (locale);
+
+ return retval;
+}
+
+
+#ifdef _LIBC
+static void __attribute__ ((unused))
+free_mem (void)
+{
+ struct loaded_l10nfile *runp = _nl_loaded_domains;
+
+ while (runp != NULL)
+ {
+ struct loaded_l10nfile *here = runp;
+ if (runp->data != NULL)
+ _nl_unload_domain ((struct loaded_domain *) runp->data);
+ runp = runp->next;
+ free (here);
+ }
+}
+
+text_set_element (__libc_subfreeres, free_mem);
+#endif
diff --git a/intl/gettext.c b/intl/gettext.c
new file mode 100644
index 0000000..d929f98
--- /dev/null
+++ b/intl/gettext.c
@@ -0,0 +1,70 @@
+/* Implementation of gettext(3) function.
+ Copyright (C) 1995, 1997 Free Software Foundation, Inc.
+
+ 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, 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. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#ifdef _LIBC
+# define __need_NULL
+# include <stddef.h>
+#else
+# ifdef STDC_HEADERS
+# include <stdlib.h> /* Just for NULL. */
+# else
+# ifdef HAVE_STRING_H
+# include <string.h>
+# else
+# define NULL ((void *) 0)
+# endif
+# endif
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "libgettext.h"
+#endif
+
+/* @@ end of prolog @@ */
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define GETTEXT __gettext
+# define DGETTEXT __dgettext
+#else
+# define GETTEXT gettext__
+# define DGETTEXT dgettext__
+#endif
+
+/* Look up MSGID in the current default message catalog for the current
+ LC_MESSAGES locale. If not found, returns MSGID itself (the default
+ text). */
+char *
+GETTEXT (msgid)
+ const char *msgid;
+{
+ return DGETTEXT (NULL, msgid);
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library. */
+weak_alias (__gettext, gettext);
+#endif
diff --git a/intl/gettext.h b/intl/gettext.h
new file mode 100644
index 0000000..3cd23d7
--- /dev/null
+++ b/intl/gettext.h
@@ -0,0 +1,105 @@
+/* Internal header for GNU gettext internationalization functions.
+ Copyright (C) 1995, 1997 Free Software Foundation, Inc.
+
+ 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, 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 Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _GETTEXT_H
+#define _GETTEXT_H 1
+
+#include <stdio.h>
+
+#if HAVE_LIMITS_H || _LIBC
+# include <limits.h>
+#endif
+
+/* @@ end of prolog @@ */
+
+/* The magic number of the GNU message catalog format. */
+#define _MAGIC 0x950412de
+#define _MAGIC_SWAPPED 0xde120495
+
+/* Revision number of the currently used .mo (binary) file format. */
+#define MO_REVISION_NUMBER 0
+
+/* The following contortions are an attempt to use the C preprocessor
+ to determine an unsigned integral type that is 32 bits wide. An
+ alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
+ doing that would require that the configure script compile and *run*
+ the resulting executable. Locally running cross-compiled executables
+ is usually not possible. */
+
+#if __STDC__
+# define UINT_MAX_32_BITS 4294967295U
+#else
+# define UINT_MAX_32_BITS 0xFFFFFFFF
+#endif
+
+/* If UINT_MAX isn't defined, assume it's a 32-bit type.
+ This should be valid for all systems GNU cares about because
+ that doesn't include 16-bit systems, and only modern systems
+ (that certainly have <limits.h>) have 64+-bit integral types. */
+
+#ifndef UINT_MAX
+# define UINT_MAX UINT_MAX_32_BITS
+#endif
+
+#if UINT_MAX == UINT_MAX_32_BITS
+typedef unsigned nls_uint32;
+#else
+# if USHRT_MAX == UINT_MAX_32_BITS
+typedef unsigned short nls_uint32;
+# else
+# if ULONG_MAX == UINT_MAX_32_BITS
+typedef unsigned long nls_uint32;
+# else
+ /* The following line is intended to throw an error. Using #error is
+ not portable enough. */
+ "Cannot determine unsigned 32-bit data type."
+# endif
+# endif
+#endif
+
+
+/* Header for binary .mo file format. */
+struct mo_file_header
+{
+ /* The magic number. */
+ nls_uint32 magic;
+ /* The revision number of the file format. */
+ nls_uint32 revision;
+ /* The number of strings pairs. */
+ nls_uint32 nstrings;
+ /* Offset of table with start offsets of original strings. */
+ nls_uint32 orig_tab_offset;
+ /* Offset of table with start offsets of translation strings. */
+ nls_uint32 trans_tab_offset;
+ /* Size of hashing table. */
+ nls_uint32 hash_tab_size;
+ /* Offset of first hashing entry. */
+ nls_uint32 hash_tab_offset;
+};
+
+struct string_desc
+{
+ /* Length of addressed string. */
+ nls_uint32 length;
+ /* Offset of string in file. */
+ nls_uint32 offset;
+};
+
+/* @@ begin of epilog @@ */
+
+#endif /* gettext.h */
diff --git a/intl/gettextP.h b/intl/gettextP.h
new file mode 100644
index 0000000..00c5203
--- /dev/null
+++ b/intl/gettextP.h
@@ -0,0 +1,89 @@
+/* Header describing internals of gettext library
+ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+ Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+
+ 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, 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. */
+
+#ifndef _GETTEXTP_H
+#define _GETTEXTP_H
+
+#include "loadinfo.h"
+
+/* @@ end of prolog @@ */
+
+#ifndef PARAMS
+# if __STDC__
+# define PARAMS(args) args
+# else
+# define PARAMS(args) ()
+# endif
+#endif
+
+#ifndef internal_function
+# define internal_function
+#endif
+
+#ifndef W
+# define W(flag, data) ((flag) ? SWAP (data) : (data))
+#endif
+
+
+#ifdef _LIBC
+# include <byteswap.h>
+# define SWAP(i) bswap_32 (i)
+#else
+static nls_uint32 SWAP PARAMS ((nls_uint32 i));
+
+static inline nls_uint32
+SWAP (i)
+ nls_uint32 i;
+{
+ return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
+}
+#endif
+
+
+struct loaded_domain
+{
+ const char *data;
+ int use_mmap;
+ size_t mmap_size;
+ int must_swap;
+ nls_uint32 nstrings;
+ struct string_desc *orig_tab;
+ struct string_desc *trans_tab;
+ nls_uint32 hash_size;
+ nls_uint32 *hash_tab;
+};
+
+struct binding
+{
+ struct binding *next;
+ char *domainname;
+ char *dirname;
+};
+
+struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname,
+ char *__locale,
+ const char *__domainname))
+ internal_function;
+void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain))
+ internal_function;
+void _nl_unload_domain PARAMS ((struct loaded_domain *__domain))
+ internal_function;
+
+/* @@ begin of epilog @@ */
+
+#endif /* gettextP.h */
diff --git a/intl/hash-string.h b/intl/hash-string.h
new file mode 100644
index 0000000..cacb38e
--- /dev/null
+++ b/intl/hash-string.h
@@ -0,0 +1,59 @@
+/* Implements a string hashing function.
+ Copyright (C) 1995, 1997 Free Software Foundation, Inc.
+
+ 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, 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 Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/* @@ end of prolog @@ */
+
+#ifndef PARAMS
+# if __STDC__
+# define PARAMS(Args) Args
+# else
+# define PARAMS(Args) ()
+# endif
+#endif
+
+/* We assume to have `unsigned long int' value with at least 32 bits. */
+#define HASHWORDBITS 32
+
+
+/* Defines the so called `hashpjw' function by P.J. Weinberger
+ [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
+ 1986, 1987 Bell Telephone Laboratories, Inc.] */
+static unsigned long hash_string PARAMS ((const char *__str_param));
+
+static inline unsigned long
+hash_string (str_param)
+ const char *str_param;
+{
+ unsigned long int hval, g;
+ const char *str = str_param;
+
+ /* Compute the hash value for the given string. */
+ hval = 0;
+ while (*str != '\0')
+ {
+ hval <<= 4;
+ hval += (unsigned long) *str++;
+ g = hval & ((unsigned long) 0xf << (HASHWORDBITS - 4));
+ if (g != 0)
+ {
+ hval ^= g >> (HASHWORDBITS - 8);
+ hval ^= g;
+ }
+ }
+ return hval;
+}
diff --git a/intl/intl-compat.c b/intl/intl-compat.c
new file mode 100644
index 0000000..503efa0
--- /dev/null
+++ b/intl/intl-compat.c
@@ -0,0 +1,76 @@
+/* intl-compat.c - Stub functions to call gettext functions from GNU gettext
+ Library.
+ Copyright (C) 1995 Software Foundation, Inc.
+
+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, 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. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "libgettext.h"
+
+/* @@ end of prolog @@ */
+
+
+#undef gettext
+#undef dgettext
+#undef dcgettext
+#undef textdomain
+#undef bindtextdomain
+
+
+char *
+bindtextdomain (domainname, dirname)
+ const char *domainname;
+ const char *dirname;
+{
+ return bindtextdomain__ (domainname, dirname);
+}
+
+
+char *
+dcgettext (domainname, msgid, category)
+ const char *domainname;
+ const char *msgid;
+ int category;
+{
+ return dcgettext__ (domainname, msgid, category);
+}
+
+
+char *
+dgettext (domainname, msgid)
+ const char *domainname;
+ const char *msgid;
+{
+ return dgettext__ (domainname, msgid);
+}
+
+
+char *
+gettext (msgid)
+ const char *msgid;
+{
+ return gettext__ (msgid);
+}
+
+
+char *
+textdomain (domainname)
+ const char *domainname;
+{
+ return textdomain__ (domainname);
+}
diff --git a/intl/l10nflist.c b/intl/l10nflist.c
new file mode 100644
index 0000000..9c7dc18
--- /dev/null
+++ b/intl/l10nflist.c
@@ -0,0 +1,411 @@
+/* Handle list of needed message catalogs
+ Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+
+ 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, 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. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+
+#if defined HAVE_STRING_H || defined _LIBC
+# ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+# endif
+# include <string.h>
+#else
+# include <strings.h>
+# ifndef memcpy
+# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
+# endif
+#endif
+#if !HAVE_STRCHR && !defined _LIBC
+# ifndef strchr
+# define strchr index
+# endif
+#endif
+
+#if defined _LIBC || defined HAVE_ARGZ_H
+# include <argz.h>
+#endif
+#include <ctype.h>
+#include <sys/types.h>
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#endif
+
+#include "loadinfo.h"
+
+/* On some strange systems still no definition of NULL is found. Sigh! */
+#ifndef NULL
+# if defined __STDC__ && __STDC__
+# define NULL ((void *) 0)
+# else
+# define NULL 0
+# endif
+#endif
+
+/* @@ end of prolog @@ */
+
+#ifdef _LIBC
+/* Rename the non ANSI C functions. This is required by the standard
+ because some ANSI C functions will require linking with this object
+ file and the name space must not be polluted. */
+# ifndef stpcpy
+# define stpcpy(dest, src) __stpcpy(dest, src)
+# endif
+#else
+# ifndef HAVE_STPCPY
+static char *stpcpy PARAMS ((char *dest, const char *src));
+# endif
+#endif
+
+/* Define function which are usually not available. */
+
+#if !defined _LIBC && !defined HAVE___ARGZ_COUNT
+/* Returns the number of strings in ARGZ. */
+static size_t argz_count__ PARAMS ((const char *argz, size_t len));
+
+static size_t
+argz_count__ (argz, len)
+ const char *argz;
+ size_t len;
+{
+ size_t count = 0;
+ while (len > 0)
+ {
+ size_t part_len = strlen (argz);
+ argz += part_len + 1;
+ len -= part_len + 1;
+ count++;
+ }
+ return count;
+}
+# undef __argz_count
+# define __argz_count(argz, len) argz_count__ (argz, len)
+#endif /* !_LIBC && !HAVE___ARGZ_COUNT */
+
+#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY
+/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's
+ except the last into the character SEP. */
+static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep));
+
+static void
+argz_stringify__ (argz, len, sep)
+ char *argz;
+ size_t len;
+ int sep;
+{
+ while (len > 0)
+ {
+ size_t part_len = strlen (argz);
+ argz += part_len;
+ len -= part_len + 1;
+ if (len > 0)
+ *argz++ = sep;
+ }
+}
+# undef __argz_stringify
+# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep)
+#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */
+
+#if !defined _LIBC && !defined HAVE___ARGZ_NEXT
+static char *argz_next__ PARAMS ((char *argz, size_t argz_len,
+ const char *entry));
+
+static char *
+argz_next__ (argz, argz_len, entry)
+ char *argz;
+ size_t argz_len;
+ const char *entry;
+{
+ if (entry)
+ {
+ if (entry < argz + argz_len)
+ entry = strchr (entry, '\0') + 1;
+
+ return entry >= argz + argz_len ? NULL : (char *) entry;
+ }
+ else
+ if (argz_len > 0)
+ return argz;
+ else
+ return 0;
+}
+# undef __argz_next
+# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry)
+#endif /* !_LIBC && !HAVE___ARGZ_NEXT */
+
+
+/* Return number of bits set in X. */
+static int pop PARAMS ((int x));
+
+static inline int
+pop (x)
+ int x;
+{
+ /* We assume that no more than 16 bits are used. */
+ x = ((x & ~0x5555) >> 1) + (x & 0x5555);
+ x = ((x & ~0x3333) >> 2) + (x & 0x3333);
+ x = ((x >> 4) + x) & 0x0f0f;
+ x = ((x >> 8) + x) & 0xff;
+
+ return x;
+}
+
+
+struct loaded_l10nfile *
+_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language,
+ territory, codeset, normalized_codeset, modifier, special,
+ sponsor, revision, filename, do_allocate)
+ struct loaded_l10nfile **l10nfile_list;
+ const char *dirlist;
+ size_t dirlist_len;
+ int mask;
+ const char *language;
+ const char *territory;
+ const char *codeset;
+ const char *normalized_codeset;
+ const char *modifier;
+ const char *special;
+ const char *sponsor;
+ const char *revision;
+ const char *filename;
+ int do_allocate;
+{
+ char *abs_filename;
+ struct loaded_l10nfile *last = NULL;
+ struct loaded_l10nfile *retval;
+ char *cp;
+ size_t entries;
+ int cnt;
+
+ /* Allocate room for the full file name. */
+ abs_filename = (char *) malloc (dirlist_len
+ + strlen (language)
+ + ((mask & TERRITORY) != 0
+ ? strlen (territory) + 1 : 0)
+ + ((mask & XPG_CODESET) != 0
+ ? strlen (codeset) + 1 : 0)
+ + ((mask & XPG_NORM_CODESET) != 0
+ ? strlen (normalized_codeset) + 1 : 0)
+ + (((mask & XPG_MODIFIER) != 0
+ || (mask & CEN_AUDIENCE) != 0)
+ ? strlen (modifier) + 1 : 0)
+ + ((mask & CEN_SPECIAL) != 0
+ ? strlen (special) + 1 : 0)
+ + (((mask & CEN_SPONSOR) != 0
+ || (mask & CEN_REVISION) != 0)
+ ? (1 + ((mask & CEN_SPONSOR) != 0
+ ? strlen (sponsor) + 1 : 0)
+ + ((mask & CEN_REVISION) != 0
+ ? strlen (revision) + 1 : 0)) : 0)
+ + 1 + strlen (filename) + 1);
+
+ if (abs_filename == NULL)
+ return NULL;
+
+ retval = NULL;
+ last = NULL;
+
+ /* Construct file name. */
+ memcpy (abs_filename, dirlist, dirlist_len);
+ __argz_stringify (abs_filename, dirlist_len, ':');
+ cp = abs_filename + (dirlist_len - 1);
+ *cp++ = '/';
+ cp = stpcpy (cp, language);
+
+ if ((mask & TERRITORY) != 0)
+ {
+ *cp++ = '_';
+ cp = stpcpy (cp, territory);
+ }
+ if ((mask & XPG_CODESET) != 0)
+ {
+ *cp++ = '.';
+ cp = stpcpy (cp, codeset);
+ }
+ if ((mask & XPG_NORM_CODESET) != 0)
+ {
+ *cp++ = '.';
+ cp = stpcpy (cp, normalized_codeset);
+ }
+ if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0)
+ {
+ /* This component can be part of both syntaces but has different
+ leading characters. For CEN we use `+', else `@'. */
+ *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@';
+ cp = stpcpy (cp, modifier);
+ }
+ if ((mask & CEN_SPECIAL) != 0)
+ {
+ *cp++ = '+';
+ cp = stpcpy (cp, special);
+ }
+ if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0)
+ {
+ *cp++ = ',';
+ if ((mask & CEN_SPONSOR) != 0)
+ cp = stpcpy (cp, sponsor);
+ if ((mask & CEN_REVISION) != 0)
+ {
+ *cp++ = '_';
+ cp = stpcpy (cp, revision);
+ }
+ }
+
+ *cp++ = '/';
+ stpcpy (cp, filename);
+
+ /* Look in list of already loaded domains whether it is already
+ available. */
+ last = NULL;
+ for (retval = *l10nfile_list; retval != NULL; retval = retval->next)
+ if (retval->filename != NULL)
+ {
+ int compare = strcmp (retval->filename, abs_filename);
+ if (compare == 0)
+ /* We found it! */
+ break;
+ if (compare < 0)
+ {
+ /* It's not in the list. */
+ retval = NULL;
+ break;
+ }
+
+ last = retval;
+ }
+
+ if (retval != NULL || do_allocate == 0)
+ {
+ free (abs_filename);
+ return retval;
+ }
+
+ retval = (struct loaded_l10nfile *)
+ malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len)
+ * (1 << pop (mask))
+ * sizeof (struct loaded_l10nfile *)));
+ if (retval == NULL)
+ return NULL;
+
+ retval->filename = abs_filename;
+ retval->decided = (__argz_count (dirlist, dirlist_len) != 1
+ || ((mask & XPG_CODESET) != 0
+ && (mask & XPG_NORM_CODESET) != 0));
+ retval->data = NULL;
+
+ if (last == NULL)
+ {
+ retval->next = *l10nfile_list;
+ *l10nfile_list = retval;
+ }
+ else
+ {
+ retval->next = last->next;
+ last->next = retval;
+ }
+
+ entries = 0;
+ /* If the DIRLIST is a real list the RETVAL entry corresponds not to
+ a real file. So we have to use the DIRLIST separation mechanism
+ of the inner loop. */
+ cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask;
+ for (; cnt >= 0; --cnt)
+ if ((cnt & ~mask) == 0
+ && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0)
+ && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0))
+ {
+ /* Iterate over all elements of the DIRLIST. */
+ char *dir = NULL;
+
+ while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir))
+ != NULL)
+ retval->successor[entries++]
+ = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt,
+ language, territory, codeset,
+ normalized_codeset, modifier, special,
+ sponsor, revision, filename, 1);
+ }
+ retval->successor[entries] = NULL;
+
+ return retval;
+}
+
+/* Normalize codeset name. There is no standard for the codeset
+ names. Normalization allows the user to use any of the common
+ names. */
+const char *
+_nl_normalize_codeset (codeset, name_len)
+ const unsigned char *codeset;
+ size_t name_len;
+{
+ int len = 0;
+ int only_digit = 1;
+ char *retval;
+ char *wp;
+ size_t cnt;
+
+ for (cnt = 0; cnt < name_len; ++cnt)
+ if (isalnum (codeset[cnt]))
+ {
+ ++len;
+
+ if (isalpha (codeset[cnt]))
+ only_digit = 0;
+ }
+
+ retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1);
+
+ if (retval != NULL)
+ {
+ if (only_digit)
+ wp = stpcpy (retval, "iso");
+ else
+ wp = retval;
+
+ for (cnt = 0; cnt < name_len; ++cnt)
+ if (isalpha (codeset[cnt]))
+ *wp++ = tolower (codeset[cnt]);
+ else if (isdigit (codeset[cnt]))
+ *wp++ = codeset[cnt];
+
+ *wp = '\0';
+ }
+
+ return (const char *) retval;
+}
+
+
+/* @@ begin of epilog @@ */
+
+/* We don't want libintl.a to depend on any other library. So we
+ avoid the non-standard function stpcpy. In GNU C Library this
+ function is available, though. Also allow the symbol HAVE_STPCPY
+ to be defined. */
+#if !_LIBC && !HAVE_STPCPY
+static char *
+stpcpy (dest, src)
+ char *dest;
+ const char *src;
+{
+ while ((*dest++ = *src++) != '\0')
+ /* Do nothing. */ ;
+ return dest - 1;
+}
+#endif
diff --git a/intl/libgettext.h b/intl/libgettext.h
new file mode 100644
index 0000000..3a92960
--- /dev/null
+++ b/intl/libgettext.h
@@ -0,0 +1,182 @@
+/* Message catalogs for internationalization.
+ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+
+ 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, 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. */
+
+/* Because on some systems (e.g. Solaris) we sometimes have to include
+ the systems libintl.h as well as this file we have more complex
+ include protection above. But the systems header might perhaps also
+ define _LIBINTL_H and therefore we have to protect the definition here. */
+
+#if !defined _LIBINTL_H || !defined _LIBGETTEXT_H
+#ifndef _LIBINTL_H
+# define _LIBINTL_H 1
+#endif
+#define _LIBGETTEXT_H 1
+
+/* We define an additional symbol to signal that we use the GNU
+ implementation of gettext. */
+#define __USE_GNU_GETTEXT 1
+
+#include <sys/types.h>
+
+#if HAVE_LOCALE_H
+# include <locale.h>
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* @@ end of prolog @@ */
+
+#ifndef PARAMS
+# if __STDC__ || defined __cplusplus
+# define PARAMS(args) args
+# else
+# define PARAMS(args) ()
+# endif
+#endif
+
+#ifndef NULL
+# if !defined __cplusplus || defined __GNUC__
+# define NULL ((void *) 0)
+# else
+# define NULL (0)
+# endif
+#endif
+
+#if !HAVE_LC_MESSAGES
+/* This value determines the behaviour of the gettext() and dgettext()
+ function. But some system does not have this defined. Define it
+ to a default value. */
+# define LC_MESSAGES (-1)
+#endif
+
+
+/* Declarations for gettext-using-catgets interface. Derived from
+ Jim Meyering's libintl.h. */
+struct _msg_ent
+{
+ const char *_msg;
+ int _msg_number;
+};
+
+
+#if HAVE_CATGETS
+/* These two variables are defined in the automatically by po-to-tbl.sed
+ generated file `cat-id-tbl.c'. */
+extern const struct _msg_ent _msg_tbl[];
+extern int _msg_tbl_length;
+#endif
+
+
+/* For automatical extraction of messages sometimes no real
+ translation is needed. Instead the string itself is the result. */
+#define gettext_noop(Str) (Str)
+
+/* Look up MSGID in the current default message catalog for the current
+ LC_MESSAGES locale. If not found, returns MSGID itself (the default
+ text). */
+extern char *gettext PARAMS ((const char *__msgid));
+extern char *gettext__ PARAMS ((const char *__msgid));
+
+/* Look up MSGID in the DOMAINNAME message catalog for the current
+ LC_MESSAGES locale. */
+extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid));
+extern char *dgettext__ PARAMS ((const char *__domainname,
+ const char *__msgid));
+
+/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
+ locale. */
+extern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid,
+ int __category));
+extern char *dcgettext__ PARAMS ((const char *__domainname,
+ const char *__msgid, int __category));
+
+
+/* Set the current default message catalog to DOMAINNAME.
+ If DOMAINNAME is null, return the current default.
+ If DOMAINNAME is "", reset to the default of "messages". */
+extern char *textdomain PARAMS ((const char *__domainname));
+extern char *textdomain__ PARAMS ((const char *__domainname));
+
+/* Specify that the DOMAINNAME message catalog will be found
+ in DIRNAME rather than in the system locale data base. */
+extern char *bindtextdomain PARAMS ((const char *__domainname,
+ const char *__dirname));
+extern char *bindtextdomain__ PARAMS ((const char *__domainname,
+ const char *__dirname));
+
+#if ENABLE_NLS
+
+/* Solaris 2.3 has the gettext function but dcgettext is missing.
+ So we omit this optimization for Solaris 2.3. BTW, Solaris 2.4
+ has dcgettext. */
+# if !HAVE_CATGETS && (!HAVE_GETTEXT || HAVE_DCGETTEXT)
+
+# define gettext(Msgid) \
+ dgettext (NULL, Msgid)
+
+# define dgettext(Domainname, Msgid) \
+ dcgettext (Domainname, Msgid, LC_MESSAGES)
+
+# if defined __GNUC__ && __GNUC__ == 2 && __GNUC_MINOR__ >= 7
+/* This global variable is defined in loadmsgcat.c. We need a sign,
+ whether a new catalog was loaded, which can be associated with all
+ translations. */
+extern int _nl_msg_cat_cntr;
+
+# define dcgettext(Domainname, Msgid, Category) \
+ (__extension__ \
+ ({ \
+ char *__result; \
+ if (__builtin_constant_p (Msgid)) \
+ { \
+ static char *__translation__; \
+ static int __catalog_counter__; \
+ if (! __translation__ || __catalog_counter__ != _nl_msg_cat_cntr) \
+ { \
+ __translation__ = \
+ dcgettext__ (Domainname, Msgid, Category); \
+ __catalog_counter__ = _nl_msg_cat_cntr; \
+ } \
+ __result = __translation__; \
+ } \
+ else \
+ __result = dcgettext__ (Domainname, Msgid, Category); \
+ __result; \
+ }))
+# endif
+# endif
+
+#else
+
+# define gettext(Msgid) (Msgid)
+# define dgettext(Domainname, Msgid) (Msgid)
+# define dcgettext(Domainname, Msgid, Category) (Msgid)
+# define textdomain(Domainname) ((char *) Domainname)
+# define bindtextdomain(Domainname, Dirname) ((char *) Dirname)
+
+#endif
+
+/* @@ begin of epilog @@ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/intl/linux-msg.sed b/intl/linux-msg.sed
new file mode 100644
index 0000000..5918e72
--- /dev/null
+++ b/intl/linux-msg.sed
@@ -0,0 +1,100 @@
+# po2msg.sed - Convert Uniforum style .po file to Linux style .msg file
+# Copyright (C) 1995 Free Software Foundation, Inc.
+# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+#
+# 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, 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.
+#
+#
+# The first directive in the .msg should be the definition of the
+# message set number. We use always set number 1.
+#
+1 {
+ i\
+$set 1 # Automatically created by po2msg.sed
+ h
+ s/.*/0/
+ x
+}
+#
+# Mitch's old catalog format does not allow comments.
+#
+# We copy the original message as a comment into the .msg file.
+#
+/^msgid/ {
+ s/msgid[ ]*"//
+#
+# This does not work now with the new format.
+# /"$/! {
+# s/\\$//
+# s/$/ ... (more lines following)"/
+# }
+ x
+# The following nice solution is by
+# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
+ td
+# Increment a decimal number in pattern space.
+# First hide trailing `9' digits.
+ :d
+ s/9\(_*\)$/_\1/
+ td
+# Assure at least one digit is available.
+ s/^\(_*\)$/0\1/
+# Increment the last digit.
+ s/8\(_*\)$/9\1/
+ s/7\(_*\)$/8\1/
+ s/6\(_*\)$/7\1/
+ s/5\(_*\)$/6\1/
+ s/4\(_*\)$/5\1/
+ s/3\(_*\)$/4\1/
+ s/2\(_*\)$/3\1/
+ s/1\(_*\)$/2\1/
+ s/0\(_*\)$/1\1/
+# Convert the hidden `9' digits to `0's.
+ s/_/0/g
+ x
+ G
+ s/\(.*\)"\n\([0-9]*\)/$ #\2 Original Message:(\1)/p
+}
+#
+# The .msg file contains, other then the .po file, only the translations
+# but each given a unique ID. Starting from 1 and incrementing by 1 for
+# each message we assign them to the messages.
+# It is important that the .po file used to generate the cat-id-tbl.c file
+# (with po-to-tbl) is the same as the one used here. (At least the order
+# of declarations must not be changed.)
+#
+/^msgstr/ {
+ s/msgstr[ ]*"\(.*\)"/# \1/
+# Clear substitution flag.
+ tb
+# Append the next line.
+ :b
+ N
+# Look whether second part is continuation line.
+ s/\(.*\n\)"\(.*\)"/\1\2/
+# Yes, then branch.
+ ta
+ P
+ D
+# Note that D includes a jump to the start!!
+# We found a continuation line. But before printing insert '\'.
+ :a
+ s/\(.*\)\(\n.*\)/\1\\\2/
+ P
+# We cannot use D here.
+ s/.*\n\(.*\)/\1/
+ tb
+}
+d
diff --git a/intl/loadinfo.h b/intl/loadinfo.h
new file mode 100644
index 0000000..f4ebf6d
--- /dev/null
+++ b/intl/loadinfo.h
@@ -0,0 +1,76 @@
+/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+ 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, 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. */
+
+#ifndef PARAMS
+# if __STDC__
+# define PARAMS(args) args
+# else
+# define PARAMS(args) ()
+# endif
+#endif
+
+/* Encoding of locale name parts. */
+#define CEN_REVISION 1
+#define CEN_SPONSOR 2
+#define CEN_SPECIAL 4
+#define XPG_NORM_CODESET 8
+#define XPG_CODESET 16
+#define TERRITORY 32
+#define CEN_AUDIENCE 64
+#define XPG_MODIFIER 128
+
+#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE)
+#define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER)
+
+
+struct loaded_l10nfile
+{
+ const char *filename;
+ int decided;
+
+ const void *data;
+
+ struct loaded_l10nfile *next;
+ struct loaded_l10nfile *successor[1];
+};
+
+
+extern const char *_nl_normalize_codeset PARAMS ((const unsigned char *codeset,
+ size_t name_len));
+
+extern struct loaded_l10nfile *
+_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list,
+ const char *dirlist, size_t dirlist_len, int mask,
+ const char *language, const char *territory,
+ const char *codeset,
+ const char *normalized_codeset,
+ const char *modifier, const char *special,
+ const char *sponsor, const char *revision,
+ const char *filename, int do_allocate));
+
+
+extern const char *_nl_expand_alias PARAMS ((const char *name));
+
+extern int _nl_explode_name PARAMS ((char *name, const char **language,
+ const char **modifier,
+ const char **territory,
+ const char **codeset,
+ const char **normalized_codeset,
+ const char **special,
+ const char **sponsor,
+ const char **revision));
diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c
new file mode 100644
index 0000000..515892d
--- /dev/null
+++ b/intl/loadmsgcat.c
@@ -0,0 +1,222 @@
+/* Load needed message catalogs.
+ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+
+ 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, 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. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#endif
+
+#if defined HAVE_UNISTD_H || defined _LIBC
+# include <unistd.h>
+#endif
+
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP) || defined _LIBC
+# include <sys/mman.h>
+#endif
+
+#include "gettext.h"
+#include "gettextP.h"
+
+/* @@ end of prolog @@ */
+
+#ifdef _LIBC
+/* Rename the non ISO C functions. This is required by the standard
+ because some ISO C functions will require linking with this object
+ file and the name space must not be polluted. */
+# define open __open
+# define close __close
+# define read __read
+# define mmap __mmap
+# define munmap __munmap
+#endif
+
+/* We need a sign, whether a new catalog was loaded, which can be associated
+ with all translations. This is important if the translations are
+ cached by one of GCC's features. */
+int _nl_msg_cat_cntr = 0;
+
+
+/* Load the message catalogs specified by FILENAME. If it is no valid
+ message catalog do nothing. */
+void
+internal_function
+_nl_load_domain (domain_file)
+ struct loaded_l10nfile *domain_file;
+{
+ int fd;
+ size_t size;
+ struct stat st;
+ struct mo_file_header *data = (struct mo_file_header *) -1;
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+ || defined _LIBC
+ int use_mmap = 0;
+#endif
+ struct loaded_domain *domain;
+
+ domain_file->decided = 1;
+ domain_file->data = NULL;
+
+ /* If the record does not represent a valid locale the FILENAME
+ might be NULL. This can happen when according to the given
+ specification the locale file name is different for XPG and CEN
+ syntax. */
+ if (domain_file->filename == NULL)
+ return;
+
+ /* Try to open the addressed file. */
+ fd = open (domain_file->filename, O_RDONLY);
+ if (fd == -1)
+ return;
+
+ /* We must know about the size of the file. */
+ if (fstat (fd, &st) != 0
+ || (size = (size_t) st.st_size) != st.st_size
+ || size < sizeof (struct mo_file_header))
+ {
+ /* Something went wrong. */
+ close (fd);
+ return;
+ }
+
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+ || defined _LIBC
+ /* Now we are ready to load the file. If mmap() is available we try
+ this first. If not available or it failed we try to load it. */
+ data = (struct mo_file_header *) mmap (NULL, size, PROT_READ,
+ MAP_PRIVATE, fd, 0);
+
+ if (data != (struct mo_file_header *) -1)
+ {
+ /* mmap() call was successful. */
+ close (fd);
+ use_mmap = 1;
+ }
+#endif
+
+ /* If the data is not yet available (i.e. mmap'ed) we try to load
+ it manually. */
+ if (data == (struct mo_file_header *) -1)
+ {
+ size_t to_read;
+ char *read_ptr;
+
+ data = (struct mo_file_header *) malloc (size);
+ if (data == NULL)
+ return;
+
+ to_read = size;
+ read_ptr = (char *) data;
+ do
+ {
+ long int nb = (long int) read (fd, read_ptr, to_read);
+ if (nb == -1)
+ {
+ close (fd);
+ return;
+ }
+
+ read_ptr += nb;
+ to_read -= nb;
+ }
+ while (to_read > 0);
+
+ close (fd);
+ }
+
+ /* Using the magic number we can test whether it really is a message
+ catalog file. */
+ if (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED)
+ {
+ /* The magic number is wrong: not a message catalog file. */
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+ || defined _LIBC
+ if (use_mmap)
+ munmap ((caddr_t) data, size);
+ else
+#endif
+ free (data);
+ return;
+ }
+
+ domain_file->data
+ = (struct loaded_domain *) malloc (sizeof (struct loaded_domain));
+ if (domain_file->data == NULL)
+ return;
+
+ domain = (struct loaded_domain *) domain_file->data;
+ domain->data = (char *) data;
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+ || defined _LIBC
+ domain->use_mmap = use_mmap;
+#endif
+ domain->mmap_size = size;
+ domain->must_swap = data->magic != _MAGIC;
+
+ /* Fill in the information about the available tables. */
+ switch (W (domain->must_swap, data->revision))
+ {
+ case 0:
+ domain->nstrings = W (domain->must_swap, data->nstrings);
+ domain->orig_tab = (struct string_desc *)
+ ((char *) data + W (domain->must_swap, data->orig_tab_offset));
+ domain->trans_tab = (struct string_desc *)
+ ((char *) data + W (domain->must_swap, data->trans_tab_offset));
+ domain->hash_size = W (domain->must_swap, data->hash_tab_size);
+ domain->hash_tab = (nls_uint32 *)
+ ((char *) data + W (domain->must_swap, data->hash_tab_offset));
+ break;
+ default:
+ /* This is an illegal revision. */
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+ || defined _LIBC
+ if (use_mmap)
+ munmap ((caddr_t) data, size);
+ else
+#endif
+ free (data);
+ free (domain);
+ domain_file->data = NULL;
+ return;
+ }
+
+ /* Show that one domain is changed. This might make some cached
+ translations invalid. */
+ ++_nl_msg_cat_cntr;
+}
+
+
+#ifdef _LIBC
+void
+internal_function
+_nl_unload_domain (domain)
+ struct loaded_domain *domain;
+{
+ if (domain->use_mmap)
+ munmap ((caddr_t) domain->data, domain->mmap_size);
+ else
+ free ((void *) domain->data);
+
+ free (domain);
+}
+#endif
diff --git a/intl/localealias.c b/intl/localealias.c
new file mode 100644
index 0000000..bca555a
--- /dev/null
+++ b/intl/localealias.c
@@ -0,0 +1,424 @@
+/* Handle aliases for locale names.
+ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+ Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+
+ 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, 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. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <ctype.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+# define HAVE_ALLOCA 1
+#else
+# if defined HAVE_ALLOCA_H || defined _LIBC
+# include <alloca.h>
+# else
+# ifdef _AIX
+ #pragma alloca
+# else
+# ifndef alloca
+char *alloca ();
+# endif
+# endif
+# endif
+#endif
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#else
+char *getenv ();
+# ifdef HAVE_MALLOC_H
+# include <malloc.h>
+# else
+void free ();
+# endif
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+# ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+# endif
+# include <string.h>
+#else
+# include <strings.h>
+# ifndef memcpy
+# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
+# endif
+#endif
+#if !HAVE_STRCHR && !defined _LIBC
+# ifndef strchr
+# define strchr index
+# endif
+#endif
+
+#include "gettext.h"
+#include "gettextP.h"
+
+/* @@ end of prolog @@ */
+
+#ifdef _LIBC
+/* Rename the non ANSI C functions. This is required by the standard
+ because some ANSI C functions will require linking with this object
+ file and the name space must not be polluted. */
+# define strcasecmp __strcasecmp
+
+# define mempcpy __mempcpy
+# define HAVE_MEMPCPY 1
+
+/* We need locking here since we can be called from different places. */
+# include <bits/libc-lock.h>
+
+__libc_lock_define_initialized (static, lock);
+#endif
+
+
+/* For those loosing systems which don't have `alloca' we have to add
+ some additional code emulating it. */
+#ifdef HAVE_ALLOCA
+/* Nothing has to be done. */
+# define ADD_BLOCK(list, address) /* nothing */
+# define FREE_BLOCKS(list) /* nothing */
+#else
+struct block_list
+{
+ void *address;
+ struct block_list *next;
+};
+# define ADD_BLOCK(list, addr) \
+ do { \
+ struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \
+ /* If we cannot get a free block we cannot add the new element to \
+ the list. */ \
+ if (newp != NULL) { \
+ newp->address = (addr); \
+ newp->next = (list); \
+ (list) = newp; \
+ } \
+ } while (0)
+# define FREE_BLOCKS(list) \
+ do { \
+ while (list != NULL) { \
+ struct block_list *old = list; \
+ list = list->next; \
+ free (old); \
+ } \
+ } while (0)
+# undef alloca
+# define alloca(size) (malloc (size))
+#endif /* have alloca */
+
+
+struct alias_map
+{
+ const char *alias;
+ const char *value;
+};
+
+
+static char *string_space = NULL;
+static size_t string_space_act = 0;
+static size_t string_space_max = 0;
+static struct alias_map *map;
+static size_t nmap = 0;
+static size_t maxmap = 0;
+
+
+/* Prototypes for local functions. */
+static size_t read_alias_file PARAMS ((const char *fname, int fname_len))
+ internal_function;
+static void extend_alias_table PARAMS ((void));
+static int alias_compare PARAMS ((const struct alias_map *map1,
+ const struct alias_map *map2));
+
+
+const char *
+_nl_expand_alias (name)
+ const char *name;
+{
+ static const char *locale_alias_path = LOCALE_ALIAS_PATH;
+ struct alias_map *retval;
+ const char *result = NULL;
+ size_t added;
+
+#ifdef _LIBC
+ __libc_lock_lock (lock);
+#endif
+
+ do
+ {
+ struct alias_map item;
+
+ item.alias = name;
+
+ if (nmap > 0)
+ retval = (struct alias_map *) bsearch (&item, map, nmap,
+ sizeof (struct alias_map),
+ (int (*) PARAMS ((const void *,
+ const void *))
+ ) alias_compare);
+ else
+ retval = NULL;
+
+ /* We really found an alias. Return the value. */
+ if (retval != NULL)
+ {
+ result = retval->value;
+ break;
+ }
+
+ /* Perhaps we can find another alias file. */
+ added = 0;
+ while (added == 0 && locale_alias_path[0] != '\0')
+ {
+ const char *start;
+
+ while (locale_alias_path[0] == ':')
+ ++locale_alias_path;
+ start = locale_alias_path;
+
+ while (locale_alias_path[0] != '\0' && locale_alias_path[0] != ':')
+ ++locale_alias_path;
+
+ if (start < locale_alias_path)
+ added = read_alias_file (start, locale_alias_path - start);
+ }
+ }
+ while (added != 0);
+
+#ifdef _LIBC
+ __libc_lock_unlock (lock);
+#endif
+
+ return result;
+}
+
+
+static size_t
+internal_function
+read_alias_file (fname, fname_len)
+ const char *fname;
+ int fname_len;
+{
+#ifndef HAVE_ALLOCA
+ struct block_list *block_list = NULL;
+#endif
+ FILE *fp;
+ char *full_fname;
+ size_t added;
+ static const char aliasfile[] = "/locale.alias";
+
+ full_fname = (char *) alloca (fname_len + sizeof aliasfile);
+ ADD_BLOCK (block_list, full_fname);
+#ifdef HAVE_MEMPCPY
+ mempcpy (mempcpy (full_fname, fname, fname_len),
+ aliasfile, sizeof aliasfile);
+#else
+ memcpy (full_fname, fname, fname_len);
+ memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile);
+#endif
+
+ fp = fopen (full_fname, "r");
+ if (fp == NULL)
+ {
+ FREE_BLOCKS (block_list);
+ return 0;
+ }
+
+ added = 0;
+ while (!feof (fp))
+ {
+ /* It is a reasonable approach to use a fix buffer here because
+ a) we are only interested in the first two fields
+ b) these fields must be usable as file names and so must not
+ be that long
+ */
+ unsigned char buf[BUFSIZ];
+ unsigned char *alias;
+ unsigned char *value;
+ unsigned char *cp;
+
+ if (fgets (buf, sizeof buf, fp) == NULL)
+ /* EOF reached. */
+ break;
+
+ /* Possibly not the whole line fits into the buffer. Ignore
+ the rest of the line. */
+ if (strchr (buf, '\n') == NULL)
+ {
+ char altbuf[BUFSIZ];
+ do
+ if (fgets (altbuf, sizeof altbuf, fp) == NULL)
+ /* Make sure the inner loop will be left. The outer loop
+ will exit at the `feof' test. */
+ break;
+ while (strchr (altbuf, '\n') == NULL);
+ }
+
+ cp = buf;
+ /* Ignore leading white space. */
+ while (isspace (cp[0]))
+ ++cp;
+
+ /* A leading '#' signals a comment line. */
+ if (cp[0] != '\0' && cp[0] != '#')
+ {
+ alias = cp++;
+ while (cp[0] != '\0' && !isspace (cp[0]))
+ ++cp;
+ /* Terminate alias name. */
+ if (cp[0] != '\0')
+ *cp++ = '\0';
+
+ /* Now look for the beginning of the value. */
+ while (isspace (cp[0]))
+ ++cp;
+
+ if (cp[0] != '\0')
+ {
+ size_t alias_len;
+ size_t value_len;
+
+ value = cp++;
+ while (cp[0] != '\0' && !isspace (cp[0]))
+ ++cp;
+ /* Terminate value. */
+ if (cp[0] == '\n')
+ {
+ /* This has to be done to make the following test
+ for the end of line possible. We are looking for
+ the terminating '\n' which do not overwrite here. */
+ *cp++ = '\0';
+ *cp = '\n';
+ }
+ else if (cp[0] != '\0')
+ *cp++ = '\0';
+
+ if (nmap >= maxmap)
+ extend_alias_table ();
+
+ alias_len = strlen (alias) + 1;
+ value_len = strlen (value) + 1;
+
+ if (string_space_act + alias_len + value_len > string_space_max)
+ {
+ /* Increase size of memory pool. */
+ size_t new_size = (string_space_max
+ + (alias_len + value_len > 1024
+ ? alias_len + value_len : 1024));
+ char *new_pool = (char *) realloc (string_space, new_size);
+ if (new_pool == NULL)
+ {
+ FREE_BLOCKS (block_list);
+ return added;
+ }
+ string_space = new_pool;
+ string_space_max = new_size;
+ }
+
+ map[nmap].alias = memcpy (&string_space[string_space_act],
+ alias, alias_len);
+ string_space_act += alias_len;
+
+ map[nmap].value = memcpy (&string_space[string_space_act],
+ value, value_len);
+ string_space_act += value_len;
+
+ ++nmap;
+ ++added;
+ }
+ }
+ }
+
+ /* Should we test for ferror()? I think we have to silently ignore
+ errors. --drepper */
+ fclose (fp);
+
+ if (added > 0)
+ qsort (map, nmap, sizeof (struct alias_map),
+ (int (*) PARAMS ((const void *, const void *))) alias_compare);
+
+ FREE_BLOCKS (block_list);
+ return added;
+}
+
+
+static void
+extend_alias_table ()
+{
+ size_t new_size;
+ struct alias_map *new_map;
+
+ new_size = maxmap == 0 ? 100 : 2 * maxmap;
+ new_map = (struct alias_map *) realloc (map, (new_size
+ * sizeof (struct alias_map)));
+ if (new_map == NULL)
+ /* Simply don't extend: we don't have any more core. */
+ return;
+
+ map = new_map;
+ maxmap = new_size;
+}
+
+
+#ifdef _LIBC
+static void __attribute__ ((unused))
+free_mem (void)
+{
+ if (string_space != NULL)
+ free (string_space);
+ if (map != NULL)
+ free (map);
+}
+text_set_element (__libc_subfreeres, free_mem);
+#endif
+
+
+static int
+alias_compare (map1, map2)
+ const struct alias_map *map1;
+ const struct alias_map *map2;
+{
+#if defined _LIBC || defined HAVE_STRCASECMP
+ return strcasecmp (map1->alias, map2->alias);
+#else
+ const unsigned char *p1 = (const unsigned char *) map1->alias;
+ const unsigned char *p2 = (const unsigned char *) map2->alias;
+ unsigned char c1, c2;
+
+ if (p1 == p2)
+ return 0;
+
+ do
+ {
+ /* I know this seems to be odd but the tolower() function in
+ some systems libc cannot handle nonalpha characters. */
+ c1 = isupper (*p1) ? tolower (*p1) : *p1;
+ c2 = isupper (*p2) ? tolower (*p2) : *p2;
+ if (c1 == '\0')
+ break;
+ ++p1;
+ ++p2;
+ }
+ while (c1 == c2);
+
+ return c1 - c2;
+#endif
+}
diff --git a/intl/po2tbl.sed.in b/intl/po2tbl.sed.in
new file mode 100644
index 0000000..b3bcca4
--- /dev/null
+++ b/intl/po2tbl.sed.in
@@ -0,0 +1,102 @@
+# po2tbl.sed - Convert Uniforum style .po file to lookup table for catgets
+# Copyright (C) 1995 Free Software Foundation, Inc.
+# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+#
+# 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, 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.
+#
+1 {
+ i\
+/* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot. */\
+\
+#if HAVE_CONFIG_H\
+# include <config.h>\
+#endif\
+\
+#include "libgettext.h"\
+\
+const struct _msg_ent _msg_tbl[] = {
+ h
+ s/.*/0/
+ x
+}
+#
+# Write msgid entries in C array form.
+#
+/^msgid/ {
+ s/msgid[ ]*\(".*"\)/ {\1/
+ tb
+# Append the next line
+ :b
+ N
+# Look whether second part is continuation line.
+ s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/
+# Yes, then branch.
+ ta
+# Because we assume that the input file correctly formed the line
+# just read cannot be again be a msgid line. So it's safe to ignore
+# it.
+ s/\(.*\)\n.*/\1/
+ bc
+# We found a continuation line. But before printing insert '\'.
+ :a
+ s/\(.*\)\(\n.*\)/\1\\\2/
+ P
+# We cannot use D here.
+ s/.*\n\(.*\)/\1/
+# Some buggy seds do not clear the `successful substitution since last ``t'''
+# flag on `N', so we do a `t' here to clear it.
+ tb
+# Not reached
+ :c
+ x
+# The following nice solution is by
+# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
+ td
+# Increment a decimal number in pattern space.
+# First hide trailing `9' digits.
+ :d
+ s/9\(_*\)$/_\1/
+ td
+# Assure at least one digit is available.
+ s/^\(_*\)$/0\1/
+# Increment the last digit.
+ s/8\(_*\)$/9\1/
+ s/7\(_*\)$/8\1/
+ s/6\(_*\)$/7\1/
+ s/5\(_*\)$/6\1/
+ s/4\(_*\)$/5\1/
+ s/3\(_*\)$/4\1/
+ s/2\(_*\)$/3\1/
+ s/1\(_*\)$/2\1/
+ s/0\(_*\)$/1\1/
+# Convert the hidden `9' digits to `0's.
+ s/_/0/g
+ x
+ G
+ s/\(.*\)\n\([0-9]*\)/\1, \2},/
+ s/\(.*\)"$/\1/
+ p
+}
+#
+# Last line.
+#
+$ {
+ i\
+};\
+
+ g
+ s/0*\(.*\)/int _msg_tbl_length = \1;/p
+}
+d
diff --git a/intl/textdomain.c b/intl/textdomain.c
new file mode 100644
index 0000000..8855746
--- /dev/null
+++ b/intl/textdomain.c
@@ -0,0 +1,108 @@
+/* Implementation of the textdomain(3) function.
+ Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+ Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+
+ 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, 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. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#endif
+
+#if defined STDC_HEADERS || defined HAVE_STRING_H || defined _LIBC
+# include <string.h>
+#else
+# include <strings.h>
+# ifndef memcpy
+# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
+# endif
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "libgettext.h"
+#endif
+
+/* @@ end of prolog @@ */
+
+/* Name of the default text domain. */
+extern const char _nl_default_default_domain[];
+
+/* Default text domain in which entries for gettext(3) are to be found. */
+extern const char *_nl_current_default_domain;
+
+
+/* Names for the libintl functions are a problem. They must not clash
+ with existing names and they should follow ANSI C. But this source
+ code is also used in GNU C Library where the names have a __
+ prefix. So we have to make a difference here. */
+#ifdef _LIBC
+# define TEXTDOMAIN __textdomain
+# ifndef strdup
+# define strdup(str) __strdup (str)
+# endif
+#else
+# define TEXTDOMAIN textdomain__
+#endif
+
+/* Set the current default message catalog to DOMAINNAME.
+ If DOMAINNAME is null, return the current default.
+ If DOMAINNAME is "", reset to the default of "messages". */
+char *
+TEXTDOMAIN (domainname)
+ const char *domainname;
+{
+ char *old;
+
+ /* A NULL pointer requests the current setting. */
+ if (domainname == NULL)
+ return (char *) _nl_current_default_domain;
+
+ old = (char *) _nl_current_default_domain;
+
+ /* If domain name is the null string set to default domain "messages". */
+ if (domainname[0] == '\0'
+ || strcmp (domainname, _nl_default_default_domain) == 0)
+ _nl_current_default_domain = _nl_default_default_domain;
+ else
+ {
+ /* If the following malloc fails `_nl_current_default_domain'
+ will be NULL. This value will be returned and so signals we
+ are out of core. */
+#if defined _LIBC || defined HAVE_STRDUP
+ _nl_current_default_domain = strdup (domainname);
+#else
+ size_t len = strlen (domainname) + 1;
+ char *cp = (char *) malloc (len);
+ if (cp != NULL)
+ memcpy (cp, domainname, len);
+ _nl_current_default_domain = cp;
+#endif
+ }
+
+ if (old != _nl_default_default_domain)
+ free (old);
+
+ return (char *) _nl_current_default_domain;
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library. */
+weak_alias (__textdomain, textdomain);
+#endif
diff --git a/intl/xopen-msg.sed b/intl/xopen-msg.sed
new file mode 100644
index 0000000..b19c0bb
--- /dev/null
+++ b/intl/xopen-msg.sed
@@ -0,0 +1,104 @@
+# po2msg.sed - Convert Uniforum style .po file to X/Open style .msg file
+# Copyright (C) 1995 Free Software Foundation, Inc.
+# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+#
+# 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, 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.
+#
+#
+# The first directive in the .msg should be the definition of the
+# message set number. We use always set number 1.
+#
+1 {
+ i\
+$set 1 # Automatically created by po2msg.sed
+ h
+ s/.*/0/
+ x
+}
+#
+# We copy all comments into the .msg file. Perhaps they can help.
+#
+/^#/ s/^#[ ]*/$ /p
+#
+# We copy the original message as a comment into the .msg file.
+#
+/^msgid/ {
+# Does not work now
+# /"$/! {
+# s/\\$//
+# s/$/ ... (more lines following)"/
+# }
+ s/^msgid[ ]*"\(.*\)"$/$ Original Message: \1/
+ p
+}
+#
+# The .msg file contains, other then the .po file, only the translations
+# but each given a unique ID. Starting from 1 and incrementing by 1 for
+# each message we assign them to the messages.
+# It is important that the .po file used to generate the cat-id-tbl.c file
+# (with po-to-tbl) is the same as the one used here. (At least the order
+# of declarations must not be changed.)
+#
+/^msgstr/ {
+ s/msgstr[ ]*"\(.*\)"/\1/
+ x
+# The following nice solution is by
+# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
+ td
+# Increment a decimal number in pattern space.
+# First hide trailing `9' digits.
+ :d
+ s/9\(_*\)$/_\1/
+ td
+# Assure at least one digit is available.
+ s/^\(_*\)$/0\1/
+# Increment the last digit.
+ s/8\(_*\)$/9\1/
+ s/7\(_*\)$/8\1/
+ s/6\(_*\)$/7\1/
+ s/5\(_*\)$/6\1/
+ s/4\(_*\)$/5\1/
+ s/3\(_*\)$/4\1/
+ s/2\(_*\)$/3\1/
+ s/1\(_*\)$/2\1/
+ s/0\(_*\)$/1\1/
+# Convert the hidden `9' digits to `0's.
+ s/_/0/g
+ x
+# Bring the line in the format `<number> <message>'
+ G
+ s/^[^\n]*$/& /
+ s/\(.*\)\n\([0-9]*\)/\2 \1/
+# Clear flag from last substitution.
+ tb
+# Append the next line.
+ :b
+ N
+# Look whether second part is a continuation line.
+ s/\(.*\n\)"\(.*\)"/\1\2/
+# Yes, then branch.
+ ta
+ P
+ D
+# Note that `D' includes a jump to the start!!
+# We found a continuation line. But before printing insert '\'.
+ :a
+ s/\(.*\)\(\n.*\)/\1\\\2/
+ P
+# We cannot use the sed command `D' here
+ s/.*\n\(.*\)/\1/
+ tb
+}
+d
diff --git a/omf.make b/omf.make
new file mode 100644
index 0000000..cb7acba
--- /dev/null
+++ b/omf.make
@@ -0,0 +1,61 @@
+#
+# No modifications of this Makefile should be necessary.
+#
+# This file contains the build instructions for installing OMF files. It is
+# generally called from the makefiles for particular formats of documentation.
+#
+# Note that you must configure your package with --localstatedir=/var
+# so that the scrollkeeper-update command below will update the database
+# in the standard scrollkeeper directory.
+#
+# If it is impossible to configure with --localstatedir=/var, then
+# modify the definition of scrollkeeper_localstate_dir so that
+# it points to the correct location. Note that you must still use
+# $(localstatedir) in this or when people build RPMs it will update
+# the real database on their system instead of the one under RPM_BUILD_ROOT.
+#
+# Note: This make file is not incorporated into xmldocs.make because, in
+# general, there will be other documents install besides XML documents
+# and the makefiles for these formats should also include this file.
+#
+# About this file:
+# This file was derived from scrollkeeper_example2, a package
+# illustrating how to install documentation and OMF files for use with
+# ScrollKeeper 0.3.x and 0.4.x. For more information, see:
+# http://scrollkeeper.sourceforge.net/
+# Version: 0.1.3 (last updated: March 20, 2002)
+#
+
+omf_dest_dir=$(datadir)/omf/@PACKAGE@
+scrollkeeper_localstate_dir = $(localstatedir)/scrollkeeper
+
+# At some point, it may be wise to change to something like this:
+# scrollkeeper_localstate_dir = @SCROLLKEEPER_STATEDIR@
+
+omf: omf_timestamp
+
+omf_timestamp: $(omffile)
+ -for file in $(omffile); do \
+ scrollkeeper-preinstall $(docdir)/$(docname).xml $(srcdir)/$$file $$file.out; \
+ done; \
+ touch omf_timestamp
+
+install-data-hook-omf:
+ $(mkinstalldirs) $(DESTDIR)$(omf_dest_dir)
+ for file in $(omffile); do \
+ $(INSTALL_DATA) $$file.out $(DESTDIR)$(omf_dest_dir)/$$file; \
+ done
+ -scrollkeeper-update -p $(DESTDIR)$(scrollkeeper_localstate_dir) -o $(DESTDIR)$(omf_dest_dir)
+
+uninstall-local-omf:
+ -for file in $(srcdir)/*.omf; do \
+ basefile=`basename $$file`; \
+ rm -f $(DESTDIR)$(omf_dest_dir)/$$basefile; \
+ done
+ -rmdir $(DESTDIR)$(omf_dest_dir)
+ -scrollkeeper-update -p $(DESTDIR)$(scrollkeeper_localstate_dir)
+
+clean-local-omf:
+ -for file in $(omffile); do \
+ rm -f $$file.out; \
+ done
diff --git a/oregano.desktop b/oregano.desktop
new file mode 100644
index 0000000..28c1b2d
--- /dev/null
+++ b/oregano.desktop
@@ -0,0 +1,21 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Oregano electrical engineering tool
+Name[ca]=Eina d'enginyeria elèctrica Oregano
+Name[es]=Oregano, herramienta para la ingeniería electrónica
+GenericName=Electrical engineering tool
+GenericName[ca]=Eina d'enginyeria elèctrica
+GenericName[es]=Herramienta para la ingeniería electrónica
+Comment=Schematic capture and simulation of electronic circuits
+Comment[ca]=Captureu esquemàtics i simuleu circuits electrònics
+Comment[sv]=Kretsschemariting och simulering av elektriska kretsar
+Comment[it]=Disegno e simulazione di circuiti elettrici
+Comment[es]=Preparación de esquemáticos y simulación de circuitos eléctricos
+TryExec=oregano
+Exec=oregano
+Icon=gnome-oregano.svg
+StartupNotify=true
+Terminal=false
+Type=Application
+Categories=GNOME;GTK;Science;Education;Electronics;
+MimeType=application/x-oregano;
diff --git a/oregano.keys.in b/oregano.keys.in
new file mode 100644
index 0000000..2a92667
--- /dev/null
+++ b/oregano.keys.in
@@ -0,0 +1,4 @@
+application/x-oregano:
+ open=oregano %f
+ view=oregano %f
+ icon-filename=@icondir@/gnome-oregano.svg
diff --git a/oregano.mime b/oregano.mime
new file mode 100644
index 0000000..9f1bec1
--- /dev/null
+++ b/oregano.mime
@@ -0,0 +1,2 @@
+application/x-oregano
+ ext: oregano
diff --git a/oregano.spec.in b/oregano.spec.in
new file mode 100644
index 0000000..dc7f7b8
--- /dev/null
+++ b/oregano.spec.in
@@ -0,0 +1,58 @@
+%define ver @VERSION@
+%define RELEASE 1
+%define rel %{?CUSTOM_RELEASE} %{!?CUSTOM_RELEASE:%RELEASE}
+%define prefix /usr
+
+Summary: Oregano
+Name: oregano
+Version: %ver
+Release: %rel
+Copyright: GPL
+Group: Applications/Engineering
+Source: http://gforge.lug.fi.uba.ar/scm/cvsweb.php/?cvsroot=arrakis
+Url: http://arrakis.gforge.lug.fi.uba.ar/
+BuildRoot: /var/tmp/oregano-%{PACKAGE_VERSION}-root
+Docdir: %{prefix}/doc
+
+Requires: libgnome2 >= 2.0.0
+Requires: libxml2 >= 2.0.0
+Requires: libglade2 >= 2.0
+
+%description
+Oregano, schematic capture and simulation of electronic circuits.
+
+%prep
+%setup -q
+
+%build
+%ifarch alpha
+ MYARCH_FLAGS="--host=alpha-redhat-linux"
+%endif
+CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%prefix $MYARCH_FLAGS --sysconfdir=/etc
+
+if [ "$SMP" != "" ]; then
+ make -j$SMP "MAKE=make -j$SMP"
+else
+ make
+fi
+
+%install
+
+make prefix=$RPM_BUILD_ROOT%{prefix} sysconfdir=$RPM_BUILD_ROOT/etc install
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-, root, root)
+
+%doc ChangeLog NEWS README COPYING TODO
+
+%{prefix}/bin/*
+%{prefix}/share/locale/*/*
+%{prefix}/share/gnome/help/oregano/*/*
+%{prefix}/share/gnome/apps/Applications/oregano.desktop
+%{prefix}/share/mime-info/*
+%{prefix}/share/pixmaps/*
+%{prefix}/share/oregano/*/*
+
diff --git a/oregano.xml.in b/oregano.xml.in
new file mode 100644
index 0000000..2596100
--- /dev/null
+++ b/oregano.xml.in
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
+ <mime-type type="text/oregano">
+ <comment xml:lang="es">Archivo de esquemas</comment>
+ <comment xml:lang="en">Schematic file</comment>
+ <glob pattern="*.oregano"/>
+ </mime-type>
+ <mime-type type="text/netlist">
+ <comment xml:lang="en">net list from circuits</comment>
+ <comment xml:lang="es">Lista de nodos de los circuitos</comment>
+ <glob pattern="*.netlist"/>
+ </mime-type>
+</mime-info>
diff --git a/po/ChangeLog b/po/ChangeLog
new file mode 100644
index 0000000..3195ec6
--- /dev/null
+++ b/po/ChangeLog
@@ -0,0 +1,33 @@
+2005-10-18 Ricardo Markiewicz <rmarkie@fi.uba.ar>
+
+ * pl.po : Added. Thanks to Wojciech Mula <wm@mahajana.net>
+ * fr.po : Updated.
+
+2004-08-11 Maximiliano Curia <maxy@gnuservers.com.ar>
+
+ * es.po: Updated.
+
+2001-04-15 Richard Hult <rhult@codefactory.se>
+
+ * es.po: Fixed spelling mistake.
+
+2001-02-18 Richard Hult <rhult@codefactory.se>
+
+ * sv.po: Updated.
+
+2000-12-06 Richard Hult <rhult@hem.passagen.se>
+
+ * Added translations.
+
+2000-03-15 Richard Hult <rhult@hem.passagen.se>
+
+ * sv.po: Updated translation.
+
+2000-03-07 Richard Hult <rhult@hem.passagen.se>
+
+ * fr.po: Added French translation.
+
+1999-11-05 Richard Hult <rhult@frenzy.hemmet.chalmers.se>
+
+ * it.po: Added Italian translation from Elker Cavina <e.cavina@ra.nettuno.it>
+
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
new file mode 100644
index 0000000..cc8a222
--- /dev/null
+++ b/po/Makefile.in.in
@@ -0,0 +1,217 @@
+# Makefile for program source directory in GNU NLS utilities package.
+# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+# Copyright (C) 2004-2008 Rodney Dawes <dobey.pwns@gmail.com>
+#
+# This file may be copied and used freely without restrictions. It may
+# be used in projects which are not available under a GNU Public License,
+# but which still want to provide support for the GNU gettext functionality.
+#
+# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE
+# instead of PACKAGE and to look for po2tbl in ./ not in intl/
+#
+# - Modified by jacob berkman <jacob@ximian.com> to install
+# Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
+#
+# - Modified by Rodney Dawes <dobey.pwns@gmail.com> for use with intltool
+#
+# We have the following line for use by intltoolize:
+# INTLTOOL_MAKEFILE
+
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+top_builddir = @top_builddir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datadir = @datadir@
+datarootdir = @datarootdir@
+libdir = @libdir@
+DATADIRNAME = @DATADIRNAME@
+itlocaledir = $(prefix)/$(DATADIRNAME)/locale
+subdir = po
+install_sh = @install_sh@
+# Automake >= 1.8 provides @mkdir_p@.
+# Until it can be supposed, use the safe fallback:
+mkdir_p = $(install_sh) -d
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+GMSGFMT = @GMSGFMT@
+MSGFMT = @MSGFMT@
+XGETTEXT = @XGETTEXT@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
+GENPOT = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
+
+ALL_LINGUAS = @ALL_LINGUAS@
+
+PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; else echo "$(ALL_LINGUAS)"; fi)
+
+USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for lang in $$LLINGUAS; do if test -n "`grep \^$$lang$$ $(srcdir)/LINGUAS 2>/dev/null`" -o -n "`echo $$ALINGUAS|tr ' ' '\n'|grep \^$$lang$$`"; then printf "$$lang "; fi; done; fi)
+
+USE_LINGUAS=$(shell if test -n "$(USER_LINGUAS)" -o -n "$(LINGUAS)"; then LLINGUAS="$(USER_LINGUAS)"; else if test -n "$(PO_LINGUAS)"; then LLINGUAS="$(PO_LINGUAS)"; else LLINGUAS="$(ALL_LINGUAS)"; fi; fi; for lang in $$LLINGUAS; do printf "$$lang "; done)
+
+POFILES=$(shell LINGUAS="$(PO_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.po "; done)
+
+DISTFILES = Makefile.in.in POTFILES.in $(POFILES)
+EXTRA_DISTFILES = ChangeLog POTFILES.skip Makevars LINGUAS
+
+POTFILES = \
+# This comment gets stripped out
+
+CATALOGS=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.gmo "; done)
+
+.SUFFIXES:
+.SUFFIXES: .po .pox .gmo .mo .msg .cat
+
+.po.pox:
+ $(MAKE) $(GETTEXT_PACKAGE).pot
+ $(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox
+
+.po.mo:
+ $(MSGFMT) -o $@ $<
+
+.po.gmo:
+ file=`echo $* | sed 's,.*/,,'`.gmo \
+ && rm -f $$file && $(GMSGFMT) -o $$file $<
+
+.po.cat:
+ sed -f ../intl/po2msg.sed < $< > $*.msg \
+ && rm -f $@ && gencat $@ $*.msg
+
+
+all: all-@USE_NLS@
+
+all-yes: $(CATALOGS)
+all-no:
+
+$(GETTEXT_PACKAGE).pot: $(POTFILES)
+ $(GENPOT)
+
+install: install-data
+install-data: install-data-@USE_NLS@
+install-data-no: all
+install-data-yes: all
+ linguas="$(USE_LINGUAS)"; \
+ for lang in $$linguas; do \
+ dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \
+ $(mkdir_p) $$dir; \
+ if test -r $$lang.gmo; then \
+ $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+ echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \
+ else \
+ $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+ echo "installing $(srcdir)/$$lang.gmo as" \
+ "$$dir/$(GETTEXT_PACKAGE).mo"; \
+ fi; \
+ if test -r $$lang.gmo.m; then \
+ $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \
+ echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \
+ else \
+ if test -r $(srcdir)/$$lang.gmo.m ; then \
+ $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \
+ $$dir/$(GETTEXT_PACKAGE).mo.m; \
+ echo "installing $(srcdir)/$$lang.gmo.m as" \
+ "$$dir/$(GETTEXT_PACKAGE).mo.m"; \
+ else \
+ true; \
+ fi; \
+ fi; \
+ done
+
+# Empty stubs to satisfy archaic automake needs
+dvi info ctags tags CTAGS TAGS ID:
+
+# Define this as empty until I found a useful application.
+install-exec installcheck:
+
+uninstall:
+ linguas="$(USE_LINGUAS)"; \
+ for lang in $$linguas; do \
+ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \
+ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \
+ done
+
+check: all $(GETTEXT_PACKAGE).pot
+ rm -f missing notexist
+ srcdir=$(srcdir) $(INTLTOOL_UPDATE) -m
+ if [ -r missing -o -r notexist ]; then \
+ exit 1; \
+ fi
+
+mostlyclean:
+ rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
+ rm -f .intltool-merge-cache
+
+clean: mostlyclean
+
+distclean: clean
+ rm -f Makefile Makefile.in POTFILES stamp-it
+ rm -f *.mo *.msg *.cat *.cat.m *.gmo
+
+maintainer-clean: distclean
+ @echo "This command is intended for maintainers to use;"
+ @echo "it deletes files that may require special tools to rebuild."
+ rm -f Makefile.in.in
+
+distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir: $(DISTFILES)
+ dists="$(DISTFILES)"; \
+ extra_dists="$(EXTRA_DISTFILES)"; \
+ for file in $$extra_dists; do \
+ test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \
+ done; \
+ for file in $$dists; do \
+ test -f $$file || file="$(srcdir)/$$file"; \
+ ln $$file $(distdir) 2> /dev/null \
+ || cp -p $$file $(distdir); \
+ done
+
+update-po: Makefile
+ $(MAKE) $(GETTEXT_PACKAGE).pot
+ tmpdir=`pwd`; \
+ linguas="$(USE_LINGUAS)"; \
+ for lang in $$linguas; do \
+ echo "$$lang:"; \
+ result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \
+ if $$result; then \
+ if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+ rm -f $$tmpdir/$$lang.new.po; \
+ else \
+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+ :; \
+ else \
+ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ exit 1; \
+ fi; \
+ fi; \
+ else \
+ echo "msgmerge for $$lang.gmo failed!"; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ fi; \
+ done
+
+Makefile POTFILES: stamp-it
+ @if test ! -f $@; then \
+ rm -f stamp-it; \
+ $(MAKE) stamp-it; \
+ fi
+
+stamp-it: Makefile.in.in $(top_builddir)/config.status POTFILES.in
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \
+ $(SHELL) ./config.status
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644
index 0000000..7579bc0
--- /dev/null
+++ b/po/POTFILES.in
@@ -0,0 +1,65 @@
+data/oregano.desktop.in.in
+data/mime/oregano.xml.in
+
+data/glade/clamp-properties-dialog.glade
+data/glade/export.glade
+data/glade/log-window.glade
+data/glade/part-browser.glade
+data/glade/part-properties-dialog.glade
+data/glade/plot-add-function.glade
+data/glade/plot-window.glade
+data/glade/print-options.glade
+data/glade/properties.glade
+data/glade/settings.glade
+data/glade/sim-settings.glade
+data/glade/simulation.glade
+data/glade/splash.glade
+data/glade/textbox-properties-dialog.glade
+data/glade/view-netlist.glade
+
+src/xml-helper.c
+src/sheet/grid.c
+src/sheet/node-item.c
+src/sheet/part-item.c
+src/sheet/sheet.c
+src/sheet/sheet-item.c
+src/sheet/sheet-item-factory.c
+src/sheet/textbox-item.c
+src/sheet/wire-item.c
+src/stock.c
+src/splash.c
+src/smallicon.c
+src/simulation.c
+src/sim-settings.c
+src/settings.c
+src/schematic-view.c
+src/schematic-view-menu.h
+src/save-schematic.c
+src/plot.c
+src/part-browser.c
+src/oregano-utils.c
+src/oregano-impl.c
+src/oregano-config.c
+src/engines/netlist.c
+src/engines/gnucap.c
+src/engines/engine.c
+src/netlist-editor.c
+src/main.c
+src/load-schematic.c
+src/load-library.c
+src/file.c
+src/dialogs.c
+src/cursors.c
+src/model/part.c
+src/model/item-data.c
+src/model/wire.c
+src/model/node.c
+src/model/node-store.c
+src/model/schematic.c
+src/model/textbox.c
+src/model/part-property.c
+src/create-wire.c
+src/clipboard.c
+src/plot-add-function.c
+src/file-manager.c
+src/errors.c
diff --git a/po/ca.po b/po/ca.po
new file mode 100644
index 0000000..0384b0d
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,1320 @@
+# translation of ca.po to Catalan
+# Traducció al català de l'Oregano.
+# Copyright © 2000, 2004 Free Software Foundation, Inc.
+# Joan Peris <juanpar@alumni.uv.es>, Xàtiva,Novembre de 2000.
+# Toni Cunyat <ancua@alumni.uv.es>, Simat de la Valldigna, Novembre de 2000.
+# Jordi Mallach <jordi@sindominio.net>, 2004.
+# Orestes Mas <orestes@tsc.upc.edu>, Badalona, Agost de 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ca\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-11 02:36-0300\n"
+"PO-Revision-Date: 2005-08-31 00:40+0200\n"
+"Last-Translator: Orestes Mas <orestes@tsc.upc.edu>\n"
+"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:1
+msgid "<b>AC Analysis Options</b>"
+msgstr "<b>Opcions de l'anàlisi d'AC</b>"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:2
+msgid "<b>Type</b>"
+msgstr "<b>Tipus</b>"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:3
+msgid "Current"
+msgstr "Corrent"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:4
+msgid "Edit Clamp properties"
+msgstr "Edita les propietats de la sonda"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:5
+msgid "Imaginary part"
+msgstr "Part imaginària"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:6
+msgid "Magnitude"
+msgstr "Magnitud"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:7
+msgid "Phase"
+msgstr "Fase"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:8
+msgid "Real part"
+msgstr "Part real"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:9
+msgid "Use decibel scale"
+msgstr "Utilitza una escala en decibels"
+
+# FIXME: typo
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:10
+msgid "Voltage"
+msgstr "Tensió"
+
+#: ../data/dialogs/log-window.glade2.h:1
+msgid "Clear"
+msgstr "Neteja"
+
+#: ../data/dialogs/log-window.glade2.h:2
+msgid "Oregano Log Window"
+msgstr "Finestra de registre de l'Oregano"
+
+#: ../data/dialogs/page-properties.glade2.h:1
+msgid "<b>Alignment</b>"
+msgstr "<b>Alineament</b>"
+
+#: ../data/dialogs/page-properties.glade2.h:2
+msgid "Center Horizontally"
+msgstr "Centra horitzontalment"
+
+#: ../data/dialogs/page-properties.glade2.h:3
+msgid "Center Vertically"
+msgstr "Centra verticalment"
+
+#: ../data/dialogs/page-properties.glade2.h:4
+msgid "Fit to page"
+msgstr "Ajusta a la pàgina"
+
+#: ../data/dialogs/page-properties.glade2.h:5
+msgid "Print Properties"
+msgstr "Propietats d'impressió"
+
+#: ../data/dialogs/part-browser.glade2.h:1
+msgid "<b>Preview</b>"
+msgstr "<b>Previsualitza</b>"
+
+#: ../data/dialogs/part-browser.glade2.h:2
+msgid "Library:"
+msgstr "Biblioteca:"
+
+#: ../data/dialogs/part-browser.glade2.h:3 ../src/schematic-view-ui.h:360
+msgid "Parts"
+msgstr "Components"
+
+#: ../data/dialogs/part-browser.glade2.h:4
+msgid "Place"
+msgstr "Col·loca"
+
+#: ../data/dialogs/part-browser.glade2.h:5
+msgid "Press this button to place the selected part"
+msgstr "Premeu aquest botó per a col·locar el component seleccionat"
+
+#: ../data/dialogs/part-browser.glade2.h:6
+msgid "Search:"
+msgstr "Cerca:"
+
+#: ../data/dialogs/part-browser.glade2.h:7
+msgid "Select which library to use"
+msgstr "Selecciona la biblioteca a usar"
+
+#: ../data/dialogs/part-properties-dialog.glade2.h:1
+msgid "Part Properties"
+msgstr "Propietats del component"
+
+#: ../data/dialogs/plot-window.glade2.h:1
+msgid "<b>Plot</b>"
+msgstr "<b>Gràfic</b>"
+
+#: ../data/dialogs/plot-window.glade2.h:2
+msgid "<b>Variables</b>"
+msgstr "<b>Variables</b>"
+
+#: ../data/dialogs/plot-window.glade2.h:3
+msgid "Plot"
+msgstr "Gràfic"
+
+#: ../data/dialogs/plot-window.glade2.h:4
+msgid "Region"
+msgstr ""
+
+#: ../data/dialogs/plot-window.glade2.h:5
+msgid "Shift"
+msgstr ""
+
+#: ../data/dialogs/properties.glade2.h:1
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:1
+msgid " "
+msgstr " "
+
+#: ../data/dialogs/properties.glade2.h:2
+msgid "<b>Comments</b>"
+msgstr "<b>Comentaris</b>"
+
+#: ../data/dialogs/properties.glade2.h:3
+msgid "Author:"
+msgstr "Autor:"
+
+#: ../data/dialogs/properties.glade2.h:4 ../src/sheet/part-item.c:147
+msgid "Properties"
+msgstr "Propietats"
+
+#: ../data/dialogs/properties.glade2.h:5
+msgid "Title:"
+msgstr "Títol:"
+
+#: ../data/dialogs/settings.glade2.h:1
+msgid "\n"
+msgstr "\n"
+
+#: ../data/dialogs/settings.glade2.h:3
+msgid "<b>Data Paths</b>"
+msgstr "<b>Camins de dades</b>"
+
+#: ../data/dialogs/settings.glade2.h:4
+msgid "<b>Engine</b>"
+msgstr "<b>Motor</b>"
+
+#: ../data/dialogs/settings.glade2.h:5
+msgid "<b>Executable Path</b>"
+msgstr "<b>Camí dels executables</b>"
+
+#: ../data/dialogs/settings.glade2.h:6
+msgid "<b>File Format</b>"
+msgstr "<b>Format del fitxer</b>"
+
+#: ../data/dialogs/settings.glade2.h:7
+msgid "<b>User Interface</b>"
+msgstr "<b>Interfície d'usuari</b>"
+
+#: ../data/dialogs/settings.glade2.h:8
+msgid "Automatically show log windows after simulation"
+msgstr "Mostra automàticament la finestra de registre després de la simulació"
+
+#: ../data/dialogs/settings.glade2.h:9
+msgid "Compress saved files"
+msgstr "Compacta els fitxers desats"
+
+#: ../data/dialogs/settings.glade2.h:10
+msgid "Grid size[px] "
+msgstr "Mida de la quadrícula [px] "
+
+#: ../data/dialogs/settings.glade2.h:11
+msgid "Library"
+msgstr "Biblioteca"
+
+#: ../data/dialogs/settings.glade2.h:12
+msgid "Model"
+msgstr "Model"
+
+#: ../data/dialogs/settings.glade2.h:13
+msgid "Paths"
+msgstr "Camins"
+
+#: ../data/dialogs/settings.glade2.h:14
+msgid "Preferences"
+msgstr "Preferències"
+
+# FIXME: typo
+#: ../data/dialogs/settings.glade2.h:15
+msgid "Realtime update of selection (slow)"
+msgstr "Actualització en temps real de la selecció (lent)"
+
+#: ../data/dialogs/settings.glade2.h:16
+msgid "Remove"
+msgstr "Elimina"
+
+#: ../data/dialogs/settings.glade2.h:17
+#, fuzzy
+msgid "Select A File"
+msgstr "_Selecciona-ho tot"
+
+#: ../data/dialogs/settings.glade2.h:18
+msgid "Show the splash screen at application startup"
+msgstr "Mostra la pantalla de benvinguda quan s'inicia l'aplicació"
+
+#: ../data/dialogs/settings.glade2.h:19
+msgid "TODO : Add FINDPATH for Engines"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:20
+msgid "User Interface"
+msgstr "Interfície d'usuari"
+
+#: ../data/dialogs/sim-settings.glade2.h:1
+msgid "<b>AC</b>"
+msgstr "<b>AC</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:2
+msgid "<b>DC Sweep</b>"
+msgstr "<b>Escombrat DC</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:3
+msgid "<b>Fourier</b>"
+msgstr "<b>Fourier</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:4
+msgid "<b>Transient</b>"
+msgstr "<b>Transitòria</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:5
+msgid "Add new options"
+msgstr "Afegeix noves opcions"
+
+#: ../data/dialogs/sim-settings.glade2.h:6
+msgid "Add to list"
+msgstr "Afegeix a la llista"
+
+#: ../data/dialogs/sim-settings.glade2.h:7
+msgid "Analysis Options"
+msgstr "Opcions d'anàlisi"
+
+#: ../data/dialogs/sim-settings.glade2.h:8
+msgid "Analysis Parameters"
+msgstr "Paràmetres de l'anàlisi"
+
+#: ../data/dialogs/sim-settings.glade2.h:9
+msgid "DEC"
+msgstr "DEC"
+
+#: ../data/dialogs/sim-settings.glade2.h:10
+msgid "Frequency"
+msgstr "Frequència"
+
+#: ../data/dialogs/sim-settings.glade2.h:11
+msgid "LIN"
+msgstr "LIN"
+
+#: ../data/dialogs/sim-settings.glade2.h:12
+msgid "List of outputs"
+msgstr "Llista de sortides"
+
+#: ../data/dialogs/sim-settings.glade2.h:13
+msgid "OCT"
+msgstr "OCT"
+
+#: ../data/dialogs/sim-settings.glade2.h:14
+msgid "Points"
+msgstr "Punts"
+
+#: ../data/dialogs/sim-settings.glade2.h:15
+msgid "Simulation Settings"
+msgstr "Paràmetres de la simulació"
+
+#: ../data/dialogs/sim-settings.glade2.h:16
+msgid "Source"
+msgstr "Font"
+
+#: ../data/dialogs/sim-settings.glade2.h:17
+msgid "Start"
+msgstr "Iniciar"
+
+#: ../data/dialogs/sim-settings.glade2.h:18
+msgid "Step"
+msgstr "Pas"
+
+#: ../data/dialogs/sim-settings.glade2.h:19
+msgid "Stop"
+msgstr "Atura"
+
+#: ../data/dialogs/sim-settings.glade2.h:20
+msgid "Type"
+msgstr "Tipus"
+
+#: ../data/dialogs/sim-settings.glade2.h:21
+msgid "Use Initial Conditions"
+msgstr "Utilitza les condicions inicials"
+
+#: ../data/dialogs/simulation.glade2.h:1
+#, fuzzy
+msgid "Progress: None"
+msgstr "Progrés:"
+
+#: ../data/dialogs/simulation.glade2.h:2
+msgid "Simulation"
+msgstr "Simulació"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:2
+msgid "<b>Text</b>"
+msgstr "<b>Text</b>"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:3
+msgid "Text Properties"
+msgstr "Propietats del text"
+
+#: ../data/dialogs/view-netlist.glade2.h:1
+msgid "Netlist View"
+msgstr "Vista de llista d'interconnexions"
+
+#: ../data/dialogs/view-netlist.glade2.h:2 ../src/schematic-view-ui.h:161
+msgid "_Simulate"
+msgstr "_Simula"
+
+#: ../src/sheet/part-item.c:147
+msgid "Edit the part's properties"
+msgstr "Edita les propietats del component"
+
+#: ../src/sheet/part-item.c:616 ../src/sheet/part-item.c:765
+#: ../src/sheet/textbox-item.c:679 ../src/sim-settings.c:775
+#: ../src/settings.c:139 ../src/schematic-view.c:251
+#: ../src/schematic-view.c:317 ../src/schematic-view.c:2431 ../src/plot.c:434
+#: ../src/plot.c:689 ../src/part-browser.c:496 ../src/netlist-editor.c:309
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this."
+msgstr ""
+"No s'ha pogut trobar el fitxer %s. Potser hauríeu de reinstal·lar l'Oregano "
+"per arreglar-ho."
+
+#: ../src/sheet/part-item.c:618 ../src/sheet/part-item.c:626
+#: ../src/sheet/part-item.c:767 ../src/sheet/part-item.c:775
+msgid "Could not create part properties dialog."
+msgstr "No s'ha pogut crear el diàleg de propietats del component."
+
+#: ../src/sheet/sheet-item.c:307 ../src/schematic-view-ui.h:288
+msgid "Copy"
+msgstr "Copia"
+
+#: ../src/sheet/sheet-item.c:307
+msgid "Copy the object to the clipboard"
+msgstr "Copia l'objecte al porta-retalls"
+
+#: ../src/sheet/sheet-item.c:310 ../src/schematic-view-ui.h:285
+msgid "Cut"
+msgstr "Retalla"
+
+#: ../src/sheet/sheet-item.c:310
+msgid "Cut the object to the clipboard"
+msgstr "Retalla l'objecte al porta-retalls"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete"
+msgstr "Suprimeix"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete the object"
+msgstr "Suprimeix l'objecte"
+
+#: ../src/sheet/sheet-item.c:319
+msgid "Rotate"
+msgstr "Capgira"
+
+#: ../src/sheet/sheet-item.c:320
+msgid "Rotate the selected objects 90 degrees clockwise"
+msgstr "Capgira 90 graus cap a la dreta l'objecte seleccionat"
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit..."
+msgstr "Edita..."
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit the text"
+msgstr "Edita el text"
+
+#: ../src/sheet/textbox-item.c:596
+msgid "Label"
+msgstr "Etiqueta"
+
+#: ../src/sheet/textbox-item.c:681 ../src/sheet/textbox-item.c:690
+msgid "Could not create textbox properties dialog"
+msgstr "No s'ha pogut crear el quadre de diàleg de les propietats del text."
+
+#: ../src/simulation.c:102 ../src/simulation.c:109 ../src/simulation.c:115
+msgid "Could not create simulation dialog"
+msgstr "No es pot crear el diàleg de la simulació"
+
+#: ../src/simulation.c:150
+#, fuzzy, c-format
+msgid "Progress: <b>%s</b>"
+msgstr "Progrés:"
+
+#: ../src/simulation.c:201
+msgid ""
+"<span weight=\"bold\" size=\"large\">The simulation was aborted due to an "
+"error.</span>\n"
+"\n"
+"Would you like to view the error log?"
+msgstr ""
+"<span weight=\"bold\" size=\"large\">S'ha avortat la simulació a causa d'un "
+"error.</span>\n"
+"Voleu veure el registre d'errors?"
+
+#: ../src/simulation.c:211
+msgid "The simulation was aborted due to an error"
+msgstr "S'ha avortat la simulació a causa d'un error"
+
+#: ../src/sim-settings.c:229
+msgid "Add new option"
+msgstr "Afegeix una nova opció"
+
+#: ../src/sim-settings.c:777 ../src/sim-settings.c:784
+#: ../src/sim-settings.c:790
+msgid "Could not create simulation settings dialog"
+msgstr "No s'ha pogut crear el diàleg dels paràmetres de la simulació."
+
+#: ../src/sim-settings.c:814
+msgid "Option"
+msgstr "Opció"
+
+#: ../src/sim-settings.c:816
+msgid "Value"
+msgstr "Valor"
+
+#: ../src/settings.c:141 ../src/settings.c:148 ../src/settings.c:154
+msgid "Could not create settings dialog"
+msgstr "No es pot crear el diàleg de preferències"
+
+#: ../src/settings.c:215
+msgid "Engine executable not found"
+msgstr ""
+
+#: ../src/settings.c:216
+msgid "The engine is unable to locate the external program."
+msgstr ""
+
+#: ../src/schematic-view.c:254
+msgid "Could not create properties dialog"
+msgstr "No s'ha pogut crear el diàleg de propietats"
+
+#: ../src/schematic-view.c:320
+msgid "Could not create the page properties dialog"
+msgstr "No s'ha pogut crear el diàleg de propietats de pàgina"
+
+#: ../src/schematic-view.c:383
+msgid "Could not load file"
+msgstr "No s'ha pogut carregar el fitxer"
+
+#: ../src/schematic-view.c:410 ../src/schematic-view.c:1304
+#: ../src/schematic-view.c:1312
+msgid "Untitled.oregano"
+msgstr "Sensetitol.oregano"
+
+#: ../src/schematic-view.c:415
+msgid "Could not save schematic file"
+msgstr "No s'ha pogut desar el fitxer d'esquemàtic."
+
+#: ../src/schematic-view.c:765 ../src/netlist-editor.c:225
+#: ../src/netlist-editor.c:436
+msgid "Could not create a netlist"
+msgstr "No s'ha pogut crear la llista d'interconnexions"
+
+#: ../src/schematic-view.c:768 ../src/netlist-editor.c:229
+#: ../src/netlist-editor.c:439
+msgid "An unexpected error has occurred"
+msgstr "S'ha produït un error inesperat"
+
+#: ../src/schematic-view.c:1313
+msgid "Untitled.netlist"
+msgstr "Sensetitol.netlist"
+
+#: ../src/schematic-view.c:1504
+#, fuzzy, c-format
+msgid ""
+"<span weight=\"bold\" size=\"large\">Save changes to schematic %s before "
+"closing?</span>\n"
+"\n"
+"If you don't save, all changes since you last saved will be permanently lost."
+msgstr ""
+"<span weight=\"bold\" size=\"large\">L'esquemàtic %s té canvis sense desar</"
+"span>\n"
+"\n"
+"Voleu desar-los?"
+
+#: ../src/schematic-view.c:1516
+msgid "Close _without Saving"
+msgstr ""
+
+#: ../src/schematic-view.c:2434 ../src/schematic-view.c:2445
+msgid "Could not create the log window"
+msgstr "No s'ha pogut crear la finestra del registre"
+
+#: ../src/schematic-view-ui.h:38
+msgid "_New"
+msgstr "_Nou"
+
+#: ../src/schematic-view-ui.h:38 ../src/schematic-view-ui.h:264
+msgid "Create a new schematic"
+msgstr "Crea un nou esquemàtic"
+
+#: ../src/schematic-view-ui.h:47
+msgid "Page Properties"
+msgstr "Propietats de la pàgina"
+
+#: ../src/schematic-view-ui.h:48
+msgid "Set print properties"
+msgstr "Estableix les propietats de la impressió"
+
+#: ../src/schematic-view-ui.h:56 ../src/print.c:367 ../src/plot.c:150
+#: ../src/netlist-editor.c:193
+msgid "Print Preview"
+msgstr "Previsualització de la impressió"
+
+#: ../src/schematic-view-ui.h:57
+msgid "Preview the schematic before printing"
+msgstr "Previsualitza l'esquemàtic abans d'imprimir"
+
+#: ../src/schematic-view-ui.h:65
+msgid "Schematic _Properties..."
+msgstr "_Propietats de l'esquemàtic..."
+
+#: ../src/schematic-view-ui.h:66
+msgid "Modify the schematic's properties"
+msgstr "Modifica les propietats de l'esquemàtic"
+
+#: ../src/schematic-view-ui.h:95
+msgid "_Delete"
+msgstr "_Suprimeix"
+
+#: ../src/schematic-view-ui.h:96
+msgid "Delete the selection"
+msgstr "Suprimeix la selecció"
+
+#: ../src/schematic-view-ui.h:102
+msgid "_Rotate"
+msgstr "Cap_gira"
+
+#: ../src/schematic-view-ui.h:103
+msgid "Rotate the selection clockwise"
+msgstr "Capgira en el sentit de les manetes del rellotge"
+
+#: ../src/schematic-view-ui.h:109
+#, fuzzy
+msgid "Flip _horizontally"
+msgstr "Centra horitzontalment"
+
+#: ../src/schematic-view-ui.h:110
+#, fuzzy
+msgid "Flip the selection horizontally"
+msgstr "Copia la selecció al porta-retalls"
+
+#: ../src/schematic-view-ui.h:116
+#, fuzzy
+msgid "Flip _vertically"
+msgstr "Centra verticalment"
+
+#: ../src/schematic-view-ui.h:117
+#, fuzzy
+msgid "Flip the selection vertically"
+msgstr "Suprimeix la selecció"
+
+#: ../src/schematic-view-ui.h:124
+#, fuzzy
+msgid "Select _all"
+msgstr "_Deselecciona-ho tot"
+
+#: ../src/schematic-view-ui.h:125
+msgid "Select all objects on the sheet"
+msgstr "Selecciona tots els objectes de la fulla"
+
+#: ../src/schematic-view-ui.h:131
+#, fuzzy
+msgid "Deselect a_ll"
+msgstr "_Deselecciona-ho tot"
+
+#: ../src/schematic-view-ui.h:132
+msgid "Deselect the selected objects"
+msgstr "Deselecciona els objectes seleccionats"
+
+#: ../src/schematic-view-ui.h:140
+#, fuzzy
+msgid "_Object Properties..."
+msgstr "_Propietats de l'objecte..."
+
+#: ../src/schematic-view-ui.h:141
+msgid "Modify the object's properties"
+msgstr "Modifica les propietats de l'objecte"
+
+#: ../src/schematic-view-ui.h:146
+msgid "Simulation S_ettings..."
+msgstr "_Paràmetres de la simulació"
+
+#: ../src/schematic-view-ui.h:147
+msgid "Edit the simulation settings"
+msgstr "Edita els paràmetres de la simulació"
+
+#: ../src/schematic-view-ui.h:162
+msgid "Run a simulation"
+msgstr "Llança una simulació"
+
+#: ../src/schematic-view-ui.h:169
+msgid "_Generate netlist"
+msgstr "_Genera la llista d'interconnexions"
+
+#: ../src/schematic-view-ui.h:170
+msgid "Generate a netlist"
+msgstr "Genera una llista d'interconnexions"
+
+#: ../src/schematic-view-ui.h:177
+msgid "50%"
+msgstr "50%"
+
+#: ../src/schematic-view-ui.h:178
+msgid "Set the zoom factor to 50%"
+msgstr "Estableix el factor de zoom al 50%"
+
+#: ../src/schematic-view-ui.h:179
+msgid "75%"
+msgstr "75%"
+
+#: ../src/schematic-view-ui.h:180
+msgid "Set the zoom factor to 75%"
+msgstr "Estableix el factor de zoom al 75%"
+
+#. GNOMEUIINFO_ITEM_NONE(N_("50%"),
+#. N_("Set the zoom factor to 50%"), plot_zoom_50_cmd),
+#. GNOMEUIINFO_ITEM_NONE(N_("75%"),
+#. N_("Set the zoom factor to 75%"), plot_zoom_75_cmd),
+#: ../src/schematic-view-ui.h:181 ../src/plot.c:167
+msgid "100%"
+msgstr "100%"
+
+#: ../src/schematic-view-ui.h:182 ../src/plot.c:168
+msgid "Set the zoom factor to 100%"
+msgstr "Estableix el factor de zoom al 100%"
+
+#: ../src/schematic-view-ui.h:184
+msgid "125%"
+msgstr "125%"
+
+#: ../src/schematic-view-ui.h:185
+msgid "Set the zoom factor to 125%"
+msgstr "Estableix el factor de zoom al 125%"
+
+#: ../src/schematic-view-ui.h:186
+msgid "150%"
+msgstr "150%"
+
+#: ../src/schematic-view-ui.h:187
+msgid "Set the zoom factor to 150%"
+msgstr "Estableix el factor de zoom al 150%"
+
+#: ../src/schematic-view-ui.h:196
+msgid "Zoom"
+msgstr "Zoom"
+
+#: ../src/schematic-view-ui.h:202
+msgid "_Log"
+msgstr "_Registre"
+
+#: ../src/schematic-view-ui.h:202
+msgid "View the latest simulation log"
+msgstr "Mostra el registre de l'última simulació"
+
+#: ../src/schematic-view-ui.h:205
+#, fuzzy
+msgid "_Node labels"
+msgstr "_Mostra les etiquetes del nus"
+
+#: ../src/schematic-view-ui.h:205
+msgid "Show or hide node labels"
+msgstr "Mostra o amaga les etiquetes dels nusos"
+
+#: ../src/schematic-view-ui.h:207
+#, fuzzy
+msgid "N_etlist"
+msgstr "Fitxer de llista de connexions"
+
+#: ../src/schematic-view-ui.h:208
+#, fuzzy
+msgid "View the circuit netlist"
+msgstr "Visualitza una llista d'interconnexions"
+
+#: ../src/schematic-view-ui.h:240
+msgid "_Contents"
+msgstr "_Continguts"
+
+#: ../src/schematic-view-ui.h:240
+msgid "Show program help"
+msgstr "Mostra l'ajuda del programa"
+
+#: ../src/schematic-view-ui.h:254
+msgid "_Tools"
+msgstr "E_ines"
+
+#: ../src/schematic-view-ui.h:264
+msgid "New"
+msgstr "Nou"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open"
+msgstr "Obre"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open an existing schematic"
+msgstr "Obre un esquemàtic existent"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save"
+msgstr "Desa"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save the schematic"
+msgstr "Desa l'esquemàtic"
+
+#: ../src/schematic-view-ui.h:285
+msgid "Cut the selection to the clipboard"
+msgstr "Retalla la selecció al porta-retalls"
+
+#: ../src/schematic-view-ui.h:288
+msgid "Copy the selection to the clipboard"
+msgstr "Copia la selecció al porta-retalls"
+
+#: ../src/schematic-view-ui.h:291 ../src/schematic-view-ui.h:404
+msgid "Paste"
+msgstr "Enganxa"
+
+#: ../src/schematic-view-ui.h:291
+msgid "Paste the clipboard"
+msgstr "Enganxa el contingut del porta-retalls"
+
+#: ../src/schematic-view-ui.h:301
+msgid "Arrow"
+msgstr "Punter"
+
+#: ../src/schematic-view-ui.h:302
+msgid "Select, move and modify objects"
+msgstr "Selecciona, mou i modifica objectes"
+
+#: ../src/schematic-view-ui.h:307
+msgid "Text"
+msgstr "Text"
+
+#: ../src/schematic-view-ui.h:308
+msgid "Put text on the schematic"
+msgstr "Posa text en l'esquemàtic"
+
+#: ../src/schematic-view-ui.h:313
+msgid "Wires"
+msgstr "Connexions"
+
+#: ../src/schematic-view-ui.h:314
+msgid "Draw wires"
+msgstr "Dibuixa les connexions"
+
+#: ../src/schematic-view-ui.h:330
+msgid "Add Voltage Clamp"
+msgstr "Afegeix una sonda de tensió"
+
+#: ../src/schematic-view-ui.h:331
+msgid "Add a Voltage test clamp"
+msgstr "Afegeix una sonda de mesura de tensió"
+
+#: ../src/schematic-view-ui.h:336
+msgid "Simulate"
+msgstr "Simula"
+
+#: ../src/schematic-view-ui.h:337
+msgid "Run a simulation for the current schematic"
+msgstr "Llança la simulació per a l'esquemàtic actual"
+
+#: ../src/schematic-view-ui.h:342 ../src/schematic-view-ui.h:343
+msgid "Simulation settings"
+msgstr "Paràmetres de la simulació"
+
+#: ../src/schematic-view-ui.h:361
+msgid "Show or hide the part browser"
+msgstr "Mostra o amaga el navegador de components"
+
+#: ../src/schematic-view-ui.h:366
+msgid "Grid"
+msgstr "Quadrícula"
+
+#: ../src/schematic-view-ui.h:367
+msgid "Turn on/off the grid"
+msgstr "Activa/desactiva la quadrícula"
+
+#: ../src/schematic-view-ui.h:372 ../src/schematic-view-ui.h:373
+msgid "Zoom in"
+msgstr "Apropa"
+
+#: ../src/schematic-view-ui.h:378 ../src/schematic-view-ui.h:379
+msgid "Zoom out"
+msgstr "Allunya"
+
+#: ../src/schematic-view-ui.h:405
+msgid "Paste the contents of the clipboard to the sheet"
+msgstr "Enganxa els continguts del porta-retalls en la fulla"
+
+#: ../src/print.c:297
+msgid "Print"
+msgstr "Imprimeix"
+
+#: ../src/print.c:304
+msgid "Pages"
+msgstr "Pàgines"
+
+#: ../src/print.c:339
+msgid "Can't get paper info! .. getting default!"
+msgstr ""
+"No s'ha pogut obtenir informació sobre el paper, s'està prenent el valor per "
+"defecte."
+
+#: ../src/print.c:353
+msgid "Could not create font for printing."
+msgstr "No s'ha pogut crear el tipus de lletra per a imprimir."
+
+#: ../src/print.c:372
+msgid "Printing failed."
+msgstr "Ha fallat la impressió."
+
+#: ../src/plot.c:61 ../src/plot.c:62
+msgid "Sans 10"
+msgstr "Sans 10"
+
+#: ../src/plot.c:63
+msgid "Sans 8"
+msgstr "Sans 8"
+
+#: ../src/plot.c:151
+msgid "Preview the plot before printing"
+msgstr "Previsualitza el gràfic abans d'imprimir"
+
+#: ../src/plot.c:153
+msgid "Export plot"
+msgstr "Exporta el gràfic"
+
+#: ../src/plot.c:154
+msgid "Show the export menu"
+msgstr "Mostra el menú d'exportar"
+
+#: ../src/plot.c:155
+msgid "Add Function"
+msgstr "Afegeix Funció"
+
+#: ../src/plot.c:156
+msgid "Add new function to the graph"
+msgstr "Afegeix una nova funció al gràfic"
+
+#: ../src/plot.c:180
+msgid "_Preferences..."
+msgstr "_Preferències..."
+
+#: ../src/plot.c:182
+msgid "Show crosshairs"
+msgstr "Mostra els cursors"
+
+#: ../src/plot.c:183
+msgid "_Zoom"
+msgstr "_Zoom"
+
+#: ../src/plot.c:190
+msgid "Schematic Plot"
+msgstr "Gràfic de l'esquemàtic"
+
+#: ../src/plot.c:196
+msgid "_File"
+msgstr "_Fitxer"
+
+#: ../src/plot.c:197
+msgid "_Plot"
+msgstr "_Dibuixa"
+
+#. Simulation failed?
+#: ../src/plot.c:330
+msgid "The simulation produced no data!!\n"
+msgstr "La simulació no ha produït cap dada!!\n"
+
+#: ../src/plot.c:340 ../src/plot.c:574
+#, c-format
+msgid "Plot - %s"
+msgstr "Gràfic - %s"
+
+#: ../src/plot.c:349
+msgid "Nodes"
+msgstr "Nodes"
+
+#: ../src/plot.c:352 ../src/plot.c:636
+msgid "Functions"
+msgstr "Funcions"
+
+#: ../src/plot.c:424
+msgid "Oregano - Plot"
+msgstr "Oregano - Gràfic"
+
+#: ../src/plot.c:436 ../src/plot.c:443
+msgid "Could not create plot window."
+msgstr "No s'ha pogut crear la finestra del gràfic."
+
+#: ../src/plot.c:659
+msgid "TRANSFER"
+msgstr "TRANSFERÈNCIA"
+
+#: ../src/plot.c:691 ../src/plot.c:698
+msgid "Could not create plot export window."
+msgstr "No s'ha pogut crear la finestra d'exportació del gràfic."
+
+#. if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (export_png)))
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PNG;
+#. else
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PS;
+#: ../src/plot.c:719
+msgid "Save PNG"
+msgstr "Desa un PNG"
+
+#: ../src/part-browser.c:135 ../src/part-browser.c:614
+msgid ""
+"Gtk version 2.2 does not support GtkTreeModelFilter...\n"
+"Filtering disable!"
+msgstr ""
+"La versió 2.2 de GTK no té implementat GtkTreeModelFilter...\n"
+"S'ha inhabilitat el filtre!"
+
+#: ../src/part-browser.c:187 ../src/part-browser.c:401
+msgid "Unable to load required part"
+msgstr ""
+
+#: ../src/part-browser.c:499 ../src/part-browser.c:507
+msgid "Could not create part browser"
+msgstr "No puc crear un navegador de components"
+
+#: ../src/oregano-config.c:123
+#, c-format
+msgid "Loading %s ..."
+msgstr "S'està carregant %s..."
+
+#: ../src/oregano-config.c:164
+#, c-format
+msgid "Could not read the parts library: %s "
+msgstr "No s'ha pogut llegir la biblioteca de components: %s"
+
+#: ../src/oregano-config.c:166
+msgid ""
+"The file is probably corrupt. Please reinstall the parts\n"
+"library or Oregano and try again."
+msgstr ""
+"El fitxer està probablement corrupte. Si us plau, reinstal·leu\n"
+"la biblioteca de components o l'Oregano i intenteu-ho de nou."
+
+#: ../src/engines/netlist.c:436
+msgid "No ground node. Aborting.\n"
+msgstr "Cap nus a terra. Abortant.\n"
+
+#: ../src/engines/netlist.c:441
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have a ground node and try again."
+msgstr ""
+
+#: ../src/engines/netlist.c:450
+msgid "No test clamps found. Aborting.\n"
+msgstr ""
+
+#: ../src/engines/netlist.c:455
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have one o more test clamps and try again."
+msgstr ""
+
+#: ../src/engines/gnucap.c:299
+#, fuzzy
+msgid "### Too few or none analysis found ###\n"
+msgstr ""
+"\n"
+"\n"
+"### S'han trobat massa poques o cap anàlisi ###\n"
+"\n"
+
+#: ../src/engines/gnucap.c:366
+msgid "Unable to execute GnuCap."
+msgstr ""
+
+#: ../src/engines/gnucap.c:383
+#, fuzzy
+msgid "None"
+msgstr "Nodes"
+
+#: ../src/engines/gnucap.c:586
+msgid "time"
+msgstr ""
+
+# FIXME: typo
+#: ../src/engines/gnucap.c:591 ../src/engines/gnucap.c:601
+#, fuzzy
+msgid "voltage"
+msgstr "Tensió"
+
+#: ../src/engines/gnucap.c:596
+#, fuzzy
+msgid "frequency"
+msgstr "Frequència"
+
+#: ../src/engines/gnucap.c:645
+#, fuzzy
+msgid "Unknown analysis"
+msgstr "Anàlisi desconeguda"
+
+#: ../src/engines/gnucap.c:693
+#, fuzzy
+msgid "abort"
+msgstr "Iniciar"
+
+#: ../src/engines/engine.c:32
+msgid "Operating Point"
+msgstr "Punt de Treball"
+
+#: ../src/engines/engine.c:33
+msgid "Transient Analysis"
+msgstr "Anàlisi transitòria"
+
+#: ../src/engines/engine.c:34
+msgid "DC transfer characteristic"
+msgstr "Característica de transferència en DC"
+
+#: ../src/engines/engine.c:35
+msgid "AC Analysis"
+msgstr "Anàlisi en AC"
+
+#: ../src/engines/engine.c:36
+msgid "Transfer Function"
+msgstr "Funció de transferència"
+
+#: ../src/engines/engine.c:37
+msgid "Distortion Analysis"
+msgstr "Anàlisi de distorsió"
+
+#: ../src/engines/engine.c:38
+msgid "Noise Analysis"
+msgstr "Anàlisi de soroll"
+
+#: ../src/engines/engine.c:39
+msgid "Pole-Zero Analysis"
+msgstr "Anàlisi de Pols-Zeros"
+
+#: ../src/engines/engine.c:40
+msgid "Sensitivity Analysis"
+msgstr "Anàlisi de sensibilitat"
+
+#: ../src/engines/engine.c:41
+msgid "Unknown Analysis"
+msgstr "Anàlisi desconeguda"
+
+#: ../src/netlist-editor.c:172
+#, c-format
+msgid "Netlist for %s"
+msgstr "Llista d'interconnexions per a %s"
+
+#: ../src/netlist-editor.c:173
+#, c-format
+msgid "Author : %s"
+msgstr "Autor: %s"
+
+#: ../src/netlist-editor.c:186
+msgid "Page %N of %Q"
+msgstr "Pàgina %N de %Q"
+
+#: ../src/netlist-editor.c:238 ../src/netlist-editor.c:274
+#, c-format
+msgid "The file %s could not be saved"
+msgstr "El fitxer %s no s'ha pogut desar"
+
+#: ../src/netlist-editor.c:239 ../src/netlist-editor.c:275
+msgid "Could not save temporary netlist file"
+msgstr "No s'ha pogut desar el fitxer temporal de la llista d'interconnexions"
+
+#: ../src/netlist-editor.c:311
+msgid "Could not create the netlist dialog"
+msgstr "No s'ha pogut crear el diàleg de la llista d'interconnexions"
+
+#. gettext support
+#: ../src/netlist-editor.c:390
+#, c-format
+msgid "The file %s could not be found."
+msgstr "No s'ha pogut trobar el fitxer %s."
+
+#: ../src/netlist-editor.c:391
+msgid "Could not find the required file"
+msgstr "No s'ha trobat el fitxer requerit"
+
+#: ../src/main.c:107
+msgid "Enables some debugging functions"
+msgstr "Activa algunes funcions de depurat"
+
+#: ../src/main.c:107
+msgid "LEVEL"
+msgstr "NIVELL"
+
+#: ../src/main.c:132
+msgid ""
+"You seem to be running Oregano without\n"
+"having it installed properly on your system.\n"
+"\n"
+"Please install Oregano and try again."
+msgstr ""
+"Sembla que esteu executant Oregano sense\n"
+"que estiga instal·lat correctament al vostre sistema.\n"
+"\n"
+"Si us plau, instal·leu Oregano i torneu-ho a provar."
+
+#: ../src/main.c:155
+msgid ""
+"Could not find a parts library.\n"
+"\n"
+"This is probably due to a faulty installation\n"
+"of Oregano. Please check your installation."
+msgstr ""
+"No es pot trobar una biblioteca de components.\n"
+"\n"
+"Açò probablement és degut a una mala instal·lació\n"
+"d'Oregano. Si us plau, comproveu la vostra instal·lació."
+
+#: ../src/main.c:212
+msgid "Welcome to Oregano"
+msgstr "Benvingut a Oregano"
+
+#: ../src/load-schematic.c:261
+msgid "Bad file format."
+msgstr "Format de fitxer erroni."
+
+#: ../src/load-schematic.c:271
+msgid "Unknown parser error."
+msgstr "Error desconegut de l'analitzador."
+
+#: ../src/load-library.c:149
+#, c-format
+msgid "Could not find the requested symbol: %s\n"
+msgstr "No s'ha trobat el símbol sol·licitat: %s\n"
+
+#: ../src/load-library.c:165
+#, c-format
+msgid "Could not find the requested part: %s\n"
+msgstr "No s'ha trobat el component sol·licitat: %s\n"
+
+#: ../src/file.c:50 ../src/file.c:90
+msgid "Oregano Files"
+msgstr "Fitxers d'Oregano"
+
+#: ../src/file.c:52 ../src/file.c:92
+msgid "All Files"
+msgstr "Tots els fitxers"
+
+#: ../src/file.c:55
+msgid "Open File"
+msgstr "Obre un fitxer"
+
+#: ../src/file.c:95
+msgid "Save File"
+msgstr "Desa el fitxer"
+
+#: ../src/file.c:145
+msgid "Netlist File"
+msgstr "Fitxer de llista de connexions"
+
+#: ../src/file.c:221
+msgid "Open file"
+msgstr "Obre un fitxer"
+
+#: ../src/file.c:271
+msgid "Save schematic as"
+msgstr "Anomena i desa l'esquemàtic"
+
+#: ../src/file.c:336
+msgid "Netlist filename"
+msgstr "Nom del fitxer de la llista de connexions"
+
+#: ../src/dialogs.c:126
+#, fuzzy
+msgid ""
+"(c) 2003-2006 LUGFi\n"
+"(c) 1999-2001 Richard Hult"
+msgstr ""
+"(c) 2003-2005 LUGFi\n"
+"(c) 1999-2001 Richard Hult"
+
+#: ../src/dialogs.c:141
+msgid "Schematic capture and circuit simulation.\n"
+msgstr "Captura d'esquemàtics i simulació de circuits.\n"
+
+#: ../src/model/schematic.c:584
+#, c-format
+msgid "File %s does not exists."
+msgstr "El fitxer %s no existeix."
+
+#: ../src/model/schematic.c:592 ../src/model/schematic.c:630
+#, c-format
+msgid "Unknown file format for %s."
+msgstr "El format del fitxer %s és desconegut."
+
+#: ../src/model/schematic.c:611
+msgid "Load fails!."
+msgstr "Ha fallat la càrrega!."
+
+#: ../src/plot-add-function.c:48
+#, fuzzy, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this"
+msgstr ""
+"No s'ha pogut trobar el fitxer %s. Potser hauríeu de reinstal·lar l'Oregano "
+"per arreglar-ho."
+
+#: ../src/plot-add-function.c:50 ../src/plot-add-function.c:57
+#, fuzzy
+msgid "Could not create plot window"
+msgstr "No s'ha pogut crear la finestra del gràfic."
+
+#~ msgid "_View netlist"
+#~ msgstr "_Visualitza la llista d'interconnexions"
+
+#~ msgid "View plot"
+#~ msgstr "Visualitza el gràfic"
+
+#~ msgid "View plot "
+#~ msgstr "Visualitza el gràfic "
+
+#~ msgid "Problem in transient analysis"
+#~ msgstr "Hi ha hagut un problema en l'anàlisi transitòria"
+
+#~ msgid "Start time must be less than stop time."
+#~ msgstr "El temps inicial ha de ser menor que el final"
+
+#~ msgid "Could not find the simulation executable"
+#~ msgstr "No s'ha pogut trobar l'executable del simulador"
+
+#~ msgid "This probably means that you have not configured Oregano properly."
+#~ msgstr ""
+#~ "Açò probablement vol dir que no heu configurat l'Oregano correctament."
+
+#~ msgid "You have not entered a simulation executable"
+#~ msgstr "No heu introduït cap executable del simulador."
+
+# FIXME: typo
+#~ msgid ""
+#~ "Please choose Settings and specify which program to use for simulations."
+#~ msgstr ""
+#~ "Si us plau, aneu als Paràmetres i especifiqueu quin programa cal usar per "
+#~ "a les simulacions."
+
+#~ msgid "Name: "
+#~ msgstr "Nom: "
+
+#~ msgid "Value: "
+#~ msgstr "Valor: "
+
+#~ msgid "GnuCap"
+#~ msgstr "GnuCap"
+
+#~ msgid "NgSpice"
+#~ msgstr "NgSpice"
+
+#~ msgid "Parser"
+#~ msgstr "Analitzador"
+
+#~ msgid "<b>Format</b>"
+#~ msgstr "<b>Format</b>"
+
+#~ msgid "<b>Size</b>"
+#~ msgstr "<b>Mida</b>"
+
+#~ msgid "Height : "
+#~ msgstr "Alçada: "
+
+#~ msgid "Plot Export"
+#~ msgstr "Exportació de gràfics"
+
+#~ msgid "Portable Network Graphics (png)"
+#~ msgstr "Portable Network Graphics (png)"
+
+#~ msgid "Postscript (ps)"
+#~ msgstr "Postscript (ps)"
+
+#~ msgid "Width : "
+#~ msgstr "Amplada: "
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 0000000..845ae10
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,1307 @@
+# Deutsche Uebersetzung von Oregano
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: oregano 0.3\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-11 02:36-0300\n"
+"PO-Revision-Date: 2005-08-30 17:45-0300\n"
+"Last-Translator: Klaus Storz <klaus.storz@ono.com> \n"
+"Language-Team: German\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:1
+msgid "<b>AC Analysis Options</b>"
+msgstr "<b>AC Analyse Optionen</b>"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:2
+msgid "<b>Type</b>"
+msgstr "<b>Typ</b>"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:3
+msgid "Current"
+msgstr "Strom"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:4
+msgid "Edit Clamp properties"
+msgstr "Abgriff-Eigenschaften einstellen"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:5
+msgid "Imaginary part"
+msgstr "Imaginaeres Bauteil"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:6
+msgid "Magnitude"
+msgstr "Amplitude"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:7
+msgid "Phase"
+msgstr "Phase"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:8
+msgid "Real part"
+msgstr "Realer Anteil"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:9
+msgid "Use decibel scale"
+msgstr "Dezibel Skala benutzen"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:10
+msgid "Voltage"
+msgstr "Spannung"
+
+#: ../data/dialogs/log-window.glade2.h:1
+msgid "Clear"
+msgstr "Loeschen"
+
+#: ../data/dialogs/log-window.glade2.h:2
+msgid "Oregano Log Window"
+msgstr "Oregano-LOG Fenster"
+
+#: ../data/dialogs/page-properties.glade2.h:1
+msgid "<b>Alignment</b>"
+msgstr "<b>Alignment</b>"
+
+#: ../data/dialogs/page-properties.glade2.h:2
+msgid "Center Horizontally"
+msgstr "Horizontal zentrieren"
+
+#: ../data/dialogs/page-properties.glade2.h:3
+msgid "Center Vertically"
+msgstr "Vertikal zentrieren"
+
+#: ../data/dialogs/page-properties.glade2.h:4
+msgid "Fit to page"
+msgstr "Auf Seite anpassen"
+
+#: ../data/dialogs/page-properties.glade2.h:5
+msgid "Print Properties"
+msgstr "Druckeigenschaften"
+
+#: ../data/dialogs/part-browser.glade2.h:1
+msgid "<b>Preview</b>"
+msgstr "<b>Ansicht</b>"
+
+#: ../data/dialogs/part-browser.glade2.h:2
+msgid "Library:"
+msgstr "Bibliothek:"
+
+#: ../data/dialogs/part-browser.glade2.h:3 ../src/schematic-view-ui.h:360
+msgid "Parts"
+msgstr "Komponeten"
+
+#: ../data/dialogs/part-browser.glade2.h:4
+msgid "Place"
+msgstr "Einfuegen"
+
+#: ../data/dialogs/part-browser.glade2.h:5
+msgid "Press this button to place the selected part"
+msgstr "Druecken Sie diesen Knopf, um das ausgewaehlte Objekt einzufuegen"
+
+#: ../data/dialogs/part-browser.glade2.h:6
+msgid "Search:"
+msgstr "Suchen:"
+
+#: ../data/dialogs/part-browser.glade2.h:7
+msgid "Select which library to use"
+msgstr "Waehlen Sie die zu benutzende Bibliothek aus"
+
+#: ../data/dialogs/part-properties-dialog.glade2.h:1
+msgid "Part Properties"
+msgstr "Bauteileigenschaften"
+
+#: ../data/dialogs/plot-window.glade2.h:1
+msgid "<b>Plot</b>"
+msgstr "<b>Plot</b>"
+
+#: ../data/dialogs/plot-window.glade2.h:2
+msgid "<b>Variables</b>"
+msgstr "<b>Variablen</b>"
+
+#: ../data/dialogs/plot-window.glade2.h:3
+msgid "Plot"
+msgstr "Plot"
+
+#: ../data/dialogs/plot-window.glade2.h:4
+msgid "Region"
+msgstr ""
+
+#: ../data/dialogs/plot-window.glade2.h:5
+msgid "Shift"
+msgstr ""
+
+#: ../data/dialogs/properties.glade2.h:1
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:1
+msgid " "
+msgstr " "
+
+#: ../data/dialogs/properties.glade2.h:2
+msgid "<b>Comments</b>"
+msgstr "<b>Kommentare</b>"
+
+#: ../data/dialogs/properties.glade2.h:3
+msgid "Author:"
+msgstr "Autor:"
+
+#: ../data/dialogs/properties.glade2.h:4 ../src/sheet/part-item.c:147
+msgid "Properties"
+msgstr "Eigenschaften"
+
+#: ../data/dialogs/properties.glade2.h:5
+msgid "Title:"
+msgstr "Titel:"
+
+#: ../data/dialogs/settings.glade2.h:1
+msgid "\n"
+msgstr "\n"
+
+#: ../data/dialogs/settings.glade2.h:3
+msgid "<b>Data Paths</b>"
+msgstr "<b>Datenpfade</b>"
+
+#: ../data/dialogs/settings.glade2.h:4
+msgid "<b>Engine</b>"
+msgstr "<b>Engine</b>"
+
+#: ../data/dialogs/settings.glade2.h:5
+msgid "<b>Executable Path</b>"
+msgstr "<b>Programmpfad</b>"
+
+#: ../data/dialogs/settings.glade2.h:6
+msgid "<b>File Format</b>"
+msgstr "<b>Dateiformat</b>"
+
+#: ../data/dialogs/settings.glade2.h:7
+msgid "<b>User Interface</b>"
+msgstr "<b>Benutzerinterface</b>"
+
+#: ../data/dialogs/settings.glade2.h:8
+msgid "Automatically show log windows after simulation"
+msgstr "LOG-Fenster auutomatisch nach der Simulation anzeigen"
+
+#: ../data/dialogs/settings.glade2.h:9
+msgid "Compress saved files"
+msgstr "Gespeicherte Dateien komprimieren"
+
+#: ../data/dialogs/settings.glade2.h:10
+msgid "Grid size[px] "
+msgstr "Grid Groesse [px]: "
+
+#: ../data/dialogs/settings.glade2.h:11
+msgid "Library"
+msgstr "Bibliothek:"
+
+#: ../data/dialogs/settings.glade2.h:12
+msgid "Model"
+msgstr "Modell"
+
+#: ../data/dialogs/settings.glade2.h:13
+msgid "Paths"
+msgstr "Pfade"
+
+#: ../data/dialogs/settings.glade2.h:14
+msgid "Preferences"
+msgstr "Praeferenzen"
+
+#: ../data/dialogs/settings.glade2.h:15
+msgid "Realtime update of selection (slow)"
+msgstr "Auswahl in Echtzeit aktualisieren (langsam)"
+
+#: ../data/dialogs/settings.glade2.h:16
+msgid "Remove"
+msgstr "Entfernen"
+
+#: ../data/dialogs/settings.glade2.h:17
+#, fuzzy
+msgid "Select A File"
+msgstr "Alles _auswaehlen"
+
+#: ../data/dialogs/settings.glade2.h:18
+msgid "Show the splash screen at application startup"
+msgstr "Splash-Screen bei Programmstart anzeigen"
+
+#: ../data/dialogs/settings.glade2.h:19
+msgid "TODO : Add FINDPATH for Engines"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:20
+msgid "User Interface"
+msgstr "Benutzerinterface"
+
+#: ../data/dialogs/sim-settings.glade2.h:1
+msgid "<b>AC</b>"
+msgstr "<b>AC</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:2
+msgid "<b>DC Sweep</b>"
+msgstr "<b>DC Sweep</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:3
+msgid "<b>Fourier</b>"
+msgstr "<b>Fourier</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:4
+msgid "<b>Transient</b>"
+msgstr "<b>Transient</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:5
+msgid "Add new options"
+msgstr "Neue Optionen hinzufuegen"
+
+#: ../data/dialogs/sim-settings.glade2.h:6
+msgid "Add to list"
+msgstr "Zur Liste hinzufuegen"
+
+#: ../data/dialogs/sim-settings.glade2.h:7
+msgid "Analysis Options"
+msgstr "Analyse-Optionen"
+
+#: ../data/dialogs/sim-settings.glade2.h:8
+msgid "Analysis Parameters"
+msgstr "Analyse-Parameter"
+
+#: ../data/dialogs/sim-settings.glade2.h:9
+msgid "DEC"
+msgstr "DEC"
+
+#: ../data/dialogs/sim-settings.glade2.h:10
+msgid "Frequency"
+msgstr "Frequenz"
+
+#: ../data/dialogs/sim-settings.glade2.h:11
+msgid "LIN"
+msgstr "LIN"
+
+#: ../data/dialogs/sim-settings.glade2.h:12
+msgid "List of outputs"
+msgstr "Liste der Ausgaenge"
+
+#: ../data/dialogs/sim-settings.glade2.h:13
+msgid "OCT"
+msgstr "OCT"
+
+#: ../data/dialogs/sim-settings.glade2.h:14
+msgid "Points"
+msgstr "Punkte"
+
+#: ../data/dialogs/sim-settings.glade2.h:15
+msgid "Simulation Settings"
+msgstr "Simulationseinstellungen"
+
+#: ../data/dialogs/sim-settings.glade2.h:16
+msgid "Source"
+msgstr "Quelle"
+
+#: ../data/dialogs/sim-settings.glade2.h:17
+msgid "Start"
+msgstr "Start"
+
+#: ../data/dialogs/sim-settings.glade2.h:18
+msgid "Step"
+msgstr "Schritt"
+
+#: ../data/dialogs/sim-settings.glade2.h:19
+msgid "Stop"
+msgstr "Final"
+
+#: ../data/dialogs/sim-settings.glade2.h:20
+msgid "Type"
+msgstr "Typ"
+
+#: ../data/dialogs/sim-settings.glade2.h:21
+msgid "Use Initial Conditions"
+msgstr "Initial Conditions verwenden"
+
+#: ../data/dialogs/simulation.glade2.h:1
+#, fuzzy
+msgid "Progress: None"
+msgstr "Fortschritt:"
+
+#: ../data/dialogs/simulation.glade2.h:2
+msgid "Simulation"
+msgstr "Simulation"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:2
+msgid "<b>Text</b>"
+msgstr "<b>Text</b>"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:3
+msgid "Text Properties"
+msgstr "Texteigenschaften"
+
+#: ../data/dialogs/view-netlist.glade2.h:1
+msgid "Netlist View"
+msgstr "Netzliste ansehen"
+
+#: ../data/dialogs/view-netlist.glade2.h:2 ../src/schematic-view-ui.h:161
+msgid "_Simulate"
+msgstr "_Simulieren"
+
+#: ../src/sheet/part-item.c:147
+msgid "Edit the part's properties"
+msgstr "Bauteil-Eigenschaften editieren"
+
+#: ../src/sheet/part-item.c:616 ../src/sheet/part-item.c:765
+#: ../src/sheet/textbox-item.c:679 ../src/sim-settings.c:775
+#: ../src/settings.c:139 ../src/schematic-view.c:251
+#: ../src/schematic-view.c:317 ../src/schematic-view.c:2431 ../src/plot.c:434
+#: ../src/plot.c:689 ../src/part-browser.c:496 ../src/netlist-editor.c:309
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this."
+msgstr ""
+"Die Datei %s ist nicht auffindbar. Moeglicherweise muss Oregano neu "
+"installiert werden."
+
+#: ../src/sheet/part-item.c:618 ../src/sheet/part-item.c:626
+#: ../src/sheet/part-item.c:767 ../src/sheet/part-item.c:775
+msgid "Could not create part properties dialog."
+msgstr "Konnte keinen Bauteil-Eigenschaften Dialog erstellen"
+
+#: ../src/sheet/sheet-item.c:307 ../src/schematic-view-ui.h:288
+msgid "Copy"
+msgstr "Kopieren"
+
+#: ../src/sheet/sheet-item.c:307
+msgid "Copy the object to the clipboard"
+msgstr "Objekt ins Clipboard kopieren"
+
+#: ../src/sheet/sheet-item.c:310 ../src/schematic-view-ui.h:285
+msgid "Cut"
+msgstr "ausschneiden"
+
+#: ../src/sheet/sheet-item.c:310
+msgid "Cut the object to the clipboard"
+msgstr "Objekt ins Clipboard ausschneiden"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete"
+msgstr "Loeschen"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete the object"
+msgstr "Objekt loeschen"
+
+#: ../src/sheet/sheet-item.c:319
+msgid "Rotate"
+msgstr "Drehen"
+
+#: ../src/sheet/sheet-item.c:320
+msgid "Rotate the selected objects 90 degrees clockwise"
+msgstr "Ausgewaehlte Objekte 90 Grad im Uhrzeigersinn drehen"
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit..."
+msgstr "Editieren..."
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit the text"
+msgstr "Text editieren"
+
+#: ../src/sheet/textbox-item.c:596
+msgid "Label"
+msgstr "Label"
+
+#: ../src/sheet/textbox-item.c:681 ../src/sheet/textbox-item.c:690
+msgid "Could not create textbox properties dialog"
+msgstr "Textbox-Eigenschaften Dialog nicht erstellbar"
+
+#: ../src/simulation.c:102 ../src/simulation.c:109 ../src/simulation.c:115
+msgid "Could not create simulation dialog"
+msgstr "Simulations-Dialog nicht erstellbar"
+
+#: ../src/simulation.c:150
+#, fuzzy, c-format
+msgid "Progress: <b>%s</b>"
+msgstr "Fortschritt:"
+
+#: ../src/simulation.c:201
+msgid ""
+"<span weight=\"bold\" size=\"large\">The simulation was aborted due to an "
+"error.</span>\n"
+"\n"
+"Would you like to view the error log?"
+msgstr ""
+"<span weight=\"bold\" size=\"large\">Die Simulation wurde aufgrund eines "
+"Fehlers Abgebrochen.</span>\n"
+"Moechten Sie das LOG-File ansehen?"
+
+#: ../src/simulation.c:211
+msgid "The simulation was aborted due to an error"
+msgstr "Die Simulation wurde aufgrund eines Fehlers abgebrochen"
+
+#: ../src/sim-settings.c:229
+msgid "Add new option"
+msgstr "Neue Option hinzufuegen"
+
+#: ../src/sim-settings.c:777 ../src/sim-settings.c:784
+#: ../src/sim-settings.c:790
+msgid "Could not create simulation settings dialog"
+msgstr "Simulationseinstellungen-Dialog nicht erstellbar"
+
+#: ../src/sim-settings.c:814
+msgid "Option"
+msgstr "Option"
+
+#: ../src/sim-settings.c:816
+msgid "Value"
+msgstr "Wert"
+
+#: ../src/settings.c:141 ../src/settings.c:148 ../src/settings.c:154
+msgid "Could not create settings dialog"
+msgstr "Einstellungs-Dialog nicht erstellbar"
+
+#: ../src/settings.c:215
+msgid "Engine executable not found"
+msgstr ""
+
+#: ../src/settings.c:216
+msgid "The engine is unable to locate the external program."
+msgstr ""
+
+#: ../src/schematic-view.c:254
+msgid "Could not create properties dialog"
+msgstr "Eigenschaften-Dialog nicht erstellbar"
+
+#: ../src/schematic-view.c:320
+msgid "Could not create the page properties dialog"
+msgstr "Seiteneigenschaften-Dialog nicht erstellbar"
+
+#: ../src/schematic-view.c:383
+msgid "Could not load file"
+msgstr "Datei laesst sich nicht laden"
+
+#: ../src/schematic-view.c:410 ../src/schematic-view.c:1304
+#: ../src/schematic-view.c:1312
+msgid "Untitled.oregano"
+msgstr "OhneTitel.oregano"
+
+#: ../src/schematic-view.c:415
+msgid "Could not save schematic file"
+msgstr "Schaltplan-Datei laesst sich nicht speichern"
+
+#: ../src/schematic-view.c:765 ../src/netlist-editor.c:225
+#: ../src/netlist-editor.c:436
+msgid "Could not create a netlist"
+msgstr "Netzliste kann nicht erstellt werden"
+
+#: ../src/schematic-view.c:768 ../src/netlist-editor.c:229
+#: ../src/netlist-editor.c:439
+msgid "An unexpected error has occurred"
+msgstr "Unerwarteter Fehler aufgetreten (Oh Grauss)"
+
+#: ../src/schematic-view.c:1313
+msgid "Untitled.netlist"
+msgstr "OhneTitel.netlist"
+
+#: ../src/schematic-view.c:1504
+#, fuzzy, c-format
+msgid ""
+"<span weight=\"bold\" size=\"large\">Save changes to schematic %s before "
+"closing?</span>\n"
+"\n"
+"If you don't save, all changes since you last saved will be permanently lost."
+msgstr ""
+"<span weight=\"bold\" size=\"large\">Schaltplan %s wurde geaendert</ "
+"guardar</span>\n"
+"\n"
+"Moechten Sie speichern?"
+
+#: ../src/schematic-view.c:1516
+msgid "Close _without Saving"
+msgstr ""
+
+#: ../src/schematic-view.c:2434 ../src/schematic-view.c:2445
+msgid "Could not create the log window"
+msgstr "LOG-Fenster nicht erstellbar."
+
+#: ../src/schematic-view-ui.h:38
+msgid "_New"
+msgstr "_Neu"
+
+#: ../src/schematic-view-ui.h:38 ../src/schematic-view-ui.h:264
+msgid "Create a new schematic"
+msgstr "Neuen Schaltplan erstellen"
+
+#: ../src/schematic-view-ui.h:47
+msgid "Page Properties"
+msgstr "Seiteneigenschaften"
+
+#: ../src/schematic-view-ui.h:48
+msgid "Set print properties"
+msgstr "Druckeigenschaften"
+
+#: ../src/schematic-view-ui.h:56 ../src/print.c:367 ../src/plot.c:150
+#: ../src/netlist-editor.c:193
+msgid "Print Preview"
+msgstr "Druckansicht"
+
+#: ../src/schematic-view-ui.h:57
+msgid "Preview the schematic before printing"
+msgstr "Schaltplan-Druckansicht"
+
+#: ../src/schematic-view-ui.h:65
+msgid "Schematic _Properties..."
+msgstr "_Schaltplan _Eigenschaften"
+
+#: ../src/schematic-view-ui.h:66
+msgid "Modify the schematic's properties"
+msgstr "Schaltplaneigenschaften aendern"
+
+#: ../src/schematic-view-ui.h:95
+msgid "_Delete"
+msgstr "_Loeschen"
+
+#: ../src/schematic-view-ui.h:96
+msgid "Delete the selection"
+msgstr "Auswahl loeschen"
+
+#: ../src/schematic-view-ui.h:102
+msgid "_Rotate"
+msgstr "_Drehen"
+
+#: ../src/schematic-view-ui.h:103
+msgid "Rotate the selection clockwise"
+msgstr "Auswahl im Uhrzeigersinn drehen"
+
+#: ../src/schematic-view-ui.h:109
+#, fuzzy
+msgid "Flip _horizontally"
+msgstr "Horizontal zentrieren"
+
+#: ../src/schematic-view-ui.h:110
+#, fuzzy
+msgid "Flip the selection horizontally"
+msgstr "Auswahl ins Clipboard kopieren"
+
+#: ../src/schematic-view-ui.h:116
+#, fuzzy
+msgid "Flip _vertically"
+msgstr "Vertikal zentrieren"
+
+#: ../src/schematic-view-ui.h:117
+#, fuzzy
+msgid "Flip the selection vertically"
+msgstr "Auswahl loeschen"
+
+#: ../src/schematic-view-ui.h:124
+#, fuzzy
+msgid "Select _all"
+msgstr "_Gesamte Auswahl rueckgaenging machen"
+
+#: ../src/schematic-view-ui.h:125
+msgid "Select all objects on the sheet"
+msgstr "Alle Objekte auf der Seite auswaehlen"
+
+#: ../src/schematic-view-ui.h:131
+#, fuzzy
+msgid "Deselect a_ll"
+msgstr "_Gesamte Auswahl rueckgaenging machen"
+
+#: ../src/schematic-view-ui.h:132
+msgid "Deselect the selected objects"
+msgstr "Auswahl der gewaehlten Objekte rueckgaengig machen"
+
+#: ../src/schematic-view-ui.h:140
+#, fuzzy
+msgid "_Object Properties..."
+msgstr "_Objekt _Eigenschaften..."
+
+#: ../src/schematic-view-ui.h:141
+msgid "Modify the object's properties"
+msgstr "Objekteigenschaften aendern"
+
+#: ../src/schematic-view-ui.h:146
+msgid "Simulation S_ettings..."
+msgstr "Simulations Ei_nstellungen..."
+
+#: ../src/schematic-view-ui.h:147
+msgid "Edit the simulation settings"
+msgstr "Simulations Ei_nstellungen aendern"
+
+#: ../src/schematic-view-ui.h:162
+msgid "Run a simulation"
+msgstr "Simulation starten"
+
+#: ../src/schematic-view-ui.h:169
+msgid "_Generate netlist"
+msgstr "_Netzliste erstellen"
+
+#: ../src/schematic-view-ui.h:170
+msgid "Generate a netlist"
+msgstr "Eine Netzliste erstellen"
+
+#: ../src/schematic-view-ui.h:177
+msgid "50%"
+msgstr "50%"
+
+#: ../src/schematic-view-ui.h:178
+msgid "Set the zoom factor to 50%"
+msgstr "Zoom-Faktor auf 50%"
+
+#: ../src/schematic-view-ui.h:179
+msgid "75%"
+msgstr "75%"
+
+#: ../src/schematic-view-ui.h:180
+msgid "Set the zoom factor to 75%"
+msgstr "Zoom-Faktor auf 75%"
+
+#. GNOMEUIINFO_ITEM_NONE(N_("50%"),
+#. N_("Set the zoom factor to 50%"), plot_zoom_50_cmd),
+#. GNOMEUIINFO_ITEM_NONE(N_("75%"),
+#. N_("Set the zoom factor to 75%"), plot_zoom_75_cmd),
+#: ../src/schematic-view-ui.h:181 ../src/plot.c:167
+msgid "100%"
+msgstr "100%"
+
+#: ../src/schematic-view-ui.h:182 ../src/plot.c:168
+msgid "Set the zoom factor to 100%"
+msgstr "Zoom-Faktor zu 100%"
+
+#: ../src/schematic-view-ui.h:184
+msgid "125%"
+msgstr "125%"
+
+#: ../src/schematic-view-ui.h:185
+msgid "Set the zoom factor to 125%"
+msgstr "Zoom-Faktor auf 125%"
+
+#: ../src/schematic-view-ui.h:186
+msgid "150%"
+msgstr "150%"
+
+#: ../src/schematic-view-ui.h:187
+msgid "Set the zoom factor to 150%"
+msgstr "Zoom-Faktor auf 150%"
+
+#: ../src/schematic-view-ui.h:196
+msgid "Zoom"
+msgstr "Zoom"
+
+#: ../src/schematic-view-ui.h:202
+msgid "_Log"
+msgstr "_Log"
+
+#: ../src/schematic-view-ui.h:202
+msgid "View the latest simulation log"
+msgstr "Letztes Simulations-LOG ansehen"
+
+#: ../src/schematic-view-ui.h:205
+#, fuzzy
+msgid "_Node labels"
+msgstr "_Knoten-Label anzeigen"
+
+#: ../src/schematic-view-ui.h:205
+msgid "Show or hide node labels"
+msgstr "Knoten-Label anzeigen oder verstecken"
+
+#: ../src/schematic-view-ui.h:207
+#, fuzzy
+msgid "N_etlist"
+msgstr "Netzlisten-Datei"
+
+#: ../src/schematic-view-ui.h:208
+#, fuzzy
+msgid "View the circuit netlist"
+msgstr "Eine Netzliste ansehen"
+
+#: ../src/schematic-view-ui.h:240
+msgid "_Contents"
+msgstr "_Inhalt"
+
+#: ../src/schematic-view-ui.h:240
+msgid "Show program help"
+msgstr "Hilfe anzeigen"
+
+#: ../src/schematic-view-ui.h:254
+msgid "_Tools"
+msgstr "_Werkzeuge"
+
+#: ../src/schematic-view-ui.h:264
+msgid "New"
+msgstr "Neu"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open"
+msgstr "Oeffnen"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open an existing schematic"
+msgstr "Vorhandenen Schaltplan oeffnen"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save"
+msgstr "Speichern"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save the schematic"
+msgstr "Schaltplan speichern"
+
+#: ../src/schematic-view-ui.h:285
+msgid "Cut the selection to the clipboard"
+msgstr "Auswahl ins Clipboard ausschneiden"
+
+#: ../src/schematic-view-ui.h:288
+msgid "Copy the selection to the clipboard"
+msgstr "Auswahl ins Clipboard kopieren"
+
+#: ../src/schematic-view-ui.h:291 ../src/schematic-view-ui.h:404
+msgid "Paste"
+msgstr "Einfuegen"
+
+#: ../src/schematic-view-ui.h:291
+msgid "Paste the clipboard"
+msgstr "Clipboard-Inhalt einfuegen"
+
+#: ../src/schematic-view-ui.h:301
+msgid "Arrow"
+msgstr "Pfeil"
+
+#: ../src/schematic-view-ui.h:302
+msgid "Select, move and modify objects"
+msgstr "Objekte auswaehlen, verschieben und veraendern"
+
+#: ../src/schematic-view-ui.h:307
+msgid "Text"
+msgstr "Text"
+
+#: ../src/schematic-view-ui.h:308
+msgid "Put text on the schematic"
+msgstr "Text in Schaltplan einfuegen"
+
+#: ../src/schematic-view-ui.h:313
+msgid "Wires"
+msgstr "Kabel"
+
+#: ../src/schematic-view-ui.h:314
+msgid "Draw wires"
+msgstr "Kabel zeichnen"
+
+#: ../src/schematic-view-ui.h:330
+msgid "Add Voltage Clamp"
+msgstr "Spannungs-Abgriff hinzufuegen"
+
+#: ../src/schematic-view-ui.h:331
+msgid "Add a Voltage test clamp"
+msgstr "Spannungs-Testpunkt hinzufuegen"
+
+#: ../src/schematic-view-ui.h:336
+msgid "Simulate"
+msgstr "Simulieren"
+
+#: ../src/schematic-view-ui.h:337
+msgid "Run a simulation for the current schematic"
+msgstr "Jetzigen Schaltplan simulieren"
+
+#: ../src/schematic-view-ui.h:342 ../src/schematic-view-ui.h:343
+msgid "Simulation settings"
+msgstr "Simulations-Einstellungen"
+
+#: ../src/schematic-view-ui.h:361
+msgid "Show or hide the part browser"
+msgstr "Komponenten Browser anzeigen oder verstecken"
+
+#: ../src/schematic-view-ui.h:366
+msgid "Grid"
+msgstr "Grid"
+
+#: ../src/schematic-view-ui.h:367
+msgid "Turn on/off the grid"
+msgstr "Grid on/off"
+
+#: ../src/schematic-view-ui.h:372 ../src/schematic-view-ui.h:373
+msgid "Zoom in"
+msgstr "Vergroessern"
+
+#: ../src/schematic-view-ui.h:378 ../src/schematic-view-ui.h:379
+msgid "Zoom out"
+msgstr "Verkleinern"
+
+#: ../src/schematic-view-ui.h:405
+msgid "Paste the contents of the clipboard to the sheet"
+msgstr "Clipboard-Inhalt in Seite einfuegen"
+
+#: ../src/print.c:297
+msgid "Print"
+msgstr "Drucken"
+
+#: ../src/print.c:304
+msgid "Pages"
+msgstr "Seiten"
+
+#: ../src/print.c:339
+msgid "Can't get paper info! .. getting default!"
+msgstr "Papierinformation nicht verfuegbar .. verwende default!"
+
+#: ../src/print.c:353
+msgid "Could not create font for printing."
+msgstr "Druckfont nicht erstellbar"
+
+#: ../src/print.c:372
+msgid "Printing failed."
+msgstr "Drucken schiefgegangen - Schade"
+
+#: ../src/plot.c:61 ../src/plot.c:62
+msgid "Sans 10"
+msgstr "Sans 10"
+
+#: ../src/plot.c:63
+msgid "Sans 8"
+msgstr "Sans 8"
+
+#: ../src/plot.c:151
+msgid "Preview the plot before printing"
+msgstr "Druckansicht vor Ausdruck"
+
+#: ../src/plot.c:153
+msgid "Export plot"
+msgstr "Plot exportieren"
+
+#: ../src/plot.c:154
+msgid "Show the export menu"
+msgstr "Export-Menu anzeigen"
+
+#: ../src/plot.c:155
+msgid "Add Function"
+msgstr "Funktion hinzufuegen"
+
+#: ../src/plot.c:156
+msgid "Add new function to the graph"
+msgstr "Neue Funktion zur Grafik hinzufuegen"
+
+#: ../src/plot.c:180
+msgid "_Preferences..."
+msgstr "_Praeferenzen..."
+
+#: ../src/plot.c:182
+msgid "Show crosshairs"
+msgstr "Kreuze anzeigen"
+
+#: ../src/plot.c:183
+msgid "_Zoom"
+msgstr "_Zoom"
+
+#: ../src/plot.c:190
+msgid "Schematic Plot"
+msgstr "Schlatplan-Plot"
+
+#: ../src/plot.c:196
+msgid "_File"
+msgstr "_Datei"
+
+#: ../src/plot.c:197
+msgid "_Plot"
+msgstr "_Plot"
+
+#. Simulation failed?
+#: ../src/plot.c:330
+msgid "The simulation produced no data!!\n"
+msgstr "Die Simulation erzeugte keine Daten!!\n"
+
+#: ../src/plot.c:340 ../src/plot.c:574
+#, c-format
+msgid "Plot - %s"
+msgstr "Plot - %s"
+
+#: ../src/plot.c:349
+msgid "Nodes"
+msgstr "Knoten"
+
+#: ../src/plot.c:352 ../src/plot.c:636
+msgid "Functions"
+msgstr "Funktionen"
+
+#
+#: ../src/plot.c:424
+msgid "Oregano - Plot"
+msgstr "Oregano - Plot"
+
+#: ../src/plot.c:436 ../src/plot.c:443
+msgid "Could not create plot window."
+msgstr "Konnte kein Plot-Fenster erstellen."
+
+#: ../src/plot.c:659
+msgid "TRANSFER"
+msgstr "UEBERTRAGUNG"
+
+#: ../src/plot.c:691 ../src/plot.c:698
+msgid "Could not create plot export window."
+msgstr "Konnte kein Plot-Export Fenster erstellen."
+
+#. if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (export_png)))
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PNG;
+#. else
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PS;
+#: ../src/plot.c:719
+msgid "Save PNG"
+msgstr "PNG speichern"
+
+#: ../src/part-browser.c:135 ../src/part-browser.c:614
+msgid ""
+"Gtk version 2.2 does not support GtkTreeModelFilter...\n"
+"Filtering disable!"
+msgstr ""
+"Gtk Version 2.2 unterstuetzt GtkTreeModelFilter nicht...\n"
+"Filterung der Komponenten desaktiviert!"
+
+#: ../src/part-browser.c:187 ../src/part-browser.c:401
+msgid "Unable to load required part"
+msgstr ""
+
+#: ../src/part-browser.c:499 ../src/part-browser.c:507
+msgid "Could not create part browser"
+msgstr "Konnte keinen Bauteile-Browser erstellen."
+
+#: ../src/oregano-config.c:123
+#, c-format
+msgid "Loading %s ..."
+msgstr "Lade %s ..."
+
+#: ../src/oregano-config.c:164
+#, c-format
+msgid "Could not read the parts library: %s "
+msgstr "Bauteile-Bibliothek nicht lesbar: %s"
+
+#: ../src/oregano-config.c:166
+msgid ""
+"The file is probably corrupt. Please reinstall the parts\n"
+"library or Oregano and try again."
+msgstr ""
+"Diese Datei ist wahrscheinlich defekt. Bitte installieren Sie\n"
+"die Bauteile-Bibliothek oder Oregano neu"
+
+#: ../src/engines/netlist.c:436
+msgid "No ground node. Aborting.\n"
+msgstr ""
+
+#: ../src/engines/netlist.c:441
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have a ground node and try again."
+msgstr ""
+
+#: ../src/engines/netlist.c:450
+msgid "No test clamps found. Aborting.\n"
+msgstr ""
+
+#: ../src/engines/netlist.c:455
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have one o more test clamps and try again."
+msgstr ""
+
+#: ../src/engines/gnucap.c:299
+#, fuzzy
+msgid "### Too few or none analysis found ###\n"
+msgstr ""
+"\n"
+"\n"
+"### Zu wenige oder gar keine Analyse gefunden ###\n"
+"\n"
+
+#: ../src/engines/gnucap.c:366
+msgid "Unable to execute GnuCap."
+msgstr ""
+
+#: ../src/engines/gnucap.c:383
+#, fuzzy
+msgid "None"
+msgstr "Knoten"
+
+#: ../src/engines/gnucap.c:586
+msgid "time"
+msgstr ""
+
+#: ../src/engines/gnucap.c:591 ../src/engines/gnucap.c:601
+#, fuzzy
+msgid "voltage"
+msgstr "Spannung"
+
+#: ../src/engines/gnucap.c:596
+#, fuzzy
+msgid "frequency"
+msgstr "Frequenz"
+
+#: ../src/engines/gnucap.c:645
+#, fuzzy
+msgid "Unknown analysis"
+msgstr "Unbekannte Analzse"
+
+#: ../src/engines/gnucap.c:693
+#, fuzzy
+msgid "abort"
+msgstr "Start"
+
+#: ../src/engines/engine.c:32
+msgid "Operating Point"
+msgstr "Operationspunkt"
+
+#: ../src/engines/engine.c:33
+msgid "Transient Analysis"
+msgstr "Transient Analyse"
+
+#: ../src/engines/engine.c:34
+msgid "DC transfer characteristic"
+msgstr "DC Uebertragungscharacteristik"
+
+#: ../src/engines/engine.c:35
+msgid "AC Analysis"
+msgstr "AC Analyse"
+
+#: ../src/engines/engine.c:36
+msgid "Transfer Function"
+msgstr "Uebertragungsfunktion"
+
+#: ../src/engines/engine.c:37
+msgid "Distortion Analysis"
+msgstr "Distortion Analyse"
+
+#: ../src/engines/engine.c:38
+msgid "Noise Analysis"
+msgstr "Noise Analyse"
+
+#: ../src/engines/engine.c:39
+msgid "Pole-Zero Analysis"
+msgstr "Pole-Zero Analyse"
+
+#: ../src/engines/engine.c:40
+msgid "Sensitivity Analysis"
+msgstr "Sensitivity Analyse"
+
+#: ../src/engines/engine.c:41
+msgid "Unknown Analysis"
+msgstr "Unbekannte Analzse"
+
+#: ../src/netlist-editor.c:172
+#, c-format
+msgid "Netlist for %s"
+msgstr "Netzliste fuer %s"
+
+#: ../src/netlist-editor.c:173
+#, c-format
+msgid "Author : %s"
+msgstr "Autor : %s"
+
+#: ../src/netlist-editor.c:186
+msgid "Page %N of %Q"
+msgstr "Seite %N von %Q"
+
+#: ../src/netlist-editor.c:238 ../src/netlist-editor.c:274
+#, c-format
+msgid "The file %s could not be saved"
+msgstr "Die Datei %s konnte nicht gespeichert werden"
+
+#: ../src/netlist-editor.c:239 ../src/netlist-editor.c:275
+msgid "Could not save temporary netlist file"
+msgstr "Zeitweilige Netzliste konnte nicht gespeichert werden"
+
+#: ../src/netlist-editor.c:311
+msgid "Could not create the netlist dialog"
+msgstr "Netzlisten-Dialog nicht erstellbar"
+
+#. gettext support
+#: ../src/netlist-editor.c:390
+#, c-format
+msgid "The file %s could not be found."
+msgstr "Datei %s ist nicht auffindbar."
+
+#: ../src/netlist-editor.c:391
+msgid "Could not find the required file"
+msgstr "Die benoetigte Datei ist nicht auffindbar"
+
+#: ../src/main.c:107
+msgid "Enables some debugging functions"
+msgstr "Schaelt einige Debug-Funktionen ein"
+
+#: ../src/main.c:107
+msgid "LEVEL"
+msgstr "LEVEL"
+
+#: ../src/main.c:132
+msgid ""
+"You seem to be running Oregano without\n"
+"having it installed properly on your system.\n"
+"\n"
+"Please install Oregano and try again."
+msgstr ""
+"Ihre Oregano-Installation scheint\n"
+"unvollstaendig oderfehlerhaft zu sein.\n"
+"\n"
+"Bitte installieren Sie neu und veruschen sie es nochmal."
+
+#: ../src/main.c:155
+msgid ""
+"Could not find a parts library.\n"
+"\n"
+"This is probably due to a faulty installation\n"
+"of Oregano. Please check your installation."
+msgstr ""
+"Es ist keine Bauteile-Bibliothek zu finden.\n"
+"\n"
+"Dies liegt vermutlich an einer fehlerhaften Installation.\n"
+"Bitte ueberpruefen Sie Ihre Oregano-Installation."
+
+#: ../src/main.c:212
+msgid "Welcome to Oregano"
+msgstr "Wilkommen bei Oregano"
+
+#: ../src/load-schematic.c:261
+msgid "Bad file format."
+msgstr "Fehlerhaftes Dateiformat."
+
+#: ../src/load-schematic.c:271
+msgid "Unknown parser error."
+msgstr "Parser-Error."
+
+#: ../src/load-library.c:149
+#, c-format
+msgid "Could not find the requested symbol: %s\n"
+msgstr "Gewuenschtes Symbol nicht auffindbar: %s\n"
+
+#: ../src/load-library.c:165
+#, c-format
+msgid "Could not find the requested part: %s\n"
+msgstr "Gewuenschtes Bauteil nicht auffindbar: %s\n"
+
+#: ../src/file.c:50 ../src/file.c:90
+msgid "Oregano Files"
+msgstr "Oregano Dateien"
+
+#: ../src/file.c:52 ../src/file.c:92
+msgid "All Files"
+msgstr "Alle Dateien"
+
+#: ../src/file.c:55
+msgid "Open File"
+msgstr "Datei oeffnen"
+
+#: ../src/file.c:95
+msgid "Save File"
+msgstr "Datei speichern"
+
+#: ../src/file.c:145
+msgid "Netlist File"
+msgstr "Netzlisten-Datei"
+
+#: ../src/file.c:221
+msgid "Open file"
+msgstr "Datei oeffnen"
+
+#: ../src/file.c:271
+msgid "Save schematic as"
+msgstr "Schaltplan speichern als"
+
+#: ../src/file.c:336
+msgid "Netlist filename"
+msgstr "Netzlisten-Dateiname"
+
+#: ../src/dialogs.c:126
+#, fuzzy
+msgid ""
+"(c) 2003-2006 LUGFi\n"
+"(c) 1999-2001 Richard Hult"
+msgstr ""
+"(c) 2003-2005 LUGFi\n"
+"(c) 1999-2001, Richard Hult"
+
+#: ../src/dialogs.c:141
+msgid "Schematic capture and circuit simulation.\n"
+msgstr "Schaltplanerstellung und Simulation.\n"
+
+#: ../src/model/schematic.c:584
+#, c-format
+msgid "File %s does not exists."
+msgstr "Datei %s existiert nicht."
+
+#: ../src/model/schematic.c:592 ../src/model/schematic.c:630
+#, c-format
+msgid "Unknown file format for %s."
+msgstr "Unbekanntes Dateiformat fuer %s."
+
+#: ../src/model/schematic.c:611
+msgid "Load fails!."
+msgstr "Laden nicht moeglich!"
+
+#: ../src/plot-add-function.c:48
+#, fuzzy, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this"
+msgstr ""
+"Die Datei %s ist nicht auffindbar. Moeglicherweise muss Oregano neu "
+"installiert werden."
+
+#: ../src/plot-add-function.c:50 ../src/plot-add-function.c:57
+#, fuzzy
+msgid "Could not create plot window"
+msgstr "Konnte kein Plot-Fenster erstellen."
+
+#~ msgid "_View netlist"
+#~ msgstr "_Netzliste ansehen"
+
+#~ msgid "View plot"
+#~ msgstr "Plot ansehen"
+
+#~ msgid "View plot "
+#~ msgstr "Plot ansehen "
+
+#~ msgid "Problem in transient analysis"
+#~ msgstr "Problem in Transient Analyse"
+
+#~ msgid "Start time must be less than stop time."
+#~ msgstr "Startzeit muss kleiner als Stopzeit sein."
+
+#~ msgid "Could not find the simulation executable"
+#~ msgstr "Simulator-Programm nicht gefunden"
+
+#~ msgid "This probably means that you have not configured Oregano properly."
+#~ msgstr ""
+#~ "Wahrscheinlich bedeutet dies, dass Oregano nicht richtig konfiguriert ist."
+
+#~ msgid "You have not entered a simulation executable"
+#~ msgstr "Sie gaben kein Simulator-Programm ein"
+
+#~ msgid ""
+#~ "Please choose Settings and specify which program to use for simulations."
+#~ msgstr "Bitte waehlen sie Einstallungen und geben Sie einen Simulator an "
+
+#~ msgid "Name: "
+#~ msgstr "Name: "
+
+#~ msgid "Value: "
+#~ msgstr "Wert: "
+
+#~ msgid "GnuCap"
+#~ msgstr "GnuCap"
+
+#~ msgid "NgSpice"
+#~ msgstr "NgSpice"
+
+#~ msgid "Parser"
+#~ msgstr "Parser"
+
+#~ msgid "<b>Format</b>"
+#~ msgstr "<b>Format</b>"
+
+#~ msgid "<b>Size</b>"
+#~ msgstr "<b>Groesse</b>"
+
+#~ msgid "Height : "
+#~ msgstr "Hoehe : "
+
+#~ msgid "Plot Export"
+#~ msgstr "Plot Export"
+
+#~ msgid "Portable Network Graphics (png)"
+#~ msgstr "Portable Network Graphics (png)"
+
+#~ msgid "Postscript (ps)"
+#~ msgstr "Postscript (ps)"
+
+#~ msgid "Width : "
+#~ msgstr "Breite : "
diff --git a/po/es.po b/po/es.po
new file mode 100644
index 0000000..2868821
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,1621 @@
+# Traducción española de Oregano
+# Copyright (C) 2001 Free Software Foundation, Inc.
+# Antonio Martínez Alvarez <newton@retemail.es>, 2001.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: oregano 0.50.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-11 02:36-0300\n"
+"PO-Revision-Date: 2005-09-03 13:33-0300\n"
+"Last-Translator: Ricardo Markiewicz <rmarkie@fi.uba.ar> \n"
+"Language-Team: Spanish\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:1
+msgid "<b>AC Analysis Options</b>"
+msgstr "<b>Opciones para análisis AC</b>"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:2
+msgid "<b>Type</b>"
+msgstr "<b>Tipo</b>"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:3
+msgid "Current"
+msgstr "Intensidad"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:4
+msgid "Edit Clamp properties"
+msgstr "Editar las propiedades de la punta"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:5
+msgid "Imaginary part"
+msgstr "Parte imaginaria"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:6
+msgid "Magnitude"
+msgstr "Magnitud"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:7
+msgid "Phase"
+msgstr "Fase"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:8
+msgid "Real part"
+msgstr "Parte real"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:9
+msgid "Use decibel scale"
+msgstr "Usar escala en decibeles"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:10
+msgid "Voltage"
+msgstr "Tensión"
+
+#: ../data/dialogs/log-window.glade2.h:1
+msgid "Clear"
+msgstr "Limpiar"
+
+#: ../data/dialogs/log-window.glade2.h:2
+msgid "Oregano Log Window"
+msgstr "Ventana de Errores de Oregano"
+
+#: ../data/dialogs/page-properties.glade2.h:1
+msgid "<b>Alignment</b>"
+msgstr "<b>Alineación</b>"
+
+#: ../data/dialogs/page-properties.glade2.h:2
+msgid "Center Horizontally"
+msgstr "Centrar horizontalmente"
+
+#: ../data/dialogs/page-properties.glade2.h:3
+msgid "Center Vertically"
+msgstr "Centrar verticalmente"
+
+#: ../data/dialogs/page-properties.glade2.h:4
+msgid "Fit to page"
+msgstr "Ajustar a la página"
+
+#: ../data/dialogs/page-properties.glade2.h:5
+msgid "Print Properties"
+msgstr "Propiedades de Página"
+
+#: ../data/dialogs/part-browser.glade2.h:1
+msgid "<b>Preview</b>"
+msgstr "<b>Vista previa</b>"
+
+#: ../data/dialogs/part-browser.glade2.h:2
+msgid "Library:"
+msgstr "Biblioteca:"
+
+#: ../data/dialogs/part-browser.glade2.h:3 ../src/schematic-view-ui.h:360
+msgid "Parts"
+msgstr "Componentes"
+
+#: ../data/dialogs/part-browser.glade2.h:4
+msgid "Place"
+msgstr "Insertar"
+
+#: ../data/dialogs/part-browser.glade2.h:5
+msgid "Press this button to place the selected part"
+msgstr "Pulse este botón para insertar el componente seleccionado"
+
+#: ../data/dialogs/part-browser.glade2.h:6
+msgid "Search:"
+msgstr "Buscar:"
+
+#: ../data/dialogs/part-browser.glade2.h:7
+msgid "Select which library to use"
+msgstr "Seleccione bibioteca a usar"
+
+#: ../data/dialogs/part-properties-dialog.glade2.h:1
+msgid "Part Properties"
+msgstr "Propiedades del componente"
+
+#: ../data/dialogs/plot-window.glade2.h:1
+msgid "<b>Plot</b>"
+msgstr "<b>Gráfica</b>"
+
+#: ../data/dialogs/plot-window.glade2.h:2
+msgid "<b>Variables</b>"
+msgstr "<b>Variables</b>"
+
+#: ../data/dialogs/plot-window.glade2.h:3
+msgid "Plot"
+msgstr "Graficar"
+
+#: ../data/dialogs/plot-window.glade2.h:4
+msgid "Region"
+msgstr "Región"
+
+#: ../data/dialogs/plot-window.glade2.h:5
+msgid "Shift"
+msgstr "Mover"
+
+#: ../data/dialogs/properties.glade2.h:1
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:1
+msgid " "
+msgstr " "
+
+#: ../data/dialogs/properties.glade2.h:2
+msgid "<b>Comments</b>"
+msgstr "<b>Comentarios</b>"
+
+#: ../data/dialogs/properties.glade2.h:3
+msgid "Author:"
+msgstr "Autor:"
+
+#: ../data/dialogs/properties.glade2.h:4 ../src/sheet/part-item.c:147
+msgid "Properties"
+msgstr "Propiedades"
+
+#: ../data/dialogs/properties.glade2.h:5
+msgid "Title:"
+msgstr "Tí­tulo:"
+
+#: ../data/dialogs/settings.glade2.h:1
+msgid "\n"
+msgstr "\n"
+
+#: ../data/dialogs/settings.glade2.h:3
+msgid "<b>Data Paths</b>"
+msgstr "<b>Rutas a datos</b>"
+
+#: ../data/dialogs/settings.glade2.h:4
+msgid "<b>Engine</b>"
+msgstr "<b>Motor</b>"
+
+#: ../data/dialogs/settings.glade2.h:5
+msgid "<b>Executable Path</b>"
+msgstr "<b>Ejecutables</b>"
+
+#: ../data/dialogs/settings.glade2.h:6
+msgid "<b>File Format</b>"
+msgstr "<b>Formato de fichero</b>"
+
+#: ../data/dialogs/settings.glade2.h:7
+msgid "<b>User Interface</b>"
+msgstr "<b>Interfaz de usuario</b>"
+
+#: ../data/dialogs/settings.glade2.h:8
+msgid "Automatically show log windows after simulation"
+msgstr "Mostrar la ventana de log después de cada simulación"
+
+#: ../data/dialogs/settings.glade2.h:9
+msgid "Compress saved files"
+msgstr "Comprimir los archivos guardados"
+
+#: ../data/dialogs/settings.glade2.h:10
+msgid "Grid size[px] "
+msgstr "Tamaño de cuadrí­cula [px] "
+
+#: ../data/dialogs/settings.glade2.h:11
+msgid "Library"
+msgstr "Biblioteca:"
+
+#: ../data/dialogs/settings.glade2.h:12
+msgid "Model"
+msgstr "Modelo"
+
+#: ../data/dialogs/settings.glade2.h:13
+msgid "Paths"
+msgstr "Rutas"
+
+#: ../data/dialogs/settings.glade2.h:14
+msgid "Preferences"
+msgstr "Preferencias"
+
+#: ../data/dialogs/settings.glade2.h:15
+msgid "Realtime update of selection (slow)"
+msgstr "Actualización en tiempo real de la selección (lento)"
+
+#: ../data/dialogs/settings.glade2.h:16
+msgid "Remove"
+msgstr "Borrar"
+
+#: ../data/dialogs/settings.glade2.h:17
+msgid "Select A File"
+msgstr "Seleccionar Archivo"
+
+#: ../data/dialogs/settings.glade2.h:18
+msgid "Show the splash screen at application startup"
+msgstr "Mostrar pantalla de presentación al inicio"
+
+#: ../data/dialogs/settings.glade2.h:19
+msgid "TODO : Add FINDPATH for Engines"
+msgstr "TODO : Agregar FINDPATH para Motores"
+
+#: ../data/dialogs/settings.glade2.h:20
+msgid "User Interface"
+msgstr "Interfaz de usuario"
+
+#: ../data/dialogs/sim-settings.glade2.h:1
+msgid "<b>AC</b>"
+msgstr "<b>AC</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:2
+msgid "<b>DC Sweep</b>"
+msgstr "<b>Fuente DC</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:3
+msgid "<b>Fourier</b>"
+msgstr "<b>Fourier</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:4
+msgid "<b>Transient</b>"
+msgstr "<b>Análisis en el tiempo</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:5
+msgid "Add new options"
+msgstr "Agregar nuevas opciones"
+
+#: ../data/dialogs/sim-settings.glade2.h:6
+msgid "Add to list"
+msgstr "Añadir a la lista"
+
+#: ../data/dialogs/sim-settings.glade2.h:7
+msgid "Analysis Options"
+msgstr "Opciones"
+
+#: ../data/dialogs/sim-settings.glade2.h:8
+msgid "Analysis Parameters"
+msgstr "Parámetros del análisis"
+
+#: ../data/dialogs/sim-settings.glade2.h:9
+msgid "DEC"
+msgstr "DEC"
+
+#: ../data/dialogs/sim-settings.glade2.h:10
+msgid "Frequency"
+msgstr "Frecuencia"
+
+#: ../data/dialogs/sim-settings.glade2.h:11
+msgid "LIN"
+msgstr "LIN"
+
+#: ../data/dialogs/sim-settings.glade2.h:12
+msgid "List of outputs"
+msgstr "Lista de salidas"
+
+#: ../data/dialogs/sim-settings.glade2.h:13
+msgid "OCT"
+msgstr "OCT"
+
+#: ../data/dialogs/sim-settings.glade2.h:14
+msgid "Points"
+msgstr "Puntos"
+
+#: ../data/dialogs/sim-settings.glade2.h:15
+msgid "Simulation Settings"
+msgstr "Parámetros de simulación"
+
+#: ../data/dialogs/sim-settings.glade2.h:16
+msgid "Source"
+msgstr "Fuente"
+
+#: ../data/dialogs/sim-settings.glade2.h:17
+msgid "Start"
+msgstr "Comienzo"
+
+#: ../data/dialogs/sim-settings.glade2.h:18
+msgid "Step"
+msgstr "Paso"
+
+#: ../data/dialogs/sim-settings.glade2.h:19
+msgid "Stop"
+msgstr "Final"
+
+#: ../data/dialogs/sim-settings.glade2.h:20
+msgid "Type"
+msgstr "Tipo"
+
+#: ../data/dialogs/sim-settings.glade2.h:21
+msgid "Use Initial Conditions"
+msgstr "Usar Condiciones Iniciales"
+
+#: ../data/dialogs/simulation.glade2.h:1
+msgid "Progress: None"
+msgstr "Evolución: Ninguna"
+
+#: ../data/dialogs/simulation.glade2.h:2
+msgid "Simulation"
+msgstr "Simulación"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:2
+msgid "<b>Text</b>"
+msgstr "<b>Texto</b>"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:3
+msgid "Text Properties"
+msgstr "Propiedades del texto"
+
+#: ../data/dialogs/view-netlist.glade2.h:1
+msgid "Netlist View"
+msgstr "Ver lista de nodos"
+
+#: ../data/dialogs/view-netlist.glade2.h:2 ../src/schematic-view-ui.h:161
+msgid "_Simulate"
+msgstr "_Simular"
+
+#: ../src/sheet/part-item.c:147
+msgid "Edit the part's properties"
+msgstr "Editar las propiedades del componente"
+
+#: ../src/sheet/part-item.c:616 ../src/sheet/part-item.c:765
+#: ../src/sheet/textbox-item.c:679 ../src/sim-settings.c:775
+#: ../src/settings.c:139 ../src/schematic-view.c:251
+#: ../src/schematic-view.c:317 ../src/schematic-view.c:2431 ../src/plot.c:434
+#: ../src/plot.c:689 ../src/part-browser.c:496 ../src/netlist-editor.c:309
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this."
+msgstr ""
+"El archivo %s no se pudo encontrar. Es posible que haga falta reinstalar "
+"Oregano para solucionarlo."
+
+#: ../src/sheet/part-item.c:618 ../src/sheet/part-item.c:626
+#: ../src/sheet/part-item.c:767 ../src/sheet/part-item.c:775
+msgid "Could not create part properties dialog."
+msgstr "No se pudo crear el diálogo de propiedades del componente"
+
+#: ../src/sheet/sheet-item.c:307 ../src/schematic-view-ui.h:288
+msgid "Copy"
+msgstr "Copiar"
+
+#: ../src/sheet/sheet-item.c:307
+msgid "Copy the object to the clipboard"
+msgstr "Copiar el objeto al portapapeles"
+
+#: ../src/sheet/sheet-item.c:310 ../src/schematic-view-ui.h:285
+msgid "Cut"
+msgstr "Cortar"
+
+#: ../src/sheet/sheet-item.c:310
+msgid "Cut the object to the clipboard"
+msgstr "Cortar el objeto al portapapeles"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete"
+msgstr "Borrar"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete the object"
+msgstr "Borrar el objeto"
+
+#: ../src/sheet/sheet-item.c:319
+msgid "Rotate"
+msgstr "Rotar"
+
+#: ../src/sheet/sheet-item.c:320
+msgid "Rotate the selected objects 90 degrees clockwise"
+msgstr "Rotar los objetos selecionados 90 grados en sentido horario"
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit..."
+msgstr "Editar..."
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit the text"
+msgstr "Editar el texto"
+
+#: ../src/sheet/textbox-item.c:596
+msgid "Label"
+msgstr "Etiqueta"
+
+#: ../src/sheet/textbox-item.c:681 ../src/sheet/textbox-item.c:690
+msgid "Could not create textbox properties dialog"
+msgstr "No se pudo crear el diálogo de propiedades del texto"
+
+#: ../src/simulation.c:102 ../src/simulation.c:109 ../src/simulation.c:115
+msgid "Could not create simulation dialog"
+msgstr "No se pudo crear el diálogo de simulación"
+
+#: ../src/simulation.c:150
+#, c-format
+msgid "Progress: <b>%s</b>"
+msgstr "Evolución: <b>%s</b>"
+
+#: ../src/simulation.c:201
+msgid ""
+"<span weight=\"bold\" size=\"large\">The simulation was aborted due to an "
+"error.</span>\n"
+"\n"
+"Would you like to view the error log?"
+msgstr ""
+"<span weight=\"bold\" size=\"large\">La simulación ha finalizado debido a un "
+"error.</span>\n"
+"¿Quiere ver el log de errores?"
+
+#: ../src/simulation.c:211
+msgid "The simulation was aborted due to an error"
+msgstr "La simulación ha finalizado debido a un error"
+
+#: ../src/sim-settings.c:229
+msgid "Add new option"
+msgstr "Agregar nueva opción"
+
+#: ../src/sim-settings.c:777 ../src/sim-settings.c:784
+#: ../src/sim-settings.c:790
+msgid "Could not create simulation settings dialog"
+msgstr "No se pudo crear el diálogo de parámetros de la simulación"
+
+#: ../src/sim-settings.c:814
+msgid "Option"
+msgstr "Opción"
+
+#: ../src/sim-settings.c:816
+msgid "Value"
+msgstr "Valor"
+
+#: ../src/settings.c:141 ../src/settings.c:148 ../src/settings.c:154
+msgid "Could not create settings dialog"
+msgstr "No se pudo crear el diálogo deconfiguración"
+
+#: ../src/settings.c:215
+msgid "Engine executable not found"
+msgstr "No se encontró el ejecutable del Motor"
+
+#: ../src/settings.c:216
+msgid "The engine is unable to locate the external program."
+msgstr "El Motor fue incapaz de localizar el programa externo."
+
+#: ../src/schematic-view.c:254
+msgid "Could not create properties dialog"
+msgstr "No se pudo crear el diálogo de propiedade"
+
+#: ../src/schematic-view.c:320
+msgid "Could not create the page properties dialog"
+msgstr "No se pudo crear el diálogo de propiedade de la página"
+
+#: ../src/schematic-view.c:383
+msgid "Could not load file"
+msgstr "No se pudo cargar el archivo"
+
+#: ../src/schematic-view.c:410 ../src/schematic-view.c:1304
+#: ../src/schematic-view.c:1312
+msgid "Untitled.oregano"
+msgstr "SinNombre.oregano"
+
+#: ../src/schematic-view.c:415
+msgid "Could not save schematic file"
+msgstr "No se pudo guardar el archivo del esquemático"
+
+#: ../src/schematic-view.c:765 ../src/netlist-editor.c:225
+#: ../src/netlist-editor.c:436
+msgid "Could not create a netlist"
+msgstr "No se pudo crear la lista de nodos"
+
+#: ../src/schematic-view.c:768 ../src/netlist-editor.c:229
+#: ../src/netlist-editor.c:439
+msgid "An unexpected error has occurred"
+msgstr "Ha ocurrido un error inesperado"
+
+#: ../src/schematic-view.c:1313
+msgid "Untitled.netlist"
+msgstr "SinNombre.netlist"
+
+#: ../src/schematic-view.c:1504
+#, fuzzy, c-format
+msgid ""
+"<span weight=\"bold\" size=\"large\">Save changes to schematic %s before "
+"closing?</span>\n"
+"\n"
+"If you don't save, all changes since you last saved will be permanently lost."
+msgstr ""
+"<span weight=\"bold\" size=\"large\">El esquemático %s tiene cambios sin "
+"guardar</span>\n"
+"\n"
+"¿Desea guardarlos ahora?"
+
+#: ../src/schematic-view.c:1516
+msgid "Close _without Saving"
+msgstr "Cerrar _sin Guardar"
+
+#: ../src/schematic-view.c:2434 ../src/schematic-view.c:2445
+msgid "Could not create the log window"
+msgstr "No se pudo crear la ventana de informes."
+
+#: ../src/schematic-view-ui.h:38
+msgid "_New"
+msgstr "_Nuevo"
+
+#: ../src/schematic-view-ui.h:38 ../src/schematic-view-ui.h:264
+msgid "Create a new schematic"
+msgstr "Crear un nuevo esquemático"
+
+#: ../src/schematic-view-ui.h:47
+msgid "Page Properties"
+msgstr "Propiedades de la página"
+
+#: ../src/schematic-view-ui.h:48
+msgid "Set print properties"
+msgstr "Propiedades de Impresión"
+
+#: ../src/schematic-view-ui.h:56 ../src/print.c:367 ../src/plot.c:150
+#: ../src/netlist-editor.c:193
+msgid "Print Preview"
+msgstr "Vista Preliminar"
+
+#: ../src/schematic-view-ui.h:57
+msgid "Preview the schematic before printing"
+msgstr "Previsualizar el esquemático antes de imprimir"
+
+#: ../src/schematic-view-ui.h:65
+msgid "Schematic _Properties..."
+msgstr "_Propiedades del esquemático"
+
+#: ../src/schematic-view-ui.h:66
+msgid "Modify the schematic's properties"
+msgstr "Modificar las propiedades del esquemático"
+
+#: ../src/schematic-view-ui.h:95
+msgid "_Delete"
+msgstr "_Borrar"
+
+#: ../src/schematic-view-ui.h:96
+msgid "Delete the selection"
+msgstr "Borrar la selección"
+
+#: ../src/schematic-view-ui.h:102
+msgid "_Rotate"
+msgstr "_Rotar"
+
+#: ../src/schematic-view-ui.h:103
+msgid "Rotate the selection clockwise"
+msgstr "Rotar la selección en sentido horario"
+
+#: ../src/schematic-view-ui.h:109
+msgid "Flip _horizontally"
+msgstr "Espejar _horizontalmente"
+
+#: ../src/schematic-view-ui.h:110
+msgid "Flip the selection horizontally"
+msgstr "Espeja horizontalmente la selección"
+
+#: ../src/schematic-view-ui.h:116
+msgid "Flip _vertically"
+msgstr "Espejar _verticalmente"
+
+#: ../src/schematic-view-ui.h:117
+msgid "Flip the selection vertically"
+msgstr "Espeja verticalmente la selección"
+
+#: ../src/schematic-view-ui.h:124
+msgid "Select _all"
+msgstr "Seleccionar _todo"
+
+#: ../src/schematic-view-ui.h:125
+msgid "Select all objects on the sheet"
+msgstr "Selecciona todos los objetos de la hoja"
+
+#: ../src/schematic-view-ui.h:131
+msgid "Deselect a_ll"
+msgstr "Deseleccionar t_odo"
+
+#: ../src/schematic-view-ui.h:132
+msgid "Deselect the selected objects"
+msgstr "Deselecciona los objetos seleccionados"
+
+#: ../src/schematic-view-ui.h:140
+msgid "_Object Properties..."
+msgstr "Propiedades del _objeto..."
+
+#: ../src/schematic-view-ui.h:141
+msgid "Modify the object's properties"
+msgstr "Modifica las propiedades del objeto"
+
+#: ../src/schematic-view-ui.h:146
+msgid "Simulation S_ettings..."
+msgstr "Parámetros de la _Simulación"
+
+#: ../src/schematic-view-ui.h:147
+msgid "Edit the simulation settings"
+msgstr "Editar los parámetros de simulación"
+
+#: ../src/schematic-view-ui.h:162
+msgid "Run a simulation"
+msgstr "Empezar la simulación"
+
+#: ../src/schematic-view-ui.h:169
+msgid "_Generate netlist"
+msgstr "_Generar listado de nodos"
+
+#: ../src/schematic-view-ui.h:170
+msgid "Generate a netlist"
+msgstr "Generar un listado de nodos"
+
+#: ../src/schematic-view-ui.h:177
+msgid "50%"
+msgstr "50%"
+
+#: ../src/schematic-view-ui.h:178
+msgid "Set the zoom factor to 50%"
+msgstr "Factor de zoom al 50%"
+
+#: ../src/schematic-view-ui.h:179
+msgid "75%"
+msgstr "75%"
+
+#: ../src/schematic-view-ui.h:180
+msgid "Set the zoom factor to 75%"
+msgstr "Factor de zoom al 75%"
+
+#. GNOMEUIINFO_ITEM_NONE(N_("50%"),
+#. N_("Set the zoom factor to 50%"), plot_zoom_50_cmd),
+#. GNOMEUIINFO_ITEM_NONE(N_("75%"),
+#. N_("Set the zoom factor to 75%"), plot_zoom_75_cmd),
+#: ../src/schematic-view-ui.h:181 ../src/plot.c:167
+msgid "100%"
+msgstr "100%"
+
+#: ../src/schematic-view-ui.h:182 ../src/plot.c:168
+msgid "Set the zoom factor to 100%"
+msgstr "Factor de zoom al 100%"
+
+#: ../src/schematic-view-ui.h:184
+msgid "125%"
+msgstr "125%"
+
+#: ../src/schematic-view-ui.h:185
+msgid "Set the zoom factor to 125%"
+msgstr "Factor de zoom al 125%"
+
+#: ../src/schematic-view-ui.h:186
+msgid "150%"
+msgstr "150%"
+
+#: ../src/schematic-view-ui.h:187
+msgid "Set the zoom factor to 150%"
+msgstr "Factor de zoom al 150%"
+
+#: ../src/schematic-view-ui.h:196
+msgid "Zoom"
+msgstr "Zoom"
+
+#: ../src/schematic-view-ui.h:202
+msgid "_Log"
+msgstr "_Log"
+
+#: ../src/schematic-view-ui.h:202
+msgid "View the latest simulation log"
+msgstr "Ver el último log de simulación"
+
+#: ../src/schematic-view-ui.h:205
+msgid "_Node labels"
+msgstr "Etiquetas de los _nodos"
+
+#: ../src/schematic-view-ui.h:205
+msgid "Show or hide node labels"
+msgstr "Mostrar o esconder el las eqtiquetas de los nodos"
+
+#: ../src/schematic-view-ui.h:207
+msgid "N_etlist"
+msgstr "Lista d_e nodos"
+
+#: ../src/schematic-view-ui.h:208
+msgid "View the circuit netlist"
+msgstr "Ver el último listado de nodos simulado"
+
+#: ../src/schematic-view-ui.h:240
+msgid "_Contents"
+msgstr "_Contenido"
+
+#: ../src/schematic-view-ui.h:240
+msgid "Show program help"
+msgstr "Mostrar ayuda del programa"
+
+#: ../src/schematic-view-ui.h:254
+msgid "_Tools"
+msgstr "_Herramientas"
+
+#: ../src/schematic-view-ui.h:264
+msgid "New"
+msgstr "Nuevo"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open"
+msgstr "Abrir"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open an existing schematic"
+msgstr "Abrir un esquemático existente"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save"
+msgstr "Guardar"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save the schematic"
+msgstr "Guardar el esquemático"
+
+#: ../src/schematic-view-ui.h:285
+msgid "Cut the selection to the clipboard"
+msgstr "Llevar la selección al portapapeles"
+
+#: ../src/schematic-view-ui.h:288
+msgid "Copy the selection to the clipboard"
+msgstr "Copiar la selección al portapapeles"
+
+#: ../src/schematic-view-ui.h:291 ../src/schematic-view-ui.h:404
+msgid "Paste"
+msgstr "Pegar"
+
+#: ../src/schematic-view-ui.h:291
+msgid "Paste the clipboard"
+msgstr "Pegar el contenido del portapapeles"
+
+#: ../src/schematic-view-ui.h:301
+msgid "Arrow"
+msgstr "Flecha"
+
+#: ../src/schematic-view-ui.h:302
+msgid "Select, move and modify objects"
+msgstr "Seleccione, mueva y modifique objetos"
+
+#: ../src/schematic-view-ui.h:307
+msgid "Text"
+msgstr "Texto"
+
+#: ../src/schematic-view-ui.h:308
+msgid "Put text on the schematic"
+msgstr "Poner texto en el esquemático"
+
+#: ../src/schematic-view-ui.h:313
+msgid "Wires"
+msgstr "Cables"
+
+#: ../src/schematic-view-ui.h:314
+msgid "Draw wires"
+msgstr "Dibujar cables"
+
+#: ../src/schematic-view-ui.h:330
+msgid "Add Voltage Clamp"
+msgstr "Agregar punta de tensión"
+
+#: ../src/schematic-view-ui.h:331
+msgid "Add a Voltage test clamp"
+msgstr "Agrega una punta de pruebas de tensión"
+
+#: ../src/schematic-view-ui.h:336
+msgid "Simulate"
+msgstr "Simular"
+
+#: ../src/schematic-view-ui.h:337
+msgid "Run a simulation for the current schematic"
+msgstr "Lanzar una simulación del esquemático en uso"
+
+#: ../src/schematic-view-ui.h:342 ../src/schematic-view-ui.h:343
+msgid "Simulation settings"
+msgstr "Parámetros de simulación"
+
+#: ../src/schematic-view-ui.h:361
+msgid "Show or hide the part browser"
+msgstr "Mostrar o esconder el visor de componentes"
+
+#: ../src/schematic-view-ui.h:366
+msgid "Grid"
+msgstr "Cuadrícula"
+
+#: ../src/schematic-view-ui.h:367
+msgid "Turn on/off the grid"
+msgstr "Cuadrícula on/off"
+
+#: ../src/schematic-view-ui.h:372 ../src/schematic-view-ui.h:373
+msgid "Zoom in"
+msgstr "Agrandar"
+
+#: ../src/schematic-view-ui.h:378 ../src/schematic-view-ui.h:379
+msgid "Zoom out"
+msgstr "Encoger"
+
+#: ../src/schematic-view-ui.h:405
+msgid "Paste the contents of the clipboard to the sheet"
+msgstr "Pega los contenidos del portapapeles al esquemático en uso"
+
+#: ../src/print.c:297
+msgid "Print"
+msgstr "Imprimir"
+
+#: ../src/print.c:304
+msgid "Pages"
+msgstr "Páginas"
+
+#: ../src/print.c:339
+msgid "Can't get paper info! .. getting default!"
+msgstr "No se pudo obtener información del papel .. Usando default!"
+
+#: ../src/print.c:353
+msgid "Could not create font for printing."
+msgstr "No se pudo crear la fuente de texto para imprimir"
+
+#: ../src/print.c:372
+msgid "Printing failed."
+msgstr "Fallo de impresión"
+
+#: ../src/plot.c:61 ../src/plot.c:62
+msgid "Sans 10"
+msgstr "Sans 10"
+
+#: ../src/plot.c:63
+msgid "Sans 8"
+msgstr "Sans 8"
+
+#: ../src/plot.c:151
+msgid "Preview the plot before printing"
+msgstr "Previsualizar el esquemático antes de imprimir"
+
+#: ../src/plot.c:153
+msgid "Export plot"
+msgstr "Exportar gráfica"
+
+#: ../src/plot.c:154
+msgid "Show the export menu"
+msgstr "Mostrar el menú para exportar"
+
+#: ../src/plot.c:155
+msgid "Add Function"
+msgstr "Agregar Función"
+
+#: ../src/plot.c:156
+msgid "Add new function to the graph"
+msgstr "Agregar una nueva función al gráfico"
+
+#: ../src/plot.c:180
+msgid "_Preferences..."
+msgstr "_Preferencias..."
+
+#: ../src/plot.c:182
+msgid "Show crosshairs"
+msgstr "Mostrar cruces"
+
+#: ../src/plot.c:183
+msgid "_Zoom"
+msgstr "_Zoom"
+
+#: ../src/plot.c:190
+msgid "Schematic Plot"
+msgstr "Gráfica del esquemático"
+
+#: ../src/plot.c:196
+msgid "_File"
+msgstr "_Archivo"
+
+#: ../src/plot.c:197
+msgid "_Plot"
+msgstr "_Graficar"
+
+#. Simulation failed?
+#: ../src/plot.c:330
+msgid "The simulation produced no data!!\n"
+msgstr "¡¡No hay datos de la simulación!!\n"
+
+#: ../src/plot.c:340 ../src/plot.c:574
+#, c-format
+msgid "Plot - %s"
+msgstr "Gráfica - %s"
+
+#: ../src/plot.c:349
+msgid "Nodes"
+msgstr "Nodos"
+
+#: ../src/plot.c:352 ../src/plot.c:636
+msgid "Functions"
+msgstr "Funciones"
+
+#
+#: ../src/plot.c:424
+msgid "Oregano - Plot"
+msgstr "Oregano - Ventana de gráfico"
+
+#: ../src/plot.c:436 ../src/plot.c:443
+msgid "Could not create plot window."
+msgstr "No se pudo crear la ventana de gráfico de curvas."
+
+#: ../src/plot.c:659
+msgid "TRANSFER"
+msgstr "TRANSFERENCIA"
+
+#: ../src/plot.c:691 ../src/plot.c:698
+msgid "Could not create plot export window."
+msgstr "No se pudo crear la ventana de exportación."
+
+#. if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (export_png)))
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PNG;
+#. else
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PS;
+#: ../src/plot.c:719
+msgid "Save PNG"
+msgstr "Guardar PNG"
+
+#: ../src/part-browser.c:135 ../src/part-browser.c:614
+msgid ""
+"Gtk version 2.2 does not support GtkTreeModelFilter...\n"
+"Filtering disable!"
+msgstr ""
+"Gtk versión 2.2 no soporta GtkTreeModelFilter...\n"
+"Filtrado de componentes desactivado!"
+
+#: ../src/part-browser.c:187 ../src/part-browser.c:401
+msgid "Unable to load required part"
+msgstr "No se pudo cargar el componente requerido"
+
+#: ../src/part-browser.c:499 ../src/part-browser.c:507
+msgid "Could not create part browser"
+msgstr "No se pudo crear el visor de componentes"
+
+#: ../src/oregano-config.c:123
+#, c-format
+msgid "Loading %s ..."
+msgstr "Cargando %s ..."
+
+#: ../src/oregano-config.c:164
+#, c-format
+msgid "Could not read the parts library: %s "
+msgstr "No se pudo abrir la biblioteca de componentes: %s"
+
+#: ../src/oregano-config.c:166
+msgid ""
+"The file is probably corrupt. Please reinstall the parts\n"
+"library or Oregano and try again."
+msgstr ""
+"Posiblemente el archivo está corrupto. Reinstale la biblioteca\n"
+"de componentes de Oregano y pruebe de nuevo"
+
+#: ../src/engines/netlist.c:436
+msgid "No ground node. Aborting.\n"
+msgstr "No hay ningún nodo a tierra. Abortando.\n"
+
+#: ../src/engines/netlist.c:441
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have a ground node and try again."
+msgstr ""
+"Posiblemente debido a un error en el esquemático. Compruebe que exista\n"
+"un nodo a tierra y vuelva a intentarlo."
+
+#: ../src/engines/netlist.c:450
+msgid "No test clamps found. Aborting.\n"
+msgstr "No hay puntas de prueba. Abortando.\n"
+
+#: ../src/engines/netlist.c:455
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have one o more test clamps and try again."
+msgstr ""
+"Posiblemente debido a un error en el esquemático. Compruebe que haya\n"
+"una o más puntas de prueba y vuelva a intentarlo."
+
+#: ../src/engines/gnucap.c:299
+msgid "### Too few or none analysis found ###\n"
+msgstr "### No se recibieron resultados de la simulación ###\n"
+
+#: ../src/engines/gnucap.c:366
+msgid "Unable to execute GnuCap."
+msgstr "No se pudo encontrar el ejecutable de GnuCap."
+
+#: ../src/engines/gnucap.c:383
+msgid "None"
+msgstr "Ninguno"
+
+#: ../src/engines/gnucap.c:586
+msgid "time"
+msgstr "tiempo"
+
+#: ../src/engines/gnucap.c:591 ../src/engines/gnucap.c:601
+msgid "voltage"
+msgstr "tensión"
+
+#: ../src/engines/gnucap.c:596
+msgid "frequency"
+msgstr "frecuencia"
+
+#: ../src/engines/gnucap.c:645
+msgid "Unknown analysis"
+msgstr "Análisis desconocido"
+
+#: ../src/engines/gnucap.c:693
+msgid "abort"
+msgstr "abortar"
+
+#: ../src/engines/engine.c:32
+msgid "Operating Point"
+msgstr "Punto de operación"
+
+#: ../src/engines/engine.c:33
+msgid "Transient Analysis"
+msgstr "Análisis en el tiempo"
+
+#: ../src/engines/engine.c:34
+msgid "DC transfer characteristic"
+msgstr "Transferencia Característica en CC"
+
+#: ../src/engines/engine.c:35
+msgid "AC Analysis"
+msgstr "Análisis para CA"
+
+#: ../src/engines/engine.c:36
+msgid "Transfer Function"
+msgstr "Función de transferencia"
+
+#: ../src/engines/engine.c:37
+msgid "Distortion Analysis"
+msgstr "Análisis de la distorsión"
+
+#: ../src/engines/engine.c:38
+msgid "Noise Analysis"
+msgstr "Análisis de ruido"
+
+#: ../src/engines/engine.c:39
+msgid "Pole-Zero Analysis"
+msgstr "Análisis de polos y ceros"
+
+#: ../src/engines/engine.c:40
+msgid "Sensitivity Analysis"
+msgstr "Análisis de Sensibilidad"
+
+#: ../src/engines/engine.c:41
+msgid "Unknown Analysis"
+msgstr "Análisis desconocido"
+
+#: ../src/netlist-editor.c:172
+#, c-format
+msgid "Netlist for %s"
+msgstr "Lista de nodos para %s"
+
+#: ../src/netlist-editor.c:173
+#, c-format
+msgid "Author : %s"
+msgstr "Autor : %s"
+
+#: ../src/netlist-editor.c:186
+msgid "Page %N of %Q"
+msgstr "Página %N de %Q"
+
+#: ../src/netlist-editor.c:238 ../src/netlist-editor.c:274
+#, c-format
+msgid "The file %s could not be saved"
+msgstr "No se pudo guardar el archivo %s"
+
+#: ../src/netlist-editor.c:239 ../src/netlist-editor.c:275
+msgid "Could not save temporary netlist file"
+msgstr "No se pudo guardar el archivo temporal con la lista de nodos"
+
+#: ../src/netlist-editor.c:311
+msgid "Could not create the netlist dialog"
+msgstr "No se pudo crear el diálogo dela lista de nodos"
+
+#. gettext support
+#: ../src/netlist-editor.c:390
+#, c-format
+msgid "The file %s could not be found."
+msgstr "No se puedo encontrar el archivo %s."
+
+#: ../src/netlist-editor.c:391
+msgid "Could not find the required file"
+msgstr "No se pudo encontrar el archivo especificado"
+
+#: ../src/main.c:107
+msgid "Enables some debugging functions"
+msgstr "Habilita algunas funciones de depuración"
+
+#: ../src/main.c:107
+msgid "LEVEL"
+msgstr "NIVEL"
+
+#: ../src/main.c:132
+msgid ""
+"You seem to be running Oregano without\n"
+"having it installed properly on your system.\n"
+"\n"
+"Please install Oregano and try again."
+msgstr ""
+"Parece que está ejecutando Oregano sin\n"
+"haberlo instalado correctamente en su sistema.\n"
+"\n"
+"Por favor instálelo correctamete e intente de nuevo"
+
+#: ../src/main.c:155
+msgid ""
+"Could not find a parts library.\n"
+"\n"
+"This is probably due to a faulty installation\n"
+"of Oregano. Please check your installation."
+msgstr ""
+"No se pudo encontrar la biblioteca de componentes.\n"
+"\n"
+"Es probable que sea debido a una instalación errónea\n"
+"de Oregano. Por favor revise su instalación."
+
+#: ../src/main.c:212
+msgid "Welcome to Oregano"
+msgstr "Bienvenido a Oregano"
+
+#: ../src/load-schematic.c:261
+msgid "Bad file format."
+msgstr "Formato de archivo inválido."
+
+#: ../src/load-schematic.c:271
+msgid "Unknown parser error."
+msgstr "Error en el intérprete."
+
+#: ../src/load-library.c:149
+#, c-format
+msgid "Could not find the requested symbol: %s\n"
+msgstr "No se pudo encontrar el sí­mbolo deseado: %s\n"
+
+#: ../src/load-library.c:165
+#, c-format
+msgid "Could not find the requested part: %s\n"
+msgstr "No se pudo encontrar el componente deseado: %s\n"
+
+#: ../src/file.c:50 ../src/file.c:90
+msgid "Oregano Files"
+msgstr "Archivos de Oregano"
+
+#: ../src/file.c:52 ../src/file.c:92
+msgid "All Files"
+msgstr "Todos los archivos"
+
+#: ../src/file.c:55
+msgid "Open File"
+msgstr "Abrir archivo"
+
+#: ../src/file.c:95
+msgid "Save File"
+msgstr "Guardar"
+
+#: ../src/file.c:145
+msgid "Netlist File"
+msgstr "Archivo netlist"
+
+#: ../src/file.c:221
+msgid "Open file"
+msgstr "Abrir archivo"
+
+#: ../src/file.c:271
+msgid "Save schematic as"
+msgstr "Guardar esquemático como"
+
+#: ../src/file.c:336
+msgid "Netlist filename"
+msgstr "Nombre del archivo netlist"
+
+#: ../src/dialogs.c:126
+msgid ""
+"(c) 2003-2006 LUGFi\n"
+"(c) 1999-2001 Richard Hult"
+msgstr ""
+"(c) 2003-2006 LUGFi\n"
+"(c) 1999-2001, Richard Hult"
+
+#: ../src/dialogs.c:141
+msgid "Schematic capture and circuit simulation.\n"
+msgstr "Preparación de esquemáticos y simulación de circuitos.\n"
+
+#: ../src/model/schematic.c:584
+#, c-format
+msgid "File %s does not exists."
+msgstr "El archivo %s no existe."
+
+#: ../src/model/schematic.c:592 ../src/model/schematic.c:630
+#, c-format
+msgid "Unknown file format for %s."
+msgstr "Formato desconocido para %s."
+
+#: ../src/model/schematic.c:611
+msgid "Load fails!."
+msgstr "¡Falló la carga!"
+
+#: ../src/plot-add-function.c:48
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this"
+msgstr ""
+"No se pudo encontrar el archivo %s. Puede ser que sea necesario reinstalar "
+"Oregano para solucionarlo."
+
+#: ../src/plot-add-function.c:50 ../src/plot-add-function.c:57
+msgid "Could not create plot window"
+msgstr "No se pudo crear la ventana de gráfico de curvas."
+
+#~ msgid "_View netlist"
+#~ msgstr "_Ver lista de nodos"
+
+#~ msgid "View a netlist"
+#~ msgstr "Ver la lista de nodos del esquemático"
+
+#~ msgid "View plot"
+#~ msgstr "Ver gráficas"
+
+#~ msgid "View plot "
+#~ msgstr "Ver gráfica "
+
+#~ msgid "Problem in transient analysis"
+#~ msgstr "Problema en el análisis en el tiempo"
+
+#~ msgid "Start time must be less than stop time."
+#~ msgstr "El momento de inicio debe ser anterior que al de finalización"
+
+#~ msgid "Could not find the simulation executable"
+#~ msgstr "No se pudo encontrar el programa de simulación"
+
+#~ msgid "This probably means that you have not configured Oregano properly."
+#~ msgstr "Posiblemente sea debido a que no tiene bien configurado Oregano."
+
+#~ msgid "You have not entered a simulation executable"
+#~ msgstr "No se ha configurado un programa de simulación"
+
+#~ msgid ""
+#~ "Please choose Settings and specify which program to use for simulations."
+#~ msgstr ""
+#~ "Por favor vaya a Propiedades y especifique el programa que se debe usar "
+#~ "para simular."
+
+#~ msgid "Could't generate temp file!!\n"
+#~ msgstr "No se pudo generar el archivo temporal.\n"
+
+#~ msgid "Possibly due an I/O error."
+#~ msgstr "Posiblemente debido a un error de entrada/salida."
+
+#~ msgid "Name: "
+#~ msgstr "Nombre: "
+
+#~ msgid "Value: "
+#~ msgstr "Valor: "
+
+#~ msgid "GnuCap"
+#~ msgstr "GnuCap"
+
+#~ msgid "NgSpice"
+#~ msgstr "NgSpice"
+
+#~ msgid "Parser"
+#~ msgstr "Intérprete"
+
+#~ msgid "<b>Format</b>"
+#~ msgstr "<b>Formato</b>"
+
+#~ msgid "<b>Size</b>"
+#~ msgstr "<b>Tamaño</b>"
+
+#~ msgid "Height : "
+#~ msgstr "Alto : "
+
+#~ msgid "Plot Export"
+#~ msgstr "Exportar gráfica"
+
+#~ msgid "Portable Network Graphics (png)"
+#~ msgstr "Portable Network Graphics (png)"
+
+#~ msgid "Postscript (ps)"
+#~ msgstr "Postscript (ps)"
+
+#~ msgid "Width : "
+#~ msgstr "Ancho : "
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the required file:\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">No se pudo encontrar el archivo "
+#~ "especificado:\n"
+#~ "</span>%s\n"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the required file:</"
+#~ "span>\n"
+#~ "%s"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"xlarge\">No se pudo encontrar el archivo "
+#~ "especificado:</span>\n"
+#~ "%s"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not load file.</span>\n"
+#~ "\n"
+#~ "%s"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">No se pudo cargar el archivo</"
+#~ "span>\n"
+#~ "\n"
+#~ "%s"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not save Schematic file\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">No su pudo guardar el archivo del "
+#~ "esquemático\n"
+#~ "</span>%s\n"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create a netlist</span>\n"
+#~ "\n"
+#~ "%s"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">No se pudo generar la lista de "
+#~ "nodos</span>\n"
+#~ "\n"
+#~ "%s"
+
+#~ msgid "<span weight=\"bold\" size=\"x-large\">Unspected error!!!</span>"
+#~ msgstr "<span weight=\"bold\" size=\"x-large\">Error no esperado!!!</span>"
+
+#~ msgid "<span weight=\"bold\">Could not create log window.</span>"
+#~ msgstr "<span weight=\"bold\">No puede crear una ventana de log.</span>"
+
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create settings dialog.</"
+#~ "span>"
+#~ msgstr ""
+#~ "<span size=\"x-large\" weigth=\"bold\">No se pudo crear un diálogo de "
+#~ "propiedades.</span>"
+
+#~ msgid ""
+#~ "<span size=\"x-large\" weigth=\"bold\">Transient analysis</span>\n"
+#~ "\n"
+#~ "Start time must be less than stop time."
+#~ msgstr ""
+#~ "<span size=\"x-large\" weigth=\"bold\">Análisis en el tiempo</span>\n"
+#~ "\n"
+#~ "El tiempo de inicio debe ser menor que el tiempo final."
+
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create simulation "
+#~ "settings dialog.</span>"
+#~ msgstr ""
+#~ "<span size=\"x-large\" weight=\"bold\">No se pudo crear el diálogo "
+#~ "depropiedades.</span>"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create simulation dialog."
+#~ "</span>"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">No se pudo crear el diálogo de "
+#~ "simulación.</span>"
+
+#~ msgid ""
+#~ "<span weight=\"bold\">Could not find the required file:\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "<span weight=\"bold\">No se pudo encontrar el archivo especificado:\n"
+#~ "</span>%s\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "<span weight=\"bold\">Could not create textbox properties dialog.</span>"
+#~ msgstr ""
+#~ "<span weight=\"bold\">No se pudo crear el diálogo de propiedades del "
+#~ "cuadro de texto.</span>"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not save temporary netlist "
+#~ "file:\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">No se pudo generar lista de "
+#~ "nodotemporal:\n"
+#~ "</span>%s\n"
+
+#~ msgid "window"
+#~ msgstr "ventana2"
+
+#~ msgid "No data for the Simulation !!\n"
+#~ msgstr "¡¡No hay datos de la simulación!!\n"
+
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create simulation "
+#~ "settings dialog.</sapn>"
+#~ msgstr ""
+#~ "<span size=\"x-large\" weight=\"bold\">No se pudo crear el diálogo de "
+#~ "propiedades.</span>"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "(0, 0)"
+#~ msgstr "(0, 0)"
+
+#~ msgid "s"
+#~ msgstr "s"
+
+#~ msgid "Hz"
+#~ msgstr "Hz"
+
+#~ msgid "A"
+#~ msgstr "A"
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "./oregano_parser.pl"
+#~ msgstr "./oregano_parser.pl"
+
+#~ msgid "Oregano"
+#~ msgstr "Oregano"
+
+#~ msgid "ABCDEFGHIJK abcdefghi"
+#~ msgstr "ABCDEFGHIJK abcdefghi"
+
+#~ msgid "200%"
+#~ msgstr "200%"
+
+#~ msgid "Set the zoom factor to 200%"
+#~ msgstr "Factor de zoom al 200%"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create a netlist</span>\n"
+#~ "\n"
+#~ "Possibly due an I/O error.</span>"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">No se pudo crear el archivo de "
+#~ "netlist</span>\n"
+#~ "\n"
+#~ "Posiblemente por un error de E/S.</span>"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create a netlist</span>\n"
+#~ "\n"
+#~ "Possibly dueto a faulty circuit schematic. Please check that\n"
+#~ "you have one o more test clamps and try again."
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">No se pudo crear el listado de "
+#~ "nodos</span>\n"
+#~ "\n"
+#~ "Posiblemente debido a un fallo en el esquemático. Comprueba que exista "
+#~ "algún\n"
+#~ "nodo a tierra y pruebe de nuevo."
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create a netlist</span>\n"
+#~ "\n"
+#~ "Possibly due an I/O error."
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">No se pudo generar lista de nodos</"
+#~ "span>\n"
+#~ "\n"
+#~ "Posible error de E/S."
+
+#~ msgid "Library: "
+#~ msgstr "Biblioteca:"
+
+#~ msgid "Preview"
+#~ msgstr "Vista previa"
+
+#~ msgid "part_browser"
+#~ msgstr "part_browser"
+
+#~ msgid "Edit part properties"
+#~ msgstr "Editar las propiedades del componente"
+
+#~ msgid "Commets"
+#~ msgstr "Comentarios"
+
+#~ msgid "dialog2"
+#~ msgstr "dialog2"
+
+#~ msgid "label"
+#~ msgstr "etiqueta2"
+
+#~ msgid "-adobe-helvetica-bold-r-normal-*-12-*-*-*-*-*-*-*"
+#~ msgstr "-adobe-helvetica-bold-r-normal-*-12-*-*-*-*-*-*-*"
+
+#~ msgid "-adobe-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*"
+#~ msgstr "-adobe-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*"
+
+#~ msgid "-adobe-helvetica-medium-r-normal-*-8-*-*-*-*-*-*-*"
+#~ msgstr "-adobe-helvetica-medium-r-normal-*-8-*-*-*-*-*-*-*"
+
+#~ msgid "_Close"
+#~ msgstr "_Cerrar"
+
+#~ msgid "Print Schematic"
+#~ msgstr "Imprimir esquemático"
+
+#~ msgid "Print preview"
+#~ msgstr "Vista Preliminar"
+
+#~ msgid "Scaling"
+#~ msgstr "Escalado"
+
+#~ msgid "Paper Size"
+#~ msgstr "Tamaño del papel"
+
+#~ msgid "Warning"
+#~ msgstr "Aviso"
+
+#~ msgid "Schematic %s has unsaved changes, save them?"
+#~ msgstr "El esquemático %s ha cambiado, ¿quiere guardar los cambios?"
+
+#~ msgid "Schematic has unsaved changes, save them?"
+#~ msgstr "El esquemático ha cambiado, ¿quiere guardar los cambios?"
+
+#~ msgid "View the latest plot"
+#~ msgstr "Ver la última gráfica"
+
+#~ msgid "Undo"
+#~ msgstr "Deshacer"
+
+#~ msgid "Voltmeters"
+#~ msgstr "Voltímetros"
+
+#~ msgid "Enable/disable voltmeters"
+#~ msgstr "Habilita/Deshabilita voltímetros"
+
+#~ msgid "label10"
+#~ msgstr "label10"
+
+#, fuzzy
+#~ msgid "Default"
+#~ msgstr "Por omisión\n"
+
+#~ msgid "Spice Path: "
+#~ msgstr "Ruta de Spice: "
+
+#~ msgid "Data"
+#~ msgstr "Datos"
+
+#~ msgid "Library Path: "
+#~ msgstr "Librería de componentes:"
+
+#~ msgid "Model Path: "
+#~ msgstr "Ruta de Modelos:"
+
+#~ msgid "Start time: "
+#~ msgstr "Tiempo de inicio: "
+
+#~ msgid "Stop time: "
+#~ msgstr "Tiempo final: "
+
+#~ msgid "Step size: "
+#~ msgstr "Paso temporar: "
+
+#~ msgid "Enable"
+#~ msgstr "Habilitar"
+
+#~ msgid "Use"
+#~ msgstr "Usar"
+
+#~ msgid "enable"
+#~ msgstr "habilitar"
+
+#~ msgid "stop"
+#~ msgstr "parar"
+
+#~ msgid ""
+#~ "DEC\n"
+#~ "OCT\n"
+#~ "LIN\n"
+#~ msgstr ""
+#~ "DEC\n"
+#~ "OCT\n"
+#~ "LIN\n"
+
+#~ msgid "AC"
+#~ msgstr "AC"
+
+#~ msgid "New Value"
+#~ msgstr "Nuevo valor"
+
+#~ msgid "Accept"
+#~ msgstr "Aceptar"
+
+#~ msgid "Edit text label"
+#~ msgstr "Editar el texto de la etiqueta"
+
+#~ msgid "An electrical engineering tool.\n"
+#~ msgstr "Una herramienta para la Ingeniería Electrónica\n"
+
+#~ msgid ""
+#~ "To place the selected part, either press the 'Place' button, press the "
+#~ "key 'l', or drag the preview to the sheet."
+#~ msgstr ""
+#~ "Para insertar el componente escogido, presione el botón 'Insertar', la "
diff --git a/po/fr.po b/po/fr.po
new file mode 100644
index 0000000..b49cd35
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,1559 @@
+# Oregano French translation
+# Copyright (C) 2000-2005 Free Software Foundation, Inc.
+# David Monniaux <monniaux@arbouse.ens.fr>, 2000.
+# Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, 2005
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Oregano 0.69\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-12-11 16:04+0100\n"
+"PO-Revision-Date: 2009-11-08 10:34+0100\n"
+"Last-Translator: Marc Lorber <linux-lorber@club-internet.fr>\n"
+"Language-Team: French <gnomefr@traduc.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/oregano.desktop.in.in.h:1
+msgid "Electrical Engineering Tool"
+msgstr "Outil d'ingéniérie éléctrique"
+
+#: ../data/oregano.desktop.in.in.h:2
+msgid "Oregano"
+msgstr "Oregano"
+
+#: ../data/oregano.desktop.in.in.h:3
+msgid "Schematic, capture and simulation of electronic circuits"
+msgstr "Permet de saisir et de simuler des circuits éléctroniques."
+
+#: ../data/mime/oregano.xml.in.h:1
+msgid "Schematic file"
+msgstr "Fichier définissant un schéma éléctrique"
+
+#: ../data/glade/clamp-properties-dialog.glade.h:1
+msgid "<b>AC Analysis Options</b>"
+msgstr "<b>Options de l'analyse AC</b>"
+
+#: ../data/glade/clamp-properties-dialog.glade.h:2
+msgid "<b>Clamp Reference</b>"
+msgstr "<b>Référence du point de test</b>"
+
+#: ../data/glade/clamp-properties-dialog.glade.h:3
+msgid "<b>Type</b>"
+msgstr "<b>Type</b>"
+
+#: ../data/glade/clamp-properties-dialog.glade.h:4
+msgid "Current"
+msgstr "Courant"
+
+#: ../data/glade/clamp-properties-dialog.glade.h:5
+msgid "Edit Clamp properties"
+msgstr "Éditer les propriétés du point de test"
+
+#: ../data/glade/clamp-properties-dialog.glade.h:6
+msgid "Imaginary part"
+msgstr "Partie imaginaire"
+
+#: ../data/glade/clamp-properties-dialog.glade.h:7
+msgid "Magnitude"
+msgstr "Amplitude"
+
+#: ../data/glade/clamp-properties-dialog.glade.h:8
+msgid "Phase"
+msgstr "Phase"
+
+#: ../data/glade/clamp-properties-dialog.glade.h:9
+msgid "Real part"
+msgstr "Partie réelle"
+
+#: ../data/glade/clamp-properties-dialog.glade.h:10
+msgid "Use decibel scale"
+msgstr "Utiliser une échelle en décibel"
+
+#: ../data/glade/clamp-properties-dialog.glade.h:11
+msgid "Voltage"
+msgstr "Tension"
+
+#: ../data/glade/export.glade.h:1 ../data/glade/properties.glade.h:1
+#: ../data/glade/textbox-properties-dialog.glade.h:1
+msgid " "
+msgstr " "
+
+#: ../data/glade/export.glade.h:2
+msgid "..."
+msgstr "..."
+
+#: ../data/glade/export.glade.h:3
+msgid "<b>Background</b>"
+msgstr "<b>Fond</b>"
+
+#: ../data/glade/export.glade.h:4
+msgid "<b>Format</b>"
+msgstr "<b>Format</b>"
+
+#: ../data/glade/export.glade.h:5
+msgid "<b>Output</b>"
+msgstr "<b>Sortie</b>"
+
+#: ../data/glade/export.glade.h:6
+msgid "<b>Size</b>"
+msgstr "<b>Taille</b>"
+
+#: ../data/glade/export.glade.h:7
+msgid "Black"
+msgstr "Noir"
+
+#: ../data/glade/export.glade.h:8
+msgid "Black and White"
+msgstr "Blanc et noir"
+
+#: ../data/glade/export.glade.h:9
+msgid "Color"
+msgstr "Couleur"
+
+#: ../data/glade/export.glade.h:10
+msgid "Export ..."
+msgstr "Exporter..."
+
+#: ../data/glade/export.glade.h:11
+msgid "Height : "
+msgstr "Hauteur : "
+
+#: ../data/glade/export.glade.h:12
+msgid "Transparent"
+msgstr "Transparent"
+
+#: ../data/glade/export.glade.h:13
+msgid "White"
+msgstr "Blanc"
+
+#: ../data/glade/export.glade.h:14
+msgid "Width : "
+msgstr "Largeur :"
+
+#: ../data/glade/log-window.glade.h:1
+msgid "Clear"
+msgstr "Effacer"
+
+#: ../data/glade/log-window.glade.h:2
+msgid "Oregano Log Window"
+msgstr "Fenêtre du journal d'Oregano"
+
+#: ../data/glade/part-browser.glade.h:1
+msgid "<b>Preview</b>"
+msgstr "<b>Aperçu</b>"
+
+#: ../data/glade/part-browser.glade.h:2
+msgid "Library:"
+msgstr "Bibliothèque :"
+
+#: ../data/glade/part-browser.glade.h:3
+msgid "Parts"
+msgstr "Composants"
+
+#: ../data/glade/part-browser.glade.h:4
+msgid "Place"
+msgstr "Placer"
+
+#: ../data/glade/part-browser.glade.h:5
+msgid "Press this button to place the selected part"
+msgstr "Presser ce bouton pour placer le composant sélectionné"
+
+#: ../data/glade/part-browser.glade.h:6
+msgid "Search:"
+msgstr "Rechercher :"
+
+#: ../data/glade/part-browser.glade.h:7
+msgid "Select which library to use"
+msgstr "Choisir la bibliothèque à utiliser"
+
+#: ../data/glade/part-properties-dialog.glade.h:1
+msgid "General"
+msgstr "Vue générale"
+
+#: ../data/glade/part-properties-dialog.glade.h:2
+#: ../data/glade/settings.glade.h:12
+msgid "Model"
+msgstr "Modèle"
+
+#: ../data/glade/part-properties-dialog.glade.h:3
+msgid "Part Properties"
+msgstr "Propriétés du composant"
+
+#: ../data/glade/plot-add-function.glade.h:1 ../data/glade/settings.glade.h:1
+msgid "\n"
+msgstr "\n"
+
+#: ../data/glade/plot-add-function.glade.h:3
+msgid "<b>Function Type</b>"
+msgstr "<b>Type de fonction</b>"
+
+#: ../data/glade/plot-add-function.glade.h:4
+msgid "<b>Values</b>"
+msgstr "<b>Valeurs</b>"
+
+#: ../data/glade/plot-add-function.glade.h:5 ../src/plot.c:153
+msgid "Add Function"
+msgstr "Ajouter la fonction"
+
+#: ../data/glade/plot-add-function.glade.h:6
+msgid "First Operand"
+msgstr "Premier opérateur"
+
+#: ../data/glade/plot-add-function.glade.h:7
+msgid "Second Operand"
+msgstr "Seconde opérateur"
+
+#: ../data/glade/plot-add-function.glade.h:8
+msgid ""
+"Subtraction\n"
+"Division"
+msgstr ""
+"Soustraction\n"
+"Division"
+
+#: ../data/glade/plot-window.glade.h:1
+msgid "<b>Plot</b>"
+msgstr "<b>Tracé</b>"
+
+#: ../data/glade/plot-window.glade.h:2
+msgid "<b>Variables</b>"
+msgstr "<b>Variables</b>"
+
+#: ../data/glade/plot-window.glade.h:3
+msgid "Plot"
+msgstr "Tracé"
+
+#: ../data/glade/plot-window.glade.h:4
+msgid "Region"
+msgstr "Vue locale"
+
+#: ../data/glade/plot-window.glade.h:5
+msgid "Shift"
+msgstr "Déplacement"
+
+#: ../data/glade/print-options.glade.h:1
+msgid "<b>Colors</b>"
+msgstr "<b>Couleurs</b>"
+
+#: ../data/glade/print-options.glade.h:2
+msgid "<b>General</b>"
+msgstr "<b>Général</b>"
+
+#: ../data/glade/print-options.glade.h:3
+msgid "Background"
+msgstr "Fond"
+
+#: ../data/glade/print-options.glade.h:4
+msgid "Components"
+msgstr "Composants"
+
+#: ../data/glade/print-options.glade.h:5
+msgid "Labels"
+msgstr "Étiquettes"
+
+#: ../data/glade/print-options.glade.h:6 ../src/schematic-view-menu.h:90
+msgid "Text"
+msgstr "Texte"
+
+#: ../data/glade/print-options.glade.h:7
+msgid "Use colors"
+msgstr "Utilisation de la couleur"
+
+#: ../data/glade/print-options.glade.h:8
+msgid "Wires"
+msgstr "Fils"
+
+#: ../data/glade/properties.glade.h:2
+msgid "<b>Comments</b>"
+msgstr "<b>Commentaires</b>"
+
+#: ../data/glade/properties.glade.h:3
+msgid "Author:"
+msgstr "Auteur :"
+
+#: ../data/glade/properties.glade.h:4
+msgid "Properties"
+msgstr "Propriétés"
+
+#: ../data/glade/properties.glade.h:5
+msgid "Title:"
+msgstr "Titre :"
+
+#: ../data/glade/settings.glade.h:3
+msgid "<b>Data Paths</b>"
+msgstr "<b>Chemins vers les données</b>"
+
+#: ../data/glade/settings.glade.h:4
+msgid "<b>Engine</b>"
+msgstr "<b>Moteur</b>"
+
+#: ../data/glade/settings.glade.h:5
+msgid "<b>Executable Path</b>"
+msgstr "<b>Chemin vers l'exécutable</b>"
+
+#: ../data/glade/settings.glade.h:6
+msgid "<b>File Format</b>"
+msgstr "<b>Format de fichier</b>"
+
+#: ../data/glade/settings.glade.h:7
+msgid "<b>User Interface</b>"
+msgstr "<b>Interface utilisateur</b>"
+
+#: ../data/glade/settings.glade.h:8
+msgid "Automatically show log windows after simulation"
+msgstr "Afficher automatiquement la fenêtre de journal après la simulation"
+
+#: ../data/glade/settings.glade.h:9
+msgid "Compress saved files"
+msgstr "Compresser les fichiers lors de l'enregistrement"
+
+#: ../data/glade/settings.glade.h:10
+msgid "Grid size[px] "
+msgstr "Pas de la grille [pixel] "
+
+#: ../data/glade/settings.glade.h:11
+msgid "Library"
+msgstr "Bibliothèque"
+
+#: ../data/glade/settings.glade.h:13
+msgid "Paths"
+msgstr "Chemins"
+
+#: ../data/glade/settings.glade.h:14
+msgid "Preferences"
+msgstr "Préférences"
+
+#: ../data/glade/settings.glade.h:15
+msgid "Realtime update of selection (slow)"
+msgstr "Mise à jour en temps réel de la sélection (lent)"
+
+#: ../data/glade/settings.glade.h:16
+msgid "Select A Directory"
+msgstr "Sélectionner un répertoire"
+
+#: ../data/glade/settings.glade.h:17
+msgid "Select A File"
+msgstr "Sélectionner un fichier"
+
+#: ../data/glade/settings.glade.h:18
+msgid "Show the splash screen at application startup"
+msgstr "Afficher la bannière du programme au démarrage de l'application"
+
+#: ../data/glade/settings.glade.h:19
+msgid "User Interface"
+msgstr "Interface utilisateur"
+
+#: ../data/glade/sim-settings.glade.h:1
+msgid "<b>AC</b>"
+msgstr "<b>AC</b>"
+
+#: ../data/glade/sim-settings.glade.h:2
+msgid "<b>DC Sweep</b>"
+msgstr "<b>Variation du point DC</b>"
+
+#: ../data/glade/sim-settings.glade.h:3
+msgid "<b>Fourier</b>"
+msgstr "<b>Fourier</b>"
+
+#: ../data/glade/sim-settings.glade.h:4
+msgid "<b>Transient</b>"
+msgstr "<b>Transitoire</b>"
+
+#: ../data/glade/sim-settings.glade.h:5
+msgid "Add new options"
+msgstr "Ajouter de nouvelles options"
+
+#: ../data/glade/sim-settings.glade.h:6
+msgid "Add to list"
+msgstr "Ajouter à la liste"
+
+#: ../data/glade/sim-settings.glade.h:7
+msgid "Analysis Options"
+msgstr "Options d'analyse"
+
+#: ../data/glade/sim-settings.glade.h:8
+msgid "Analysis Parameters"
+msgstr "Paramètres d'analyse"
+
+#: ../data/glade/sim-settings.glade.h:9
+msgid "DEC"
+msgstr "DÉC"
+
+#: ../data/glade/sim-settings.glade.h:10
+msgid "Frequency"
+msgstr "Fréquence"
+
+#: ../data/glade/sim-settings.glade.h:11
+msgid "LIN"
+msgstr "LIN"
+
+#: ../data/glade/sim-settings.glade.h:12
+msgid "List of outputs"
+msgstr "Liste des sorties"
+
+#: ../data/glade/sim-settings.glade.h:13
+msgid "OCT"
+msgstr "OCT"
+
+#: ../data/glade/sim-settings.glade.h:14
+msgid "Points"
+msgstr "Points"
+
+#: ../data/glade/sim-settings.glade.h:15
+msgid "Simulation Settings"
+msgstr "Paramètres de la simulation"
+
+#: ../data/glade/sim-settings.glade.h:16
+msgid "Source"
+msgstr "Source"
+
+#: ../data/glade/sim-settings.glade.h:17
+msgid "Start"
+msgstr "Début"
+
+#: ../data/glade/sim-settings.glade.h:18
+msgid "Step"
+msgstr "Pas"
+
+#: ../data/glade/sim-settings.glade.h:19
+msgid "Stop"
+msgstr "Fin"
+
+#: ../data/glade/sim-settings.glade.h:20
+msgid "Type"
+msgstr "Type"
+
+#: ../data/glade/sim-settings.glade.h:21
+msgid "Use Initial Conditions"
+msgstr "Utiliser les conditions initiales"
+
+#: ../data/glade/simulation.glade.h:1
+msgid "Progress: None"
+msgstr "Aucun avancement"
+
+#: ../data/glade/simulation.glade.h:2
+msgid "Simulation"
+msgstr "Simulation"
+
+#: ../data/glade/textbox-properties-dialog.glade.h:2
+msgid "<b>Text</b>"
+msgstr "<b>Texte</b>"
+
+#: ../data/glade/textbox-properties-dialog.glade.h:3
+msgid "Text Properties"
+msgstr "Propriétés du texte"
+
+#: ../data/glade/view-netlist.glade.h:1
+msgid "Netlist View"
+msgstr "Affichage de la liste des connexions"
+
+#: ../data/glade/view-netlist.glade.h:2 ../src/schematic-view-menu.h:65
+msgid "_Simulate"
+msgstr "_Simuler"
+
+#: ../src/sheet/part-item.c:533 ../src/sheet/part-item.c:682
+#: ../src/sheet/textbox-item.c:595 ../src/sim-settings.c:775
+#: ../src/settings.c:183 ../src/schematic-view.c:225
+#: ../src/schematic-view.c:319 ../src/schematic-view.c:2436 ../src/plot.c:431
+#: ../src/plot.c:704 ../src/part-browser.c:478 ../src/netlist-editor.c:266
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this."
+msgstr ""
+"Le fichier %s est introuvable. Vous pouvez essayer de réinstaller Oregano "
+"pour corriger ce problème."
+
+#: ../src/sheet/part-item.c:535 ../src/sheet/part-item.c:543
+#: ../src/sheet/part-item.c:684 ../src/sheet/part-item.c:692
+msgid "Could not create part properties dialog."
+msgstr "Création du dialogue des propriétés du composant impossible."
+
+#: ../src/sheet/part-item.c:732
+msgid "Designation"
+msgstr "Désignation"
+
+#: ../src/sheet/part-item.c:733
+msgid "Template"
+msgstr "Modèle"
+
+#: ../src/sheet/part-item.c:734
+msgid "Resistor"
+msgstr "Résistance"
+
+#: ../src/sheet/part-item.c:735
+msgid "Capacitor"
+msgstr "Condensateur"
+
+#: ../src/sheet/part-item.c:736
+msgid "Inductor"
+msgstr "Bobine d'induction"
+
+#: ../src/sheet/sheet-item.c:102 ../src/schematic-view-menu.h:54
+msgid "_Copy"
+msgstr "_Copier"
+
+#: ../src/sheet/sheet-item.c:103 ../src/schematic-view-menu.h:53
+msgid "C_ut"
+msgstr "Co_uper"
+
+#: ../src/sheet/sheet-item.c:104 ../src/schematic-view-menu.h:56
+msgid "_Delete"
+msgstr "_Effacer"
+
+#: ../src/sheet/sheet-item.c:104 ../src/schematic-view-menu.h:56
+msgid "Delete the selection"
+msgstr "Effacer la sélection"
+
+#: ../src/sheet/sheet-item.c:105 ../src/schematic-view-menu.h:57
+msgid "_Rotate"
+msgstr "_Pivoter"
+
+#: ../src/sheet/sheet-item.c:105 ../src/schematic-view-menu.h:57
+msgid "Rotate the selection clockwise"
+msgstr "Pivoter la sélection dans le sens des aiguilles d'une montre"
+
+#: ../src/sheet/sheet-item.c:106 ../src/schematic-view-menu.h:58
+msgid "Flip _horizontally"
+msgstr "Effectuer une symétrie _horizontale"
+
+#: ../src/sheet/sheet-item.c:106 ../src/schematic-view-menu.h:58
+msgid "Flip the selection horizontally"
+msgstr "Effectuer une symétrie horizontale de la sélection"
+
+#: ../src/sheet/sheet-item.c:107 ../src/schematic-view-menu.h:59
+msgid "Flip _vertically"
+msgstr "Effectuer une symétrie _verticale"
+
+#: ../src/sheet/sheet-item.c:107 ../src/schematic-view-menu.h:59
+msgid "Flip the selection vertically"
+msgstr "Effectuer une symétrie verticale de la sélection"
+
+#: ../src/sheet/textbox-item.c:498
+msgid "Label"
+msgstr "Étiquette"
+
+#: ../src/sheet/textbox-item.c:597 ../src/sheet/textbox-item.c:606
+#: ../src/splash.c:59 ../src/splash.c:65
+msgid "Could not create textbox properties dialog"
+msgstr "Création impossible du dialogue des propriétés des boîtes de texte"
+
+#: ../src/splash.c:57
+#, c-format
+msgid ""
+"The files %s or %s could not be found. You might need to reinstall Oregano "
+"to fix this."
+msgstr ""
+"Les fichiers %s ou %s sont introuvables. Vous devez essayer de réinstaller "
+"Oregano pour corriger ce problème."
+
+#: ../src/simulation.c:102 ../src/simulation.c:109 ../src/simulation.c:115
+msgid "Could not create simulation dialog"
+msgstr "Création impossible du dialogue de simulation"
+
+#: ../src/simulation.c:150
+#, c-format
+msgid "Progress: <b>%s</b>"
+msgstr "Avancement : <b>%s</b>"
+
+#: ../src/simulation.c:207
+msgid ""
+"<span weight=\"bold\" size=\"large\">The simulation was aborted due to an "
+"error.</span>\n"
+"\n"
+"Would you like to view the error log?"
+msgstr ""
+"<span weight=\"bold\" size=\"large\">La simulation s'est terminée "
+"prématurément à la suite d'une erreur.</span>\n"
+"\n"
+"Voulez-vous afficher le journal des erreurs ?"
+
+#: ../src/simulation.c:217
+msgid "The simulation was aborted due to an error"
+msgstr "La simulation s'est terminée prématurément à la suite d'une erreur"
+
+#: ../src/sim-settings.c:229
+msgid "Add new option"
+msgstr "Ajouter une nouvelle option"
+
+#: ../src/sim-settings.c:777 ../src/sim-settings.c:784
+#: ../src/sim-settings.c:790
+msgid "Could not create simulation settings dialog"
+msgstr "Création impossible du dialogue des paramètres de simulation"
+
+#: ../src/sim-settings.c:814
+msgid "Option"
+msgstr "Option"
+
+#: ../src/sim-settings.c:816
+msgid "Value"
+msgstr "Valeur"
+
+#: ../src/settings.c:130
+msgid "Engine <span weight=\"bold\" size=\"large\">"
+msgstr "Le moteur <span weight=\"bold\" size=\"large\">"
+
+#: ../src/settings.c:132
+msgid ""
+"</span> not found\n"
+"The engine is unable to locate the external program."
+msgstr ""
+"</span> n'a pas été trouvé.\n"
+"Le moteur « SPICE » est incapable d'accéder au programme externe"
+
+#: ../src/settings.c:133
+msgid "Warning"
+msgstr "Avertissement"
+
+#: ../src/settings.c:185 ../src/settings.c:192 ../src/settings.c:198
+msgid "Could not create settings dialog"
+msgstr "Création impossible du dialogue des paramètres"
+
+#: ../src/schematic-view.c:228 ../src/schematic-view.c:322
+msgid "Could not create properties dialog"
+msgstr "Création du dialogue des propriétés impossible"
+
+#: ../src/schematic-view.c:283
+msgid "Export to..."
+msgstr "Exporter vers..."
+
+#: ../src/schematic-view.c:429 ../src/schematic-view.c:486
+msgid "Could not load file"
+msgstr "Chargement du fichier impossible"
+
+#: ../src/schematic-view.c:501
+msgid "Unknown type of file can't open"
+msgstr "Type de fichier inconnu"
+
+#: ../src/schematic-view.c:561 ../src/schematic-view.c:1331
+#: ../src/schematic-view.c:1339
+msgid "Untitled.oregano"
+msgstr "SansTitre.oregano"
+
+#: ../src/schematic-view.c:566
+msgid "Could not save schematic file"
+msgstr "Enregistrement du fichier de schéma impossible"
+
+#: ../src/schematic-view.c:911 ../src/netlist-editor.c:180
+#: ../src/netlist-editor.c:392
+msgid "Could not create a netlist"
+msgstr "Création de la liste des connexions impossible"
+
+#: ../src/schematic-view.c:913 ../src/netlist-editor.c:184
+#: ../src/netlist-editor.c:395
+msgid "An unexpected error has occurred"
+msgstr "Une erreur inattendue s'est produite"
+
+#: ../src/schematic-view.c:1340
+msgid "Untitled.netlist"
+msgstr "SansTitre.netlist"
+
+#: ../src/schematic-view.c:1540
+#, c-format
+msgid ""
+"<span weight=\"bold\" size=\"large\">Save changes to schematic %s before "
+"closing?</span>\n"
+"\n"
+"If you don't save, all changes since you last saved will be permanently lost."
+msgstr ""
+"<span weight=\"bold\" size=\"large\">Le schéma %s comporte des modifications "
+"non enregistrées</span>\n"
+"\n"
+"Voulez-vous l'enregistrer ?"
+
+#: ../src/schematic-view.c:1552
+msgid "Close _without Saving"
+msgstr "Fermeture _sans enregistrement"
+
+#: ../src/schematic-view.c:2439 ../src/schematic-view.c:2450
+msgid "Could not create the log window"
+msgstr "Création de la fenêtre de journal impossible"
+
+#. Name, ICON, Text, CTRL, DESC, CALLBACK
+#: ../src/schematic-view-menu.h:35 ../src/plot.c:183
+msgid "_File"
+msgstr "_Fichier"
+
+#: ../src/schematic-view-menu.h:36
+msgid "_Edit"
+msgstr "_Éditer"
+
+#: ../src/schematic-view-menu.h:37
+msgid "_Tools"
+msgstr "_Outils"
+
+#: ../src/schematic-view-menu.h:38
+msgid "_View"
+msgstr "_Affichage"
+
+#: ../src/schematic-view-menu.h:39
+msgid "_Help"
+msgstr "_Aide"
+
+#: ../src/schematic-view-menu.h:40 ../src/plot.c:171
+msgid "_Zoom"
+msgstr "_Zoom"
+
+#: ../src/schematic-view-menu.h:41
+msgid "_New"
+msgstr "_Nouveau"
+
+#: ../src/schematic-view-menu.h:41
+msgid "Create a new schematic"
+msgstr "Créer un nouveau schéma"
+
+#: ../src/schematic-view-menu.h:42
+msgid "_Open"
+msgstr "_Ouvrir"
+
+#: ../src/schematic-view-menu.h:42
+msgid "Open a schematic"
+msgstr "Ouvrir un schéma"
+
+#: ../src/schematic-view-menu.h:43
+msgid "_Recent Files"
+msgstr "Fichiers _récemment modifié"
+
+#. G_CALLBACK (display_recent_files)},
+#: ../src/schematic-view-menu.h:44
+msgid "_Save"
+msgstr "_Enregistrer"
+
+#: ../src/schematic-view-menu.h:44
+msgid "Save a schematic"
+msgstr "Enregistrer le schéma"
+
+#: ../src/schematic-view-menu.h:45
+msgid "Save _As..."
+msgstr "Enregistrer _comme..."
+
+#: ../src/schematic-view-menu.h:45
+msgid "Save a schematic with other name"
+msgstr "Enregistrer le schéma sous un autre nom"
+
+#: ../src/schematic-view-menu.h:46
+msgid "Page Properties"
+msgstr "Mise en page"
+
+#: ../src/schematic-view-menu.h:46
+msgid "Set print properties"
+msgstr "Définir les propriétés de l'impression"
+
+#: ../src/schematic-view-menu.h:47
+msgid "_Print"
+msgstr "_Imprimer"
+
+#: ../src/schematic-view-menu.h:47
+msgid "Print schematic"
+msgstr "Imprimer le schéma"
+
+#: ../src/schematic-view-menu.h:48
+msgid "Print Preview"
+msgstr "Afficher l'aperçu"
+
+#: ../src/schematic-view-menu.h:48
+msgid "Preview the schematic before printing"
+msgstr "Afficher l'aperçu avant impression"
+
+#: ../src/schematic-view-menu.h:49
+msgid "Schematic Pr_operties..."
+msgstr "_Propriétés du schéma..."
+
+#: ../src/schematic-view-menu.h:49
+msgid "Modify the schematic's properties"
+msgstr "Modifier les propriétés du schéma"
+
+#: ../src/schematic-view-menu.h:50
+msgid "_Export..."
+msgstr "_Exporter..."
+
+#: ../src/schematic-view-menu.h:50
+msgid "Export schematic"
+msgstr "Exporter le schéma"
+
+#: ../src/schematic-view-menu.h:51
+msgid "_Close"
+msgstr "_Fermer"
+
+#: ../src/schematic-view-menu.h:51
+msgid "Close the current schematic"
+msgstr "Fermer la fenêtre du schéma actuel"
+
+#: ../src/schematic-view-menu.h:52
+msgid "_Quit"
+msgstr "_Quitter Oregano"
+
+#: ../src/schematic-view-menu.h:52
+msgid "Close all schematics"
+msgstr "Fermer toutes les fenêtres"
+
+#: ../src/schematic-view-menu.h:55
+msgid "_Paste"
+msgstr "Col_ler"
+
+#: ../src/schematic-view-menu.h:60
+msgid "Select _all"
+msgstr "Sélectionner _tout"
+
+#: ../src/schematic-view-menu.h:60
+msgid "Select all objects on the sheet"
+msgstr "Sélectionner tous les objets de la feuille"
+
+#: ../src/schematic-view-menu.h:61
+msgid "Select _none"
+msgstr "Ne _rien sélectionner"
+
+#: ../src/schematic-view-menu.h:61
+msgid "Deselect the selected objects"
+msgstr "Désélectionner les objets sélectionnés"
+
+#: ../src/schematic-view-menu.h:62
+msgid "_Object Properties..."
+msgstr "_Propriétés de l'objet..."
+
+#: ../src/schematic-view-menu.h:62
+msgid "Modify the object's properties"
+msgstr "Modifier les propriétés de l'objet"
+
+#: ../src/schematic-view-menu.h:63
+msgid "Simulation S_ettings..."
+msgstr "_Paramètres de la simulation..."
+
+#: ../src/schematic-view-menu.h:63
+msgid "Edit the simulation settings"
+msgstr "Modifier les paramètres de la simulation"
+
+#: ../src/schematic-view-menu.h:64
+msgid "_Preferences"
+msgstr "_Préférences"
+
+#: ../src/schematic-view-menu.h:64
+msgid "Edit Oregano settings"
+msgstr "Modifier les paramètres d'Oregano"
+
+#: ../src/schematic-view-menu.h:65
+msgid "Run a simulation"
+msgstr "Lancer une simulation"
+
+#: ../src/schematic-view-menu.h:66
+msgid "_Generate netlist"
+msgstr "_Créer la liste des connexions"
+
+#: ../src/schematic-view-menu.h:66
+msgid "Generate a netlist"
+msgstr "Créer la liste des connexions"
+
+#: ../src/schematic-view-menu.h:67
+msgid "_Log"
+msgstr "_Journal"
+
+#: ../src/schematic-view-menu.h:67
+msgid "View the latest simulation log"
+msgstr "Afficher le dernier journal de la simulation"
+
+#: ../src/schematic-view-menu.h:68
+msgid "N_etlist"
+msgstr "Fichier de liste des _connexions"
+
+#: ../src/schematic-view-menu.h:68
+msgid "View the circuit netlist"
+msgstr "Affichage de la liste des connexions (« netlist »)"
+
+#: ../src/schematic-view-menu.h:69
+msgid "_About"
+msgstr "_A propos"
+
+#: ../src/schematic-view-menu.h:69
+msgid "About Oregano"
+msgstr "A propos d'Oregano"
+
+#: ../src/schematic-view-menu.h:70
+msgid "Zoom _In"
+msgstr "Zoom _+"
+
+#: ../src/schematic-view-menu.h:70
+msgid "Zoom in"
+msgstr "Zoom +"
+
+#: ../src/schematic-view-menu.h:71
+msgid "Zoom _Out"
+msgstr "Zoom _-"
+
+#: ../src/schematic-view-menu.h:71
+msgid "Zoom out"
+msgstr "Zoom -"
+
+#: ../src/schematic-view-menu.h:75
+msgid "_Node labels"
+msgstr "_Afficher les étiquettes du noeud"
+
+#: ../src/schematic-view-menu.h:75
+msgid "Show or hide node labels"
+msgstr "Montrer ou cacher les étiquettes de noeuds"
+
+#: ../src/schematic-view-menu.h:76
+msgid "_Parts"
+msgstr "_Composants"
+
+#: ../src/schematic-view-menu.h:76
+msgid "Show or hide the part browser"
+msgstr "Montrer ou cacher le navigateur de composants"
+
+#: ../src/schematic-view-menu.h:77
+msgid "_Grid"
+msgstr "_Grille"
+
+#: ../src/schematic-view-menu.h:77
+msgid "Show or hide the grid"
+msgstr "Présenter ou cacher la grille d'aide"
+
+#: ../src/schematic-view-menu.h:81
+msgid "Set the zoom factor to 50%"
+msgstr "Régler le facteur d'agrandissement à 50 %"
+
+#: ../src/schematic-view-menu.h:82
+msgid "Set the zoom factor to 75%"
+msgstr "Régler le facteur d'agrandissement à 75 %"
+
+#: ../src/schematic-view-menu.h:83 ../src/plot.c:162
+msgid "Set the zoom factor to 100%"
+msgstr "Régler le facteur d'agrandissement à 100 %"
+
+#: ../src/schematic-view-menu.h:84
+msgid "Set the zoom factor to 125%"
+msgstr "Régler le facteur d'agrandissement à 125 %"
+
+#: ../src/schematic-view-menu.h:85
+msgid "Set the zoom factor to 150%"
+msgstr "Régler le facteur d'agrandissement à 150 %"
+
+#: ../src/schematic-view-menu.h:89
+msgid "Arrow"
+msgstr "Flèche"
+
+#: ../src/schematic-view-menu.h:89
+msgid "Select, move and modify objects"
+msgstr "Sélectionner, déplacer et modifier les objets"
+
+#: ../src/schematic-view-menu.h:90
+msgid "Put text on the schematic"
+msgstr "Ajouter du texte au schéma"
+
+#: ../src/schematic-view-menu.h:91
+msgid "Wire"
+msgstr "Fil"
+
+#: ../src/schematic-view-menu.h:91
+msgid "Draw wires %"
+msgstr "Tracer des fils %"
+
+#: ../src/schematic-view-menu.h:92
+msgid "Clamp"
+msgstr "Point de mesure"
+
+#: ../src/schematic-view-menu.h:92
+msgid "Add voltage clamp"
+msgstr "Ajouter un point de mesure"
+
+#: ../src/plot.c:61 ../src/plot.c:62
+msgid "Sans 10"
+msgstr "Sans 10"
+
+#: ../src/plot.c:63
+msgid "Sans 8"
+msgstr "Sans 8"
+
+#: ../src/plot.c:154
+msgid "Add new function to the graph"
+msgstr "Ajouter une nouvelle fonction au graphe"
+
+#: ../src/plot.c:161
+msgid "100%"
+msgstr "100 %"
+
+#: ../src/plot.c:168
+msgid "_Preferences..."
+msgstr "_Préférences"
+
+#: ../src/plot.c:170
+msgid "Show crosshairs"
+msgstr "Afficher le curseur"
+
+#: ../src/plot.c:178
+msgid "Schematic Plot"
+msgstr "Tracé du schéma"
+
+#. Simulation failed?
+#: ../src/plot.c:318
+msgid "The simulation produced no data!!\n"
+msgstr "Aucun résultat produit par la simulation\n"
+
+#: ../src/plot.c:328 ../src/plot.c:568
+#, c-format
+msgid "Plot - %s"
+msgstr "Tracé - %s"
+
+#: ../src/plot.c:337
+msgid "Nodes"
+msgstr "Noeuds"
+
+#: ../src/plot.c:340 ../src/plot.c:648
+msgid "Functions"
+msgstr "Fonctions"
+
+#: ../src/plot.c:420
+msgid "Oregano - Plot"
+msgstr "Oregano - Tracé"
+
+#: ../src/plot.c:433 ../src/plot.c:440
+msgid "Could not create plot window."
+msgstr "Création de la fenêtre de tracé impossible."
+
+#: ../src/plot.c:671
+msgid "TRANSFER"
+msgstr "TRANSFERT"
+
+#: ../src/plot.c:706 ../src/plot.c:713
+msgid "Could not create plot export window."
+msgstr "Création de la fenêtre d'exportation du tracé impossible."
+
+#. if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (export_png)))
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PNG;
+#. else
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PS;
+#: ../src/plot.c:734
+msgid "Save PNG"
+msgstr "Enregistrer au format PNG"
+
+#: ../src/part-browser.c:183 ../src/part-browser.c:388
+msgid "Unable to load required part"
+msgstr "Il est impossible de charger le composant demandé"
+
+#: ../src/part-browser.c:481 ../src/part-browser.c:489
+msgid "Could not create part browser"
+msgstr "Création du navigateur de composants impossible"
+
+#: ../src/oregano-config.c:124
+#, c-format
+msgid "Loading %s ..."
+msgstr "Chargement de %s ..."
+
+#: ../src/oregano-config.c:166
+#, c-format
+msgid "Could not read the parts library: %s "
+msgstr "Lecture de la bibliothèque de composants impossible : %s"
+
+#: ../src/oregano-config.c:168
+#, c-format
+msgid ""
+"The file is probably corrupt. Please reinstall the parts\n"
+"library or Oregano and try again."
+msgstr ""
+"Ce fichier est probablement endommagé.\n"
+"Veuillez réinstaller cette bibliothèque\n"
+"ou Oregano et essayer de nouveau."
+
+#: ../src/engines/netlist.c:436
+msgid "No ground node. Aborting.\n"
+msgstr "Pas de noeud de masse. Abandon.\n"
+
+#: ../src/engines/netlist.c:441
+#, c-format
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have a ground node and try again."
+msgstr ""
+"Ceci peut être dû à une erreur de schéma. Veuillez vous\n"
+"assurer que vous avez un noeud de masse et essayer à nouveau."
+
+#: ../src/engines/netlist.c:450
+msgid "No test clamps found. Aborting.\n"
+msgstr "Pas de point de test. Abandon.\n"
+
+#: ../src/engines/netlist.c:455
+#, c-format
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have one o more test clamps and try again."
+msgstr ""
+"Ceci peut être dû à une erreur de schéma. Veuillez vous\n"
+"assurer que vous avez un ou plusieurs points de test et\n"
+"essayez à nouveau."
+
+#: ../src/engines/gnucap.c:364
+msgid "### Too few or none analysis found ###\n"
+msgstr "### Pas assez ou aucune analyse trouvée ###\n"
+
+#: ../src/engines/gnucap.c:431
+msgid "Unable to execute GnuCap."
+msgstr "Il est impossible d'exécuter « GnuCap »"
+
+#: ../src/engines/gnucap.c:448
+msgid "None"
+msgstr "Aucun"
+
+#: ../src/engines/gnucap.c:650
+msgid "time"
+msgstr "temps"
+
+#: ../src/engines/gnucap.c:655 ../src/engines/gnucap.c:665
+msgid "voltage"
+msgstr "tension"
+
+#: ../src/engines/gnucap.c:660
+msgid "frequency"
+msgstr "fréquence"
+
+#: ../src/engines/gnucap.c:709
+msgid "Unknown analysis"
+msgstr "Analyse inconnue"
+
+#: ../src/engines/gnucap.c:757
+msgid "abort"
+msgstr "arrêt"
+
+#: ../src/engines/engine.c:33
+msgid "Operating Point"
+msgstr "Point de fonctionnement"
+
+#: ../src/engines/engine.c:34
+msgid "Transient Analysis"
+msgstr "Analyse transitoire"
+
+#: ../src/engines/engine.c:35
+msgid "DC transfer characteristic"
+msgstr "Caractéristiques de transfert DC"
+
+#: ../src/engines/engine.c:36
+msgid "AC Analysis"
+msgstr "Analyse AC"
+
+#: ../src/engines/engine.c:37
+msgid "Transfer Function"
+msgstr "Fonction de transfert"
+
+#: ../src/engines/engine.c:38
+msgid "Distortion Analysis"
+msgstr "Analyse de distorsion"
+
+#: ../src/engines/engine.c:39
+msgid "Noise Analysis"
+msgstr "Analyse de bruit"
+
+#: ../src/engines/engine.c:40
+msgid "Pole-Zero Analysis"
+msgstr "Analyse Pôles-Zéros"
+
+#: ../src/engines/engine.c:41
+msgid "Sensitivity Analysis"
+msgstr "Analyse de sensibilité"
+
+#: ../src/engines/engine.c:42
+msgid "Unknown Analysis"
+msgstr "Analyse inconnue"
+
+#: ../src/netlist-editor.c:193 ../src/netlist-editor.c:229
+#, c-format
+msgid "The file %s could not be saved"
+msgstr "Enregistrement impossible du ficher %s"
+
+#: ../src/netlist-editor.c:194 ../src/netlist-editor.c:230
+msgid "Could not save temporary netlist file"
+msgstr ""
+"Enregistrement impossible du fichier temporaire de la liste des connexions"
+
+#: ../src/netlist-editor.c:268
+msgid "Could not create the netlist dialog"
+msgstr "Création impossible du dialogue de la liste des connexions"
+
+#. gettext support
+#: ../src/netlist-editor.c:346
+#, c-format
+msgid "The file %s could not be found."
+msgstr "Fichier %s introuvable."
+
+#: ../src/netlist-editor.c:347
+msgid "Could not find the required file"
+msgstr "Fichier requis introuvable"
+
+#: ../src/main.c:121
+msgid "[FILES]"
+msgstr "[Fichiers]"
+
+#: ../src/main.c:136
+#, c-format
+msgid ""
+"You seem to be running Oregano without\n"
+"having it installed properly on your system.\n"
+"\n"
+"Please install Oregano and try again."
+msgstr ""
+"Il semble que vous utilisez Oregano sans\n"
+"qu'il soit correctement installé sur votre\n"
+"système.\n"
+"Veuillez réinstaller Oregano et essayer\n"
+"de nouveau."
+
+#: ../src/main.c:159
+msgid ""
+"Could not find a parts library.\n"
+"\n"
+"This is probably due to a faulty installation\n"
+"of Oregano. Please check your installation."
+msgstr ""
+"Aucune bibliothèque de composants trouvée.\n"
+"\n"
+"Ce problème est probablement dû à une installation\n"
+"défectueuse d'Oregano.\n"
+"Veuillez vérifier votre installation."
+
+#: ../src/main.c:208
+#, c-format
+msgid "Format '%s' not supported."
+msgstr "Le format « %s » n'est pas supporté"
+
+#: ../src/main.c:228
+#, c-format
+msgid "Done.\n"
+msgstr "Effectué.\n"
+
+#: ../src/main.c:246
+msgid "Welcome to Oregano"
+msgstr "Oregano"
+
+#: ../src/load-schematic.c:261
+#, c-format
+msgid "Bad file format."
+msgstr "Format de fichier incorrect."
+
+#: ../src/load-schematic.c:271
+#, c-format
+msgid "Unknown parser error."
+msgstr "Erreur inconnue de l'analyseur."
+
+#: ../src/load-library.c:149
+#, c-format
+msgid "Could not find the requested symbol: %s\n"
+msgstr "Le symbole demandé est introuvable : %s\n"
+
+#: ../src/load-library.c:165
+#, c-format
+msgid "Could not find the requested part: %s\n"
+msgstr "Le composant demandé est introuvable : %s\n"
+
+#: ../src/file.c:50 ../src/file.c:90
+msgid "Oregano Files"
+msgstr "Fichiers d'Oregano"
+
+#: ../src/file.c:52 ../src/file.c:92
+msgid "All Files"
+msgstr "Tous les fichiers"
+
+#: ../src/file.c:55
+msgid "Open File"
+msgstr "Ouvrir le fichier"
+
+#: ../src/file.c:95
+msgid "Save File"
+msgstr "Enregistrer fichier"
+
+#: ../src/file.c:146
+msgid "Netlist File"
+msgstr "Fichier de liste des connexions"
+
+#: ../src/file.c:222
+msgid "Open file"
+msgstr "Ouvrir fichier"
+
+#: ../src/file.c:272
+msgid "Save schematic as"
+msgstr "Enregistrer le schéma sous"
+
+#: ../src/file.c:337
+msgid "Netlist filename"
+msgstr "Nom du fichier de liste des connexions"
+
+#: ../src/dialogs.c:161
+msgid ""
+"(c) 2003-2006 LUGFi\n"
+"(c) 1999-2001 Richard Hult"
+msgstr ""
+"(c) 2003-2005 LUGFi\n"
+"(c) 1999-2001 Richard Hult"
+
+#: ../src/dialogs.c:175
+msgid "Schematic capture and circuit simulation.\n"
+msgstr "Dessin de schémas et simulation de circuits.\n"
+
+#: ../src/model/schematic.c:600
+#, c-format
+msgid "File %s does not exists."
+msgstr "Le fichier %s n'existe pas."
+
+#: ../src/model/schematic.c:608 ../src/model/schematic.c:646
+#, c-format
+msgid "Unknown file format for %s."
+msgstr "Format de fichier inconnu pour %s."
+
+#: ../src/model/schematic.c:627
+#, c-format
+msgid "Load fails!."
+msgstr "Échec du chargement."
+
+#: ../src/model/schematic.c:1035 ../src/model/schematic.c:1041
+msgid "Error loading print-options.glade"
+msgstr "Il est impossible de charger « print-options.glade »"
+
+#: ../src/model/schematic.c:1102
+msgid "Schematic"
+msgstr "Schéma"
+
+#: ../src/plot-add-function.c:52
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this"
+msgstr ""
+"Le fichier %s est introuvable. Vous pouvez essayer de réinstaller Oregano "
+"pour corriger ce problème"
+
+#: ../src/plot-add-function.c:54 ../src/plot-add-function.c:61
+msgid "Could not create plot window"
+msgstr "Création de la fenêtre de tracé impossible"
+
+#: ../src/plot-add-function.c:100
+msgid ""
+"<span weight=\"bold\" size=\"large\">Neither function, nor operators have "
+"been chosen</span>\n"
+"\n"
+"Please, take care to choose a function and their associated operators"
+msgstr ""
+"<span weight=\"bold\" size=\"large\">Il n'y a ni fonction, ni opérateurs "
+"définis</span>\n"
+"\n"
+"Veuillez, sélectionner une fonction et ses opérateurs associés. "
+
+#~ msgid "Oregano Electrical Engineering Tool"
+#~ msgstr "Oregano : outil d'ingéniérie éléctrique"
+
+#~ msgid "_Recent Projects"
+#~ msgstr "Projets _Récents"
+
+#~ msgid "Display the projects recently opened"
+#~ msgstr "Présente les projets récemments ouverts"
+
+#~ msgid "Oregano projects"
+#~ msgstr "Projets Oregano"
+
+#~ msgid ""
+#~ "Gtk version 2.2 does not support GtkTreeModelFilter...\n"
+#~ "Filtering disable!"
+#~ msgstr ""
+#~ "Gtk version 2.2 ne gère pas GtkTreeModelFilter...\n"
+#~ "Filtre désactivé."
+
+#~ msgid "Edit the part's properties"
+#~ msgstr "Éditer les propriétés du composant"
+
+#~ msgid "Copy the object to the clipboard"
+#~ msgstr "Copier l'objet dans le presse-papiers"
+
+#~ msgid "Cut the object to the clipboard"
+#~ msgstr "Déplacer l'objet vers le presse-papiers"
+
+#~ msgid "Delete"
+#~ msgstr "Effacer"
+
+#~ msgid "Delete the object"
+#~ msgstr "Effacer l'objet"
+
+#~ msgid "Rotate"
+#~ msgstr "Pivoter"
+
+#~ msgid "Rotate the selected objects 90 degrees clockwise"
+#~ msgstr ""
+#~ "Faire pivoter l'objet de 90° dans le sens des aiguilles d'une montre"
+
+#~ msgid "Edit the text"
+#~ msgstr "Éditer le texte"
+
+#~ msgid "Deselect a_ll"
+#~ msgstr "_Désélectionner tout"
+
+#~ msgid "50%"
+#~ msgstr "50 %"
+
+#~ msgid "75%"
+#~ msgstr "75 %"
+
+#~ msgid "125%"
+#~ msgstr "125 %"
+
+#~ msgid "150%"
+#~ msgstr "150 %"
+
+#~ msgid "Zoom"
+#~ msgstr "Zoom"
+
+#~ msgid "_Contents"
+#~ msgstr "_Contenu"
+
+#~ msgid "Show program help"
+#~ msgstr "Afficher l'aide du programme"
+
+#~ msgid "New"
+#~ msgstr "Nouveau"
+
+#~ msgid "Cut the selection to the clipboard"
+#~ msgstr "Déplacer la sélection vers le presse-papiers"
+
+#~ msgid "Copy the selection to the clipboard"
+#~ msgstr "Copier la sélection vers le presse-papiers"
+
+#~ msgid "Paste the clipboard"
+#~ msgstr "Coller le contenu du presse-papiers"
+
+#~ msgid "Add a Voltage test clamp"
+#~ msgstr "Ajouter un point de test de la tension"
+
+#~ msgid "Simulation settings"
+#~ msgstr "Paramètres de la simulation"
+
+#~ msgid "Turn on/off the grid"
+#~ msgstr "Activer/désactiver la grille"
+
+#~ msgid "Paste the contents of the clipboard to the sheet"
+#~ msgstr "Coller le contenu du presse-papiers sur la feuille"
+
+#~ msgid "Engine "
+#~ msgstr "Le moteur"
+
+#~ msgid "Remove"
+#~ msgstr "Supprimer"
+
+#~ msgid "TODO : Add FINDPATH for Engines"
+#~ msgstr ""
+#~ "A_faire : Ajouter le moyen de trouver le chemin des moteurs « SPICE »"
+
+#~ msgid "Engine executable not found"
+#~ msgstr "Moteur « SPICE  » non trouvé"
+
+#~ msgid "<b>Alignment</b>"
+#~ msgstr "<b>Alignement</b>"
+
+#~ msgid "Center Horizontally"
+#~ msgstr "Centrer horizontalement"
+
+#~ msgid "Center Vertically"
+#~ msgstr "Centrer verticalement"
+
+#~ msgid "Fit to page"
+#~ msgstr "Adapter à taille de la page"
+
+#~ msgid "Print Properties"
+#~ msgstr "Propriétés d'impression"
+
+#~ msgid "Could not create the page properties dialog"
+#~ msgstr "Création du dialogue des propriétés de la page impossible"
+
+#~ msgid "Pages"
+#~ msgstr "Pages"
+
+#~ msgid "Can't get paper info! .. getting default!"
+#~ msgstr ""
+#~ "Impossible d'obtenir les informations concernant le papier. Utilisation "
+#~ "des valeurs par défaut."
+
+#~ msgid "Could not create font for printing."
+#~ msgstr "Impossible de créer la police pour l'impression."
+
+#~ msgid "Printing failed."
+#~ msgstr "Échec de l'impression"
+
+#~ msgid "Preview the plot before printing"
+#~ msgstr "Afficher l'aperçu du tracé avant l'impression"
+
+#~ msgid "Show the export menu"
+#~ msgstr "Afficher le menu d'exportation"
+
+#~ msgid "_Plot"
+#~ msgstr "_Tracé"
+
+#~ msgid "Netlist for %s"
+#~ msgstr "Liste des connexions de %s"
+
+#~ msgid "Author : %s"
+#~ msgstr "Auteur : %s"
+
+#~ msgid "Page %N of %Q"
+#~ msgstr "Page %N sur %Q"
+
+#~ msgid "Enables some debugging functions"
+#~ msgstr "Activer les fonctions de débogage"
+
+#~ msgid "LEVEL"
+#~ msgstr "NIVEAU"
+
+#~ msgid "_View netlist"
+#~ msgstr "_Afficher la liste des connexions (« netlist »)"
+
+#~ msgid "View plot"
+#~ msgstr "Afficher le tracé"
+
+#~ msgid "View plot "
+#~ msgstr "Afficher le tracé "
+
+#~ msgid "Problem in transient analysis"
+#~ msgstr "Problème dans l'analyse transitoire"
+
+#~ msgid "Start time must be less than stop time."
+#~ msgstr "L'instant de départ doit précéder l'instant d'arrivée."
+
+#~ msgid "Could not find the simulation executable"
+#~ msgstr "Exécutable du simulateur introuvable"
+
+#~ msgid "This probably means that you have not configured Oregano properly."
+#~ msgstr ""
+#~ "Ceci signifie probablement qu'Oregano n'a pas été correctement configuré."
+
+#~ msgid "You have not entered a simulation executable"
+#~ msgstr "Vous n'avez pas entré de nom d'exécutable pour le simulateur"
+
+#~ msgid ""
+#~ "Please choose Settings and specify which program to use for simulations."
+#~ msgstr ""
+#~ "Veuillez choisir « Paramètres » et indiquer le programme à utiliser pour "
+#~ "les simulations."
+
+#~ msgid "Could't generate temporary file.\n"
+#~ msgstr "Impossible de créer le fichier temporaire.\n"
+
+#~ msgid "Possibly due an I/O error."
+#~ msgstr "Ceci peut être dû à une erreur d'entrée/sortie."
+
+#~ msgid "Name: "
+#~ msgstr "Nom :"
+
+#~ msgid "Value: "
+#~ msgstr "Valeur :"
+
+#~ msgid "GnuCap"
+#~ msgstr "GnuCap"
+
+#~ msgid "NgSpice"
+#~ msgstr "NgSpice"
+
+#~ msgid "Parser"
+#~ msgstr "Analyseur"
+
+#~ msgid "Plot Export"
+#~ msgstr "Exportation du tracé"
+
+#~ msgid "Portable Network Graphics (png)"
+#~ msgstr "Portable Network Graphics (PNG)"
+
+#~ msgid "Postscript (ps)"
+#~ msgstr "PostScript (ps)"
diff --git a/po/it.po b/po/it.po
new file mode 100644
index 0000000..e5be47b
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,1586 @@
+# Italian translation of Oregano
+# Copyright (C) 1999 Free Software Foundation, Inc.
+# Elker Cavina <e.cavina@ra.nettuno.it>, 1999.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: oregano 0.0.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-11 02:36-0300\n"
+"PO-Revision-Date: 1999-11-05 12:30+0100\n"
+"Last-Translator: Elker Cavina <e.cavina@ra.nettuno.it>\n"
+"Language-Team: Italian <it@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:1
+msgid "<b>AC Analysis Options</b>"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:2
+msgid "<b>Type</b>"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:3
+#, fuzzy
+msgid "Current"
+msgstr "Taglia"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:4
+#, fuzzy
+msgid "Edit Clamp properties"
+msgstr "Modifica le proprieta'"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:5
+msgid "Imaginary part"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:6
+msgid "Magnitude"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:7
+#, fuzzy
+msgid "Phase"
+msgstr "Incolla"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:8
+msgid "Real part"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:9
+msgid "Use decibel scale"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:10
+msgid "Voltage"
+msgstr ""
+
+#: ../data/dialogs/log-window.glade2.h:1
+msgid "Clear"
+msgstr ""
+
+#: ../data/dialogs/log-window.glade2.h:2
+msgid "Oregano Log Window"
+msgstr ""
+
+#: ../data/dialogs/page-properties.glade2.h:1
+msgid "<b>Alignment</b>"
+msgstr ""
+
+#: ../data/dialogs/page-properties.glade2.h:2
+msgid "Center Horizontally"
+msgstr ""
+
+#: ../data/dialogs/page-properties.glade2.h:3
+msgid "Center Vertically"
+msgstr ""
+
+#: ../data/dialogs/page-properties.glade2.h:4
+msgid "Fit to page"
+msgstr ""
+
+#: ../data/dialogs/page-properties.glade2.h:5
+#, fuzzy
+msgid "Print Properties"
+msgstr "Proprieta'"
+
+#: ../data/dialogs/part-browser.glade2.h:1
+#, fuzzy
+msgid "<b>Preview</b>"
+msgstr "Anteprima"
+
+#: ../data/dialogs/part-browser.glade2.h:2
+#, fuzzy
+msgid "Library:"
+msgstr "Libreria: "
+
+#: ../data/dialogs/part-browser.glade2.h:3 ../src/schematic-view-ui.h:360
+msgid "Parts"
+msgstr "Parti"
+
+#: ../data/dialogs/part-browser.glade2.h:4
+msgid "Place"
+msgstr "Posiziona"
+
+#: ../data/dialogs/part-browser.glade2.h:5
+msgid "Press this button to place the selected part"
+msgstr ""
+
+#: ../data/dialogs/part-browser.glade2.h:6
+msgid "Search:"
+msgstr ""
+
+#: ../data/dialogs/part-browser.glade2.h:7
+#, fuzzy
+msgid "Select which library to use"
+msgstr "Seleziona una libreria"
+
+#: ../data/dialogs/part-properties-dialog.glade2.h:1
+#, fuzzy
+msgid "Part Properties"
+msgstr "Modifica le proprieta' della parte"
+
+#: ../data/dialogs/plot-window.glade2.h:1
+#, fuzzy
+msgid "<b>Plot</b>"
+msgstr "Formato del file"
+
+#: ../data/dialogs/plot-window.glade2.h:2
+msgid "<b>Variables</b>"
+msgstr ""
+
+#: ../data/dialogs/plot-window.glade2.h:3
+#, fuzzy
+msgid "Plot"
+msgstr "Disegna"
+
+#: ../data/dialogs/plot-window.glade2.h:4
+#, fuzzy
+msgid "Region"
+msgstr "Riprova"
+
+#: ../data/dialogs/plot-window.glade2.h:5
+msgid "Shift"
+msgstr ""
+
+#: ../data/dialogs/properties.glade2.h:1
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:1
+msgid " "
+msgstr ""
+
+#: ../data/dialogs/properties.glade2.h:2
+#, fuzzy
+msgid "<b>Comments</b>"
+msgstr "Formato del file"
+
+#: ../data/dialogs/properties.glade2.h:3
+msgid "Author:"
+msgstr ""
+
+#: ../data/dialogs/properties.glade2.h:4 ../src/sheet/part-item.c:147
+msgid "Properties"
+msgstr "Proprieta'"
+
+#: ../data/dialogs/properties.glade2.h:5
+#, fuzzy
+msgid "Title:"
+msgstr "_File"
+
+#: ../data/dialogs/settings.glade2.h:1
+msgid "\n"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:3
+#, fuzzy
+msgid "<b>Data Paths</b>"
+msgstr "Eseguibili"
+
+#: ../data/dialogs/settings.glade2.h:4
+msgid "<b>Engine</b>"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:5
+#, fuzzy
+msgid "<b>Executable Path</b>"
+msgstr "Eseguibili"
+
+#: ../data/dialogs/settings.glade2.h:6
+#, fuzzy
+msgid "<b>File Format</b>"
+msgstr "Formato del file"
+
+#: ../data/dialogs/settings.glade2.h:7
+#, fuzzy
+msgid "<b>User Interface</b>"
+msgstr "Interfaccia utente"
+
+#: ../data/dialogs/settings.glade2.h:8
+msgid "Automatically show log windows after simulation"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:9
+msgid "Compress saved files"
+msgstr "Comprimi i file salvati"
+
+#: ../data/dialogs/settings.glade2.h:10
+#, fuzzy
+msgid "Grid size[px] "
+msgstr "Dimensione della griglia [px]"
+
+#: ../data/dialogs/settings.glade2.h:11
+#, fuzzy
+msgid "Library"
+msgstr "Libreria: "
+
+#: ../data/dialogs/settings.glade2.h:12
+msgid "Model"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:13
+msgid "Paths"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:14
+#, fuzzy
+msgid "Preferences"
+msgstr "_Preferenze..."
+
+#: ../data/dialogs/settings.glade2.h:15
+#, fuzzy
+msgid "Realtime update of selection (slow)"
+msgstr "Aggiornamento in tempo reale della selezione"
+
+#: ../data/dialogs/settings.glade2.h:16
+#, fuzzy
+msgid "Remove"
+msgstr "Riprova"
+
+#: ../data/dialogs/settings.glade2.h:17
+#, fuzzy
+msgid "Select A File"
+msgstr "Selezion_a Tutto"
+
+#: ../data/dialogs/settings.glade2.h:18
+msgid "Show the splash screen at application startup"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:19
+msgid "TODO : Add FINDPATH for Engines"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:20
+msgid "User Interface"
+msgstr "Interfaccia utente"
+
+#: ../data/dialogs/sim-settings.glade2.h:1
+msgid "<b>AC</b>"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:2
+msgid "<b>DC Sweep</b>"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:3
+msgid "<b>Fourier</b>"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:4
+msgid "<b>Transient</b>"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:5
+msgid "Add new options"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:6
+msgid "Add to list"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:7
+msgid "Analysis Options"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:8
+msgid "Analysis Parameters"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:9
+msgid "DEC"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:10
+msgid "Frequency"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:11
+msgid "LIN"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:12
+msgid "List of outputs"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:13
+msgid "OCT"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:14
+#, fuzzy
+msgid "Points"
+msgstr "_Disegna"
+
+#: ../data/dialogs/sim-settings.glade2.h:15
+#, fuzzy
+msgid "Simulation Settings"
+msgstr "Settaggi di Simulazione"
+
+#: ../data/dialogs/sim-settings.glade2.h:16
+msgid "Source"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:17
+#, fuzzy
+msgid "Start"
+msgstr "Parti"
+
+#: ../data/dialogs/sim-settings.glade2.h:18
+#, fuzzy
+msgid "Step"
+msgstr "Incolla"
+
+#: ../data/dialogs/sim-settings.glade2.h:19
+msgid "Stop"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:20
+msgid "Type"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:21
+msgid "Use Initial Conditions"
+msgstr ""
+
+#: ../data/dialogs/simulation.glade2.h:1
+#, fuzzy
+msgid "Progress: None"
+msgstr "Progresso"
+
+#: ../data/dialogs/simulation.glade2.h:2
+msgid "Simulation"
+msgstr "Simulazione"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:2
+#, fuzzy
+msgid "<b>Text</b>"
+msgstr "Formato del file"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:3
+#, fuzzy
+msgid "Text Properties"
+msgstr "Proprieta'"
+
+#: ../data/dialogs/view-netlist.glade2.h:1
+#, fuzzy
+msgid "Netlist View"
+msgstr "Nome del file Netlist"
+
+#: ../data/dialogs/view-netlist.glade2.h:2 ../src/schematic-view-ui.h:161
+msgid "_Simulate"
+msgstr "_Simula"
+
+#: ../src/sheet/part-item.c:147
+msgid "Edit the part's properties"
+msgstr "Modifica le proprieta' della parte"
+
+#: ../src/sheet/part-item.c:616 ../src/sheet/part-item.c:765
+#: ../src/sheet/textbox-item.c:679 ../src/sim-settings.c:775
+#: ../src/settings.c:139 ../src/schematic-view.c:251
+#: ../src/schematic-view.c:317 ../src/schematic-view.c:2431 ../src/plot.c:434
+#: ../src/plot.c:689 ../src/part-browser.c:496 ../src/netlist-editor.c:309
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this."
+msgstr ""
+
+#: ../src/sheet/part-item.c:618 ../src/sheet/part-item.c:626
+#: ../src/sheet/part-item.c:767 ../src/sheet/part-item.c:775
+#, fuzzy
+msgid "Could not create part properties dialog."
+msgstr "Non posso creare il dialogo dei settaggi."
+
+#: ../src/sheet/sheet-item.c:307 ../src/schematic-view-ui.h:288
+msgid "Copy"
+msgstr "Copia"
+
+#: ../src/sheet/sheet-item.c:307
+msgid "Copy the object to the clipboard"
+msgstr "Copia l'oggetto negli appunti"
+
+#: ../src/sheet/sheet-item.c:310 ../src/schematic-view-ui.h:285
+msgid "Cut"
+msgstr "Taglia"
+
+#: ../src/sheet/sheet-item.c:310
+msgid "Cut the object to the clipboard"
+msgstr "Taglia l'oggetto verso gli appunti"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete"
+msgstr "Cancella"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete the object"
+msgstr "Cancella l'oggetto"
+
+#: ../src/sheet/sheet-item.c:319
+msgid "Rotate"
+msgstr "Ruota"
+
+#: ../src/sheet/sheet-item.c:320
+msgid "Rotate the selected objects 90 degrees clockwise"
+msgstr "Ruota l'oggetto selezionato di 90 gradi in senso orario"
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit..."
+msgstr ""
+
+#: ../src/sheet/textbox-item.c:99
+#, fuzzy
+msgid "Edit the text"
+msgstr "Modifica le proprieta' della parte"
+
+#: ../src/sheet/textbox-item.c:596
+msgid "Label"
+msgstr ""
+
+#: ../src/sheet/textbox-item.c:681 ../src/sheet/textbox-item.c:690
+#, fuzzy
+msgid "Could not create textbox properties dialog"
+msgstr "Non posso creare il dialogo dei settaggi."
+
+#: ../src/simulation.c:102 ../src/simulation.c:109 ../src/simulation.c:115
+#, fuzzy
+msgid "Could not create simulation dialog"
+msgstr "Non posso creare il dialogo dei settaggi di simulazione "
+
+#: ../src/simulation.c:150
+#, fuzzy, c-format
+msgid "Progress: <b>%s</b>"
+msgstr "Progresso"
+
+#: ../src/simulation.c:201
+#, fuzzy
+msgid ""
+"<span weight=\"bold\" size=\"large\">The simulation was aborted due to an "
+"error.</span>\n"
+"\n"
+"Would you like to view the error log?"
+msgstr "La simulazione e' stata interrotta da un'errore"
+
+#: ../src/simulation.c:211
+#, fuzzy
+msgid "The simulation was aborted due to an error"
+msgstr "La simulazione e' stata interrotta da un'errore"
+
+#: ../src/sim-settings.c:229
+msgid "Add new option"
+msgstr ""
+
+#: ../src/sim-settings.c:777 ../src/sim-settings.c:784
+#: ../src/sim-settings.c:790
+#, fuzzy
+msgid "Could not create simulation settings dialog"
+msgstr "Non posso creare il dialogo dei settaggi di simulazione "
+
+#: ../src/sim-settings.c:814
+#, fuzzy
+msgid "Option"
+msgstr "Apri"
+
+#: ../src/sim-settings.c:816
+msgid "Value"
+msgstr ""
+
+#: ../src/settings.c:141 ../src/settings.c:148 ../src/settings.c:154
+#, fuzzy
+msgid "Could not create settings dialog"
+msgstr "Non posso creare il dialogo dei settaggi di simulazione "
+
+#: ../src/settings.c:215
+msgid "Engine executable not found"
+msgstr ""
+
+#: ../src/settings.c:216
+msgid "The engine is unable to locate the external program."
+msgstr ""
+
+#: ../src/schematic-view.c:254
+#, fuzzy
+msgid "Could not create properties dialog"
+msgstr "Non posso creare il dialogo dei settaggi."
+
+#: ../src/schematic-view.c:320
+#, fuzzy
+msgid "Could not create the page properties dialog"
+msgstr "Non posso creare il dialogo dei settaggi."
+
+#: ../src/schematic-view.c:383
+#, fuzzy
+msgid "Could not load file"
+msgstr "Non posso caricare il file"
+
+#: ../src/schematic-view.c:410 ../src/schematic-view.c:1304
+#: ../src/schematic-view.c:1312
+msgid "Untitled.oregano"
+msgstr "Senzatitolo.oregano"
+
+#: ../src/schematic-view.c:415
+#, fuzzy
+msgid "Could not save schematic file"
+msgstr "Non posso salvare il file di Schema"
+
+#: ../src/schematic-view.c:765 ../src/netlist-editor.c:225
+#: ../src/netlist-editor.c:436
+#, fuzzy
+msgid "Could not create a netlist"
+msgstr "Non posso creare il browser delle parti"
+
+#: ../src/schematic-view.c:768 ../src/netlist-editor.c:229
+#: ../src/netlist-editor.c:439
+msgid "An unexpected error has occurred"
+msgstr ""
+
+#: ../src/schematic-view.c:1313
+#, fuzzy
+msgid "Untitled.netlist"
+msgstr "Senzatitolo.oregano"
+
+#: ../src/schematic-view.c:1504
+#, c-format
+msgid ""
+"<span weight=\"bold\" size=\"large\">Save changes to schematic %s before "
+"closing?</span>\n"
+"\n"
+"If you don't save, all changes since you last saved will be permanently lost."
+msgstr ""
+
+#: ../src/schematic-view.c:1516
+msgid "Close _without Saving"
+msgstr ""
+
+#: ../src/schematic-view.c:2434 ../src/schematic-view.c:2445
+msgid "Could not create the log window"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:38
+msgid "_New"
+msgstr "_Nuovo"
+
+#: ../src/schematic-view-ui.h:38 ../src/schematic-view-ui.h:264
+msgid "Create a new schematic"
+msgstr "Crea un nuovo schema"
+
+#: ../src/schematic-view-ui.h:47
+#, fuzzy
+msgid "Page Properties"
+msgstr "Modifica le proprieta'"
+
+#: ../src/schematic-view-ui.h:48
+#, fuzzy
+msgid "Set print properties"
+msgstr "Modifica le proprieta'"
+
+#: ../src/schematic-view-ui.h:56 ../src/print.c:367 ../src/plot.c:150
+#: ../src/netlist-editor.c:193
+#, fuzzy
+msgid "Print Preview"
+msgstr "Anteprima"
+
+#: ../src/schematic-view-ui.h:57
+#, fuzzy
+msgid "Preview the schematic before printing"
+msgstr "Modifica del proprieta' di questa parte"
+
+#: ../src/schematic-view-ui.h:65
+#, fuzzy
+msgid "Schematic _Properties..."
+msgstr "Proprieta'..."
+
+#: ../src/schematic-view-ui.h:66
+#, fuzzy
+msgid "Modify the schematic's properties"
+msgstr "Modifica del proprieta' di questa parte"
+
+#: ../src/schematic-view-ui.h:95
+msgid "_Delete"
+msgstr "_Cancella"
+
+#: ../src/schematic-view-ui.h:96
+msgid "Delete the selection"
+msgstr "Cancella la selezionate"
+
+#: ../src/schematic-view-ui.h:102
+msgid "_Rotate"
+msgstr "_Ruota"
+
+#: ../src/schematic-view-ui.h:103
+msgid "Rotate the selection clockwise"
+msgstr "Ruota la selezione in senso orario"
+
+#: ../src/schematic-view-ui.h:109
+#, fuzzy
+msgid "Flip _horizontally"
+msgstr "Copia la selezione negli appunti"
+
+#: ../src/schematic-view-ui.h:110
+#, fuzzy
+msgid "Flip the selection horizontally"
+msgstr "Copia la selezione negli appunti"
+
+#: ../src/schematic-view-ui.h:116
+#, fuzzy
+msgid "Flip _vertically"
+msgstr "Cancella la selezionate"
+
+#: ../src/schematic-view-ui.h:117
+#, fuzzy
+msgid "Flip the selection vertically"
+msgstr "Cancella la selezionate"
+
+#: ../src/schematic-view-ui.h:124
+#, fuzzy
+msgid "Select _all"
+msgstr "_Deseleziona Tutto"
+
+#: ../src/schematic-view-ui.h:125
+msgid "Select all objects on the sheet"
+msgstr "Seleziona tutti gli oggetti nello schema"
+
+#: ../src/schematic-view-ui.h:131
+#, fuzzy
+msgid "Deselect a_ll"
+msgstr "_Deseleziona Tutto"
+
+#: ../src/schematic-view-ui.h:132
+msgid "Deselect the selected objects"
+msgstr "Deseleziona l'oggetto selezionato"
+
+#: ../src/schematic-view-ui.h:140
+#, fuzzy
+msgid "_Object Properties..."
+msgstr "_Proprieta' dell'oggetto..."
+
+#: ../src/schematic-view-ui.h:141
+msgid "Modify the object's properties"
+msgstr "Modifica del proprieta' di quest'oggetto"
+
+#: ../src/schematic-view-ui.h:146
+msgid "Simulation S_ettings..."
+msgstr "S_ettaggi di Simulazione"
+
+#: ../src/schematic-view-ui.h:147
+msgid "Edit the simulation settings"
+msgstr "Modifica i settaggi di simulazione"
+
+#: ../src/schematic-view-ui.h:162
+msgid "Run a simulation"
+msgstr "Lancia una simulazione"
+
+#: ../src/schematic-view-ui.h:169
+msgid "_Generate netlist"
+msgstr "_Genera la netlist"
+
+#: ../src/schematic-view-ui.h:170
+msgid "Generate a netlist"
+msgstr "Genera la netlist"
+
+#: ../src/schematic-view-ui.h:177
+msgid "50%"
+msgstr "50%"
+
+#: ../src/schematic-view-ui.h:178
+msgid "Set the zoom factor to 50%"
+msgstr "Imposta il fattore di zoom a 50%"
+
+#: ../src/schematic-view-ui.h:179
+msgid "75%"
+msgstr "75%"
+
+#: ../src/schematic-view-ui.h:180
+msgid "Set the zoom factor to 75%"
+msgstr "Imposta il fattore di zoom a 75%"
+
+#. GNOMEUIINFO_ITEM_NONE(N_("50%"),
+#. N_("Set the zoom factor to 50%"), plot_zoom_50_cmd),
+#. GNOMEUIINFO_ITEM_NONE(N_("75%"),
+#. N_("Set the zoom factor to 75%"), plot_zoom_75_cmd),
+#: ../src/schematic-view-ui.h:181 ../src/plot.c:167
+msgid "100%"
+msgstr "100%"
+
+#: ../src/schematic-view-ui.h:182 ../src/plot.c:168
+msgid "Set the zoom factor to 100%"
+msgstr "Imposta il fattore di zoom a 100%"
+
+#: ../src/schematic-view-ui.h:184
+msgid "125%"
+msgstr "125%"
+
+#: ../src/schematic-view-ui.h:185
+msgid "Set the zoom factor to 125%"
+msgstr "Imposta il fattore di zoom a 125%"
+
+#: ../src/schematic-view-ui.h:186
+msgid "150%"
+msgstr "150%"
+
+#: ../src/schematic-view-ui.h:187
+msgid "Set the zoom factor to 150%"
+msgstr "Imposta il fattore di zoom a 150%"
+
+#: ../src/schematic-view-ui.h:196
+msgid "Zoom"
+msgstr "Zoom"
+
+#: ../src/schematic-view-ui.h:202
+msgid "_Log"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:202
+#, fuzzy
+msgid "View the latest simulation log"
+msgstr "Modifica i settaggi di simulazione"
+
+#: ../src/schematic-view-ui.h:205
+msgid "_Node labels"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:205
+#, fuzzy
+msgid "Show or hide node labels"
+msgstr "Mostra o nascondi il browser delle parti"
+
+#: ../src/schematic-view-ui.h:207
+#, fuzzy
+msgid "N_etlist"
+msgstr "Nome del file Netlist"
+
+#: ../src/schematic-view-ui.h:208
+#, fuzzy
+msgid "View the circuit netlist"
+msgstr "Mostra la netlist corrente"
+
+#: ../src/schematic-view-ui.h:240
+msgid "_Contents"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:240
+msgid "Show program help"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:254
+msgid "_Tools"
+msgstr "S_trumenti"
+
+#: ../src/schematic-view-ui.h:264
+msgid "New"
+msgstr "Nuovo"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open"
+msgstr "Apri"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open an existing schematic"
+msgstr "Apri uno schema esistente"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save"
+msgstr "Salva"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save the schematic"
+msgstr "Salva lo schema"
+
+#: ../src/schematic-view-ui.h:285
+msgid "Cut the selection to the clipboard"
+msgstr "Taglia la selezione negli appunti"
+
+#: ../src/schematic-view-ui.h:288
+msgid "Copy the selection to the clipboard"
+msgstr "Copia la selezione negli appunti"
+
+#: ../src/schematic-view-ui.h:291 ../src/schematic-view-ui.h:404
+msgid "Paste"
+msgstr "Incolla"
+
+#: ../src/schematic-view-ui.h:291
+#, fuzzy
+msgid "Paste the clipboard"
+msgstr "Incolla il contenuto degli appunti"
+
+#: ../src/schematic-view-ui.h:301
+msgid "Arrow"
+msgstr "Freccia"
+
+#: ../src/schematic-view-ui.h:302
+msgid "Select, move and modify objects"
+msgstr "Seleziona, muovi e modifica oggetti"
+
+#: ../src/schematic-view-ui.h:307
+msgid "Text"
+msgstr "Testo"
+
+#: ../src/schematic-view-ui.h:308
+msgid "Put text on the schematic"
+msgstr "Inserisci un testo nello schema"
+
+#: ../src/schematic-view-ui.h:313
+msgid "Wires"
+msgstr "Fili"
+
+#: ../src/schematic-view-ui.h:314
+msgid "Draw wires"
+msgstr "Disegna fili"
+
+#: ../src/schematic-view-ui.h:330
+msgid "Add Voltage Clamp"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:331
+msgid "Add a Voltage test clamp"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:336
+msgid "Simulate"
+msgstr "Simula"
+
+#: ../src/schematic-view-ui.h:337
+msgid "Run a simulation for the current schematic"
+msgstr "Lancia la simulazione dello schema corrente"
+
+#: ../src/schematic-view-ui.h:342 ../src/schematic-view-ui.h:343
+msgid "Simulation settings"
+msgstr "Settaggi di Simulazione"
+
+#: ../src/schematic-view-ui.h:361
+msgid "Show or hide the part browser"
+msgstr "Mostra o nascondi il browser delle parti"
+
+#: ../src/schematic-view-ui.h:366
+msgid "Grid"
+msgstr "Griglia"
+
+#: ../src/schematic-view-ui.h:367
+msgid "Turn on/off the grid"
+msgstr "Mostra/Nascondi la griglia"
+
+#: ../src/schematic-view-ui.h:372 ../src/schematic-view-ui.h:373
+msgid "Zoom in"
+msgstr "Ingrandisci"
+
+#: ../src/schematic-view-ui.h:378 ../src/schematic-view-ui.h:379
+#, fuzzy
+msgid "Zoom out"
+msgstr "Rimpicciolisci"
+
+#: ../src/schematic-view-ui.h:405
+#, fuzzy
+msgid "Paste the contents of the clipboard to the sheet"
+msgstr "Taglia l'oggetto verso gli appunti"
+
+#: ../src/print.c:297
+#, fuzzy
+msgid "Print"
+msgstr "Parti"
+
+#: ../src/print.c:304
+#, fuzzy
+msgid "Pages"
+msgstr "Posiziona"
+
+#: ../src/print.c:339
+msgid "Can't get paper info! .. getting default!"
+msgstr ""
+
+#: ../src/print.c:353
+#, fuzzy
+msgid "Could not create font for printing."
+msgstr "Non posso creare il browser delle parti"
+
+#: ../src/print.c:372
+msgid "Printing failed."
+msgstr ""
+
+#: ../src/plot.c:61 ../src/plot.c:62
+msgid "Sans 10"
+msgstr ""
+
+#: ../src/plot.c:63
+msgid "Sans 8"
+msgstr ""
+
+#: ../src/plot.c:151
+#, fuzzy
+msgid "Preview the plot before printing"
+msgstr "Modifica del proprieta' di questa parte"
+
+#: ../src/plot.c:153
+msgid "Export plot"
+msgstr ""
+
+#: ../src/plot.c:154
+msgid "Show the export menu"
+msgstr ""
+
+#: ../src/plot.c:155
+msgid "Add Function"
+msgstr ""
+
+#: ../src/plot.c:156
+msgid "Add new function to the graph"
+msgstr ""
+
+#: ../src/plot.c:180
+msgid "_Preferences..."
+msgstr "_Preferenze..."
+
+#: ../src/plot.c:182
+msgid "Show crosshairs"
+msgstr ""
+
+#: ../src/plot.c:183
+msgid "_Zoom"
+msgstr "_Zoom"
+
+#: ../src/plot.c:190
+msgid "Schematic Plot"
+msgstr ""
+
+#: ../src/plot.c:196
+msgid "_File"
+msgstr "_File"
+
+#: ../src/plot.c:197
+msgid "_Plot"
+msgstr "_Disegna"
+
+#. Simulation failed?
+#: ../src/plot.c:330
+msgid "The simulation produced no data!!\n"
+msgstr ""
+
+#: ../src/plot.c:340 ../src/plot.c:574
+#, fuzzy, c-format
+msgid "Plot - %s"
+msgstr "Disegna - %s"
+
+#: ../src/plot.c:349
+msgid "Nodes"
+msgstr ""
+
+#: ../src/plot.c:352 ../src/plot.c:636
+msgid "Functions"
+msgstr ""
+
+#: ../src/plot.c:424
+msgid "Oregano - Plot"
+msgstr ""
+
+#: ../src/plot.c:436 ../src/plot.c:443
+#, fuzzy
+msgid "Could not create plot window."
+msgstr "Non posso creare il browser delle parti"
+
+#: ../src/plot.c:659
+msgid "TRANSFER"
+msgstr ""
+
+#: ../src/plot.c:691 ../src/plot.c:698
+#, fuzzy
+msgid "Could not create plot export window."
+msgstr "Non posso creare il browser delle parti"
+
+#. if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (export_png)))
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PNG;
+#. else
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PS;
+#: ../src/plot.c:719
+#, fuzzy
+msgid "Save PNG"
+msgstr "Salva PNG"
+
+#: ../src/part-browser.c:135 ../src/part-browser.c:614
+msgid ""
+"Gtk version 2.2 does not support GtkTreeModelFilter...\n"
+"Filtering disable!"
+msgstr ""
+
+#: ../src/part-browser.c:187 ../src/part-browser.c:401
+msgid "Unable to load required part"
+msgstr ""
+
+#: ../src/part-browser.c:499 ../src/part-browser.c:507
+#, fuzzy
+msgid "Could not create part browser"
+msgstr "Non posso creare il browser delle parti"
+
+#: ../src/oregano-config.c:123
+#, c-format
+msgid "Loading %s ..."
+msgstr ""
+
+#: ../src/oregano-config.c:164
+#, fuzzy, c-format
+msgid "Could not read the parts library: %s "
+msgstr "Non posso leggere la libreria di parti: %s "
+
+#: ../src/oregano-config.c:166
+msgid ""
+"The file is probably corrupt. Please reinstall the parts\n"
+"library or Oregano and try again."
+msgstr ""
+"Il file probabilmente e' rovinato. Prova a reinstallare\n"
+"la libreria delle parti o Oregano e riprova."
+
+#: ../src/engines/netlist.c:436
+msgid "No ground node. Aborting.\n"
+msgstr ""
+
+#: ../src/engines/netlist.c:441
+#, fuzzy
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have a ground node and try again."
+msgstr ""
+"Impossibile generare la netlist, probabilmente questo e'\n"
+"dovuto ad uno schema non corretto. Controlla di avere\n"
+"un nodo di massa e riprova."
+
+#: ../src/engines/netlist.c:450
+msgid "No test clamps found. Aborting.\n"
+msgstr ""
+
+#: ../src/engines/netlist.c:455
+#, fuzzy
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have one o more test clamps and try again."
+msgstr ""
+"Impossibile generare la netlist, probabilmente questo e'\n"
+"dovuto ad uno schema non corretto. Controlla di avere\n"
+"un nodo di massa e riprova."
+
+#: ../src/engines/gnucap.c:299
+msgid "### Too few or none analysis found ###\n"
+msgstr ""
+
+#: ../src/engines/gnucap.c:366
+msgid "Unable to execute GnuCap."
+msgstr ""
+
+#: ../src/engines/gnucap.c:383
+msgid "None"
+msgstr ""
+
+#: ../src/engines/gnucap.c:586
+msgid "time"
+msgstr ""
+
+#: ../src/engines/gnucap.c:591 ../src/engines/gnucap.c:601
+#, fuzzy
+msgid "voltage"
+msgstr "Ruota"
+
+#: ../src/engines/gnucap.c:596
+msgid "frequency"
+msgstr ""
+
+#: ../src/engines/gnucap.c:645
+msgid "Unknown analysis"
+msgstr ""
+
+#: ../src/engines/gnucap.c:693
+#, fuzzy
+msgid "abort"
+msgstr "Parti"
+
+#: ../src/engines/engine.c:32
+msgid "Operating Point"
+msgstr ""
+
+#: ../src/engines/engine.c:33
+msgid "Transient Analysis"
+msgstr ""
+
+#: ../src/engines/engine.c:34
+msgid "DC transfer characteristic"
+msgstr ""
+
+#: ../src/engines/engine.c:35
+msgid "AC Analysis"
+msgstr ""
+
+#: ../src/engines/engine.c:36
+msgid "Transfer Function"
+msgstr ""
+
+#: ../src/engines/engine.c:37
+msgid "Distortion Analysis"
+msgstr ""
+
+#: ../src/engines/engine.c:38
+msgid "Noise Analysis"
+msgstr ""
+
+#: ../src/engines/engine.c:39
+msgid "Pole-Zero Analysis"
+msgstr ""
+
+#: ../src/engines/engine.c:40
+msgid "Sensitivity Analysis"
+msgstr ""
+
+#: ../src/engines/engine.c:41
+msgid "Unknown Analysis"
+msgstr ""
+
+#: ../src/netlist-editor.c:172
+#, fuzzy, c-format
+msgid "Netlist for %s"
+msgstr "Nome del file Netlist"
+
+#: ../src/netlist-editor.c:173
+#, c-format
+msgid "Author : %s"
+msgstr ""
+
+#: ../src/netlist-editor.c:186
+msgid "Page %N of %Q"
+msgstr ""
+
+#: ../src/netlist-editor.c:238 ../src/netlist-editor.c:274
+#, c-format
+msgid "The file %s could not be saved"
+msgstr ""
+
+#: ../src/netlist-editor.c:239 ../src/netlist-editor.c:275
+#, fuzzy
+msgid "Could not save temporary netlist file"
+msgstr "Non posso salvare il file di Schema %s\n"
+
+#: ../src/netlist-editor.c:311
+#, fuzzy
+msgid "Could not create the netlist dialog"
+msgstr "Non posso creare il dialogo dei settaggi."
+
+#. gettext support
+#: ../src/netlist-editor.c:390
+#, c-format
+msgid "The file %s could not be found."
+msgstr ""
+
+#: ../src/netlist-editor.c:391
+#, fuzzy
+msgid "Could not find the required file"
+msgstr ""
+"Non posso trovare il file richiesto:\n"
+"%s"
+
+#: ../src/main.c:107
+msgid "Enables some debugging functions"
+msgstr "Abilita alcune funzioni di debug"
+
+#: ../src/main.c:107
+msgid "LEVEL"
+msgstr "LIVELLO"
+
+#: ../src/main.c:132
+msgid ""
+"You seem to be running Oregano without\n"
+"having it installed properly on your system.\n"
+"\n"
+"Please install Oregano and try again."
+msgstr ""
+"Sembra che hai lanciato Oregano senza\n"
+"averlo installato correttamente sul sistema.\n"
+"\n"
+"Prova a installarlo nuovamente e riprova."
+
+#: ../src/main.c:155
+msgid ""
+"Could not find a parts library.\n"
+"\n"
+"This is probably due to a faulty installation\n"
+"of Oregano. Please check your installation."
+msgstr ""
+"Non posso trovare una libreria di parti.\n"
+"\n"
+"Questo e' probabilmente dovuto a una installazione errata\n"
+"di Oregano. Prova a controllare la tua installazione."
+
+#: ../src/main.c:212
+msgid "Welcome to Oregano"
+msgstr ""
+
+#: ../src/load-schematic.c:261
+msgid "Bad file format."
+msgstr ""
+
+#: ../src/load-schematic.c:271
+msgid "Unknown parser error."
+msgstr ""
+
+#: ../src/load-library.c:149
+#, c-format
+msgid "Could not find the requested symbol: %s\n"
+msgstr "Non posso trovare il simbolo richiesto: %s\n"
+
+#: ../src/load-library.c:165
+#, c-format
+msgid "Could not find the requested part: %s\n"
+msgstr "Non posso trovare la parte richiesta: %s\n"
+
+#: ../src/file.c:50 ../src/file.c:90
+msgid "Oregano Files"
+msgstr ""
+
+#: ../src/file.c:52 ../src/file.c:92
+msgid "All Files"
+msgstr ""
+
+#: ../src/file.c:55
+#, fuzzy
+msgid "Open File"
+msgstr "Apri file"
+
+#: ../src/file.c:95
+#, fuzzy
+msgid "Save File"
+msgstr "Salva"
+
+#: ../src/file.c:145
+#, fuzzy
+msgid "Netlist File"
+msgstr "Nome del file Netlist"
+
+#: ../src/file.c:221
+msgid "Open file"
+msgstr "Apri file"
+
+#: ../src/file.c:271
+msgid "Save schematic as"
+msgstr "Salva lo schema come"
+
+#: ../src/file.c:336
+msgid "Netlist filename"
+msgstr "Nome del file Netlist"
+
+#: ../src/dialogs.c:126
+#, fuzzy
+msgid ""
+"(c) 2003-2006 LUGFi\n"
+"(c) 1999-2001 Richard Hult"
+msgstr ""
+"(c) 2003,2005 LUGFi\n"
+"(c) 1999,2000 Richard Hult"
+
+#: ../src/dialogs.c:141
+msgid "Schematic capture and circuit simulation.\n"
+msgstr ""
+
+#: ../src/model/schematic.c:584
+#, c-format
+msgid "File %s does not exists."
+msgstr ""
+
+#: ../src/model/schematic.c:592 ../src/model/schematic.c:630
+#, c-format
+msgid "Unknown file format for %s."
+msgstr ""
+
+#: ../src/model/schematic.c:611
+msgid "Load fails!."
+msgstr ""
+
+#: ../src/plot-add-function.c:48
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this"
+msgstr ""
+
+#: ../src/plot-add-function.c:50 ../src/plot-add-function.c:57
+#, fuzzy
+msgid "Could not create plot window"
+msgstr "Non posso creare il browser delle parti"
+
+#, fuzzy
+#~ msgid "_View netlist"
+#~ msgstr "_Netlist"
+
+#, fuzzy
+#~ msgid "View a netlist"
+#~ msgstr "Genera la netlist"
+
+#~ msgid "View plot"
+#~ msgstr "Vedi diagramma"
+
+#~ msgid "View plot "
+#~ msgstr "Vedi diagramma"
+
+#, fuzzy
+#~ msgid "Could not find the simulation executable"
+#~ msgstr "Non posso creare il dialogo dei settaggi di simulazione "
+
+#, fuzzy
+#~ msgid "This probably means that you have not configured Oregano properly."
+#~ msgstr ""
+#~ "Non posso trovare l'eseguibile per la simulazione:\n"
+#~ "%s\n"
+#~ "\n"
+#~ "Probabilmente significa che non hai configurato\n"
+#~ "Oregano correttamente. Seleziona Settaggi e specifica\n"
+#~ "dove e' posizionato l'eseguibile (p.e. spice)."
+
+#, fuzzy
+#~ msgid "You have not entered a simulation executable"
+#~ msgstr "Non posso creare il dialogo dei settaggi di simulazione "
+
+#, fuzzy
+#~ msgid ""
+#~ "Please choose Settings and specify which program to use for simulations."
+#~ msgstr ""
+#~ "Non hai inserito l'eseguibile per la simulazione.\n"
+#~ "Seleziona Settaggi e specifica quale\n"
+#~ "programma usare per la simulazione."
+
+#, fuzzy
+#~ msgid "Parser"
+#~ msgstr "Incolla"
+
+#, fuzzy
+#~ msgid "<b>Format</b>"
+#~ msgstr "Formato del file"
+
+#, fuzzy
+#~ msgid "<b>Size</b>"
+#~ msgstr "Formato del file"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the required file:\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "Non posso trovare il file richiesto:\n"
+#~ "%s"
+
+#~ msgid " "
+#~ msgstr " "
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the required file:</"
+#~ "span>\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Non posso trovare il file richiesto:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not load file.</span>\n"
+#~ "\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Non posso trovare il file richiesto:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create a netlist</span>\n"
+#~ "\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Non posso trovare il file richiesto:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "<span weight=\"bold\">Could not create log window.</span>"
+#~ msgstr "Non posso creare il browser delle parti"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create settings dialog.</"
+#~ "span>"
+#~ msgstr "Non posso creare il dialogo dei settaggi."
+
+#, fuzzy
+#~ msgid ""
+#~ "<span size=\"x-large\" weigth=\"bold\">Transient analysis</span>\n"
+#~ "\n"
+#~ "Start time must be less than stop time."
+#~ msgstr ""
+#~ "Analisi del transitorio:\n"
+#~ "\n"
+#~ "L'istante iniziale deve essere minore di quello finale."
+
+#, fuzzy
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create simulation "
+#~ "settings dialog.</span>"
+#~ msgstr "Non posso creare il dialogo dei settaggi di simulazione "
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create simulation dialog."
+#~ "</span>"
+#~ msgstr "Non posso creare il dialogo dei settaggi di simulazione "
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\">Could not find the required file:\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "Non posso trovare il file richiesto:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\">Could not create textbox properties dialog.</span>"
+#~ msgstr "Non posso creare il dialogo dei settaggi."
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not save temporary netlist "
+#~ "file:\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "Non posso trovare il file richiesto:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "window"
+#~ msgstr "Annulla"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create simulation "
+#~ "settings dialog.</sapn>"
+#~ msgstr "Non posso creare il dialogo dei settaggi di simulazione "
+
+#, fuzzy
+#~ msgid "Oregano"
+#~ msgstr "Apri file"
+
+#, fuzzy
+#~ msgid "200%"
+#~ msgstr "100%"
+
+#, fuzzy
+#~ msgid "Set the zoom factor to 200%"
+#~ msgstr "Imposta il fattore di zoom a 100%"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create a netlist</span>\n"
+#~ "\n"
+#~ "Possibly dueto a faulty circuit schematic. Please check that\n"
+#~ "you have one o more test clamps and try again."
+#~ msgstr ""
+#~ "Impossibile generare la netlist, probabilmente questo e'\n"
+#~ "dovuto ad uno schema non corretto. Controlla di avere\n"
+#~ "un nodo di massa e riprova."
+
+#, fuzzy
+#~ msgid "Library: "
+#~ msgstr "Libreria: "
+
+#, fuzzy
+#~ msgid "Edit part properties"
+#~ msgstr "Modifica le proprieta' della parte"
+
+#, fuzzy
+#~ msgid "label"
+#~ msgstr "Posiziona"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the required file:\n"
+#~ "</span%s\n"
+#~ ">"
+#~ msgstr ""
+#~ "Non posso trovare il file richiesto:\n"
+#~ "%s"
+
+#~ msgid "_Close"
+#~ msgstr "_Chiudi"
+
+#, fuzzy
+#~ msgid "Print Schematic"
+#~ msgstr "Salva lo schema"
+
+#, fuzzy
+#~ msgid "Print preview"
+#~ msgstr "Anteprima"
+
+#, fuzzy
+#~ msgid "Paper Size"
+#~ msgstr "Proprieta'"
+
+#~ msgid "Warning"
+#~ msgstr "Attenzione"
+
+#~ msgid "Schematic %s has unsaved changes, save them?"
+#~ msgstr "Lo schema %s ha subito delle modifiche, salvarle?"
+
+#~ msgid "Schematic has unsaved changes, save them?"
+#~ msgstr "Lo schema ha subito delle modifiche, salvarle?"
+
+#, fuzzy
+#~ msgid "View the latest plot"
+#~ msgstr "Mostra il disegno corrente"
+
+#, fuzzy
+#~ msgid "Default"
+#~ msgstr "Cancella"
+
+#~ msgid "Spice Path: "
+#~ msgstr "Path di Spice:"
+
+#~ msgid "Data"
+#~ msgstr "Dati"
+
+#~ msgid "Library Path: "
+#~ msgstr "Path delle Librerie:"
+
+#~ msgid "Model Path: "
+#~ msgstr "Path dei Modelli:"
+
+#~ msgid "Start time: "
+#~ msgstr "Tempo iniziale:"
+
+#~ msgid "Stop time: "
+#~ msgstr "Tempo finale:"
+
+#~ msgid "Step size: "
+#~ msgstr "Dimensione del passo:"
+
+#~ msgid "Enable"
+#~ msgstr "Abilita"
+
+#, fuzzy
+#~ msgid "enable"
+#~ msgstr "Abilita"
+
+#~ msgid "An electrical engineering tool.\n"
+#~ msgstr "Un programma di sviluppo e disegno elettrico\n"
+
+#~ msgid "Temperature"
+#~ msgstr "Temperatura"
+
+#~ msgid ""
+#~ "Could not load Schematic file:\n"
+#~ "%s\n"
+#~ "\n"
+#~ "This is due to a change in the file format\n"
+#~ "used by Oregano. Please run the perl script\n"
+#~ "oregano-convert to convert a file to the new\n"
+#~ "format. Sorry for the inconvenience.\n"
+#~ msgstr ""
+#~ "Impossibile caricare il file Schematico:\n"
+#~ "%s\n"
+#~ "\n"
+#~ "Questo e' dovuto ad un cambiamento nel formato del file\n"
+#~ "usato da Oregano. Prova ad usare lo script perl\n"
+#~ "oregano-convert per convertire al nuovo formato di\n"
+#~ "file. Scusa per l'inconveniente.\n"
+
+#~ msgid "%P %% Done"
+#~ msgstr "%P %% Fatto"
+
+#~ msgid "Hide"
+#~ msgstr "Nascondi"
diff --git a/po/ja.po b/po/ja.po
new file mode 100644
index 0000000..ebfb546
--- /dev/null
+++ b/po/ja.po
@@ -0,0 +1,1596 @@
+# ja.po for oregano.
+# Copyright (C) 2000 Free Software Foundation, Inc.
+# Kazuya NUMATA <kaznum@gol.com>, 2000.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: oregano 0.19\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-11 02:36-0300\n"
+"PO-Revision-Date: 2000-11-16 20:00+0900\n"
+"Last-Translator: Satoru Sato <ssato@redhat.com>\n"
+"Language-Team: Japanese <translation@gnome.gr.jp>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=EUC-JP\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:1
+#, fuzzy
+msgid "<b>AC Analysis Options</b>"
+msgstr "¥ª¥×¥·¥ç¥ó"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:2
+#, fuzzy
+msgid "<b>Type</b>"
+msgstr "°ì»þ"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:3
+#, fuzzy
+msgid "Current"
+msgstr "ÀÚ¤ê¼è¤ê"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:4
+#, fuzzy
+msgid "Edit Clamp properties"
+msgstr "¥Ñ¡¼¥Ä¥×¥í¥Ñ¥Æ¥£¤òÊÔ½¸"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:5
+msgid "Imaginary part"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:6
+msgid "Magnitude"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:7
+#, fuzzy
+msgid "Phase"
+msgstr "Ž¤êÉÕ¤±"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:8
+msgid "Real part"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:9
+msgid "Use decibel scale"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:10
+msgid "Voltage"
+msgstr ""
+
+#: ../data/dialogs/log-window.glade2.h:1
+msgid "Clear"
+msgstr "½é´ü²½"
+
+#: ../data/dialogs/log-window.glade2.h:2
+msgid "Oregano Log Window"
+msgstr "Oregano ¥í¥°¥¦¥£¥ó¥É¥¦"
+
+#: ../data/dialogs/page-properties.glade2.h:1
+#, fuzzy
+msgid "<b>Alignment</b>"
+msgstr "°ì»þ"
+
+#: ../data/dialogs/page-properties.glade2.h:2
+#, fuzzy
+msgid "Center Horizontally"
+msgstr "¿åÊ¿Êý¸þ¤Ë΢ÊÖ¤¹(_F)"
+
+#: ../data/dialogs/page-properties.glade2.h:3
+#, fuzzy
+msgid "Center Vertically"
+msgstr "¿âľÊý¸þ¤Ë΢ÊÖ¤¹(_F)"
+
+#: ../data/dialogs/page-properties.glade2.h:4
+msgid "Fit to page"
+msgstr ""
+
+#: ../data/dialogs/page-properties.glade2.h:5
+#, fuzzy
+msgid "Print Properties"
+msgstr "¥×¥í¥Ñ¥Æ¥£"
+
+#: ../data/dialogs/part-browser.glade2.h:1
+#, fuzzy
+msgid "<b>Preview</b>"
+msgstr "¥Õ¡¼¥ê¥¨"
+
+#: ../data/dialogs/part-browser.glade2.h:2
+#, fuzzy
+msgid "Library:"
+msgstr "¥é¥¤¥Ö¥é¥ê: "
+
+#: ../data/dialogs/part-browser.glade2.h:3 ../src/schematic-view-ui.h:360
+msgid "Parts"
+msgstr "¥Ñ¡¼¥Ä"
+
+#: ../data/dialogs/part-browser.glade2.h:4
+msgid "Place"
+msgstr "ÇÛÃÖ"
+
+#: ../data/dialogs/part-browser.glade2.h:5
+msgid "Press this button to place the selected part"
+msgstr "ÁªÂò¥Ñ¡¼¥ë¤òÇÛÃÖ¤¹¤ë¤Ë¤Ï¤³¤Î¥Ü¥¿¥ó¤ò²¡¤·¤Æ²¼¤µ¤¤"
+
+#: ../data/dialogs/part-browser.glade2.h:6
+msgid "Search:"
+msgstr ""
+
+#: ../data/dialogs/part-browser.glade2.h:7
+msgid "Select which library to use"
+msgstr "¥é¥¤¥Ö¥é¥ê¤òÁªÂò¤·¤Æ²¼¤µ¤¤"
+
+#: ../data/dialogs/part-properties-dialog.glade2.h:1
+#, fuzzy
+msgid "Part Properties"
+msgstr "¥Ñ¡¼¥Ä¥×¥í¥Ñ¥Æ¥£¤òÊÔ½¸"
+
+#: ../data/dialogs/plot-window.glade2.h:1
+#, fuzzy
+msgid "<b>Plot</b>"
+msgstr "¥Õ¥¡¥¤¥ë·Á¼°"
+
+#: ../data/dialogs/plot-window.glade2.h:2
+#, fuzzy
+msgid "<b>Variables</b>"
+msgstr "ÊÑ¿ô"
+
+#: ../data/dialogs/plot-window.glade2.h:3
+msgid "Plot"
+msgstr "¥×¥í¥Ã¥È"
+
+#: ../data/dialogs/plot-window.glade2.h:4
+#, fuzzy
+msgid "Region"
+msgstr "¥ê¥É¥¥"
+
+#: ../data/dialogs/plot-window.glade2.h:5
+msgid "Shift"
+msgstr ""
+
+#: ../data/dialogs/properties.glade2.h:1
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:1
+msgid " "
+msgstr ""
+
+#: ../data/dialogs/properties.glade2.h:2
+#, fuzzy
+msgid "<b>Comments</b>"
+msgstr "°ì»þ"
+
+#: ../data/dialogs/properties.glade2.h:3
+msgid "Author:"
+msgstr ""
+
+#: ../data/dialogs/properties.glade2.h:4 ../src/sheet/part-item.c:147
+msgid "Properties"
+msgstr "¥×¥í¥Ñ¥Æ¥£"
+
+#: ../data/dialogs/properties.glade2.h:5
+#, fuzzy
+msgid "Title:"
+msgstr "¥Õ¥¡¥¤¥ë(_F)"
+
+#: ../data/dialogs/settings.glade2.h:1
+msgid "\n"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:3
+#, fuzzy
+msgid "<b>Data Paths</b>"
+msgstr "¼Â¹Ô¥×¥í¥°¥é¥à"
+
+#: ../data/dialogs/settings.glade2.h:4
+msgid "<b>Engine</b>"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:5
+#, fuzzy
+msgid "<b>Executable Path</b>"
+msgstr "¼Â¹Ô¥×¥í¥°¥é¥à"
+
+#: ../data/dialogs/settings.glade2.h:6
+#, fuzzy
+msgid "<b>File Format</b>"
+msgstr "¥Õ¥¡¥¤¥ë·Á¼°"
+
+#: ../data/dialogs/settings.glade2.h:7
+#, fuzzy
+msgid "<b>User Interface</b>"
+msgstr "¥æ¡¼¥¶¥¤¥ó¥¿¥Õ¥§¡¼¥¹"
+
+#: ../data/dialogs/settings.glade2.h:8
+#, fuzzy
+msgid "Automatically show log windows after simulation"
+msgstr "¥·¥ß¥å¥ì¡¼¥·¥ç¥ó¤Î¸å¤Ç¼«Æ°Åª¤Ë¥í¥°¥¦¥£¥ó¥É¥¦¤òɽ¼¨"
+
+#: ../data/dialogs/settings.glade2.h:9
+msgid "Compress saved files"
+msgstr "Êݸ¥Õ¥¡¥¤¥ë¤ò°µ½Ì"
+
+#: ../data/dialogs/settings.glade2.h:10
+#, fuzzy
+msgid "Grid size[px] "
+msgstr "¥°¥ê¥Ã¥É¥µ¥¤¥º [px]: "
+
+#: ../data/dialogs/settings.glade2.h:11
+#, fuzzy
+msgid "Library"
+msgstr "¥é¥¤¥Ö¥é¥ê: "
+
+#: ../data/dialogs/settings.glade2.h:12
+msgid "Model"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:13
+msgid "Paths"
+msgstr "¥Ñ¥¹"
+
+#: ../data/dialogs/settings.glade2.h:14
+#, fuzzy
+msgid "Preferences"
+msgstr "ÀßÄê(_P)"
+
+#: ../data/dialogs/settings.glade2.h:15
+#, fuzzy
+msgid "Realtime update of selection (slow)"
+msgstr "ÁªÂò¾õ¶·¤Î¥ê¥¢¥ë¥¿¥¤¥à¹¹¿·(ÃÙ¤¯¤Ê¤ê¤Þ¤¹)"
+
+#: ../data/dialogs/settings.glade2.h:16
+msgid "Remove"
+msgstr "¾Ãµî"
+
+#: ../data/dialogs/settings.glade2.h:17
+#, fuzzy
+msgid "Select A File"
+msgstr "¤¹¤Ù¤ÆÁªÂò(_a)"
+
+#: ../data/dialogs/settings.glade2.h:18
+msgid "Show the splash screen at application startup"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:19
+msgid "TODO : Add FINDPATH for Engines"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:20
+msgid "User Interface"
+msgstr "¥æ¡¼¥¶¥¤¥ó¥¿¥Õ¥§¡¼¥¹"
+
+#: ../data/dialogs/sim-settings.glade2.h:1
+msgid "<b>AC</b>"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:2
+#, fuzzy
+msgid "<b>DC Sweep</b>"
+msgstr "DC ÁÞ°ú"
+
+#: ../data/dialogs/sim-settings.glade2.h:3
+#, fuzzy
+msgid "<b>Fourier</b>"
+msgstr "¥Õ¡¼¥ê¥¨"
+
+#: ../data/dialogs/sim-settings.glade2.h:4
+#, fuzzy
+msgid "<b>Transient</b>"
+msgstr "°ì»þ"
+
+#: ../data/dialogs/sim-settings.glade2.h:5
+msgid "Add new options"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:6
+#, fuzzy
+msgid "Add to list"
+msgstr "¥ê¥¹¥È¤ËÄɲÃ"
+
+#: ../data/dialogs/sim-settings.glade2.h:7
+#, fuzzy
+msgid "Analysis Options"
+msgstr "¥ª¥×¥·¥ç¥ó"
+
+#: ../data/dialogs/sim-settings.glade2.h:8
+msgid "Analysis Parameters"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:9
+msgid "DEC"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:10
+msgid "Frequency"
+msgstr "¼þÇÈ¿ô"
+
+#: ../data/dialogs/sim-settings.glade2.h:11
+msgid "LIN"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:12
+msgid "List of outputs"
+msgstr "½ÐÎϤΥꥹ¥È"
+
+#: ../data/dialogs/sim-settings.glade2.h:13
+msgid "OCT"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:14
+#, fuzzy
+msgid "Points"
+msgstr "¥×¥ê¥ó¥¿¥À¥¤¥¢¥í¥°"
+
+#: ../data/dialogs/sim-settings.glade2.h:15
+#, fuzzy
+msgid "Simulation Settings"
+msgstr "¥·¥ß¥å¥ì¡¼¥ÈÀßÄê"
+
+#: ../data/dialogs/sim-settings.glade2.h:16
+msgid "Source"
+msgstr "¥½¡¼¥¹"
+
+#: ../data/dialogs/sim-settings.glade2.h:17
+msgid "Start"
+msgstr "³«»Ï"
+
+#: ../data/dialogs/sim-settings.glade2.h:18
+#, fuzzy
+msgid "Step"
+msgstr "¥¹¥Æ¥Ã¥×"
+
+#: ../data/dialogs/sim-settings.glade2.h:19
+msgid "Stop"
+msgstr "Ää»ß"
+
+#: ../data/dialogs/sim-settings.glade2.h:20
+msgid "Type"
+msgstr "¥¿¥¤¥×"
+
+#: ../data/dialogs/sim-settings.glade2.h:21
+msgid "Use Initial Conditions"
+msgstr ""
+
+#: ../data/dialogs/simulation.glade2.h:1
+#, fuzzy
+msgid "Progress: None"
+msgstr "¿Ê¹Ô¾õ¶·:"
+
+#: ../data/dialogs/simulation.glade2.h:2
+msgid "Simulation"
+msgstr "¥·¥ß¥å¥ì¡¼¥·¥ç¥ó"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:2
+#, fuzzy
+msgid "<b>Text</b>"
+msgstr "°ì»þ"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:3
+#, fuzzy
+msgid "Text Properties"
+msgstr "¥×¥í¥Ñ¥Æ¥£"
+
+#: ../data/dialogs/view-netlist.glade2.h:1
+#, fuzzy
+msgid "Netlist View"
+msgstr "¥Í¥Ã¥È¥ê¥¹¥È¥Õ¥¡¥¤¥ë̾"
+
+#: ../data/dialogs/view-netlist.glade2.h:2 ../src/schematic-view-ui.h:161
+msgid "_Simulate"
+msgstr "¥·¥ß¥å¥ì¡¼¥È(_S)"
+
+#: ../src/sheet/part-item.c:147
+msgid "Edit the part's properties"
+msgstr "¥Ñ¡¼¥Ä¥×¥í¥Ñ¥Æ¥£¤ÎÊÔ½¸"
+
+#: ../src/sheet/part-item.c:616 ../src/sheet/part-item.c:765
+#: ../src/sheet/textbox-item.c:679 ../src/sim-settings.c:775
+#: ../src/settings.c:139 ../src/schematic-view.c:251
+#: ../src/schematic-view.c:317 ../src/schematic-view.c:2431 ../src/plot.c:434
+#: ../src/plot.c:689 ../src/part-browser.c:496 ../src/netlist-editor.c:309
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this."
+msgstr ""
+
+#: ../src/sheet/part-item.c:618 ../src/sheet/part-item.c:626
+#: ../src/sheet/part-item.c:767 ../src/sheet/part-item.c:775
+msgid "Could not create part properties dialog."
+msgstr "¥Ñ¡¼¥Ä¥×¥í¥Ñ¥Æ¥£¥À¥¤¥¢¥í¥°¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: ../src/sheet/sheet-item.c:307 ../src/schematic-view-ui.h:288
+msgid "Copy"
+msgstr "¥³¥Ô¡¼"
+
+#: ../src/sheet/sheet-item.c:307
+msgid "Copy the object to the clipboard"
+msgstr "¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤ËŽ¤êÉÕ¤±"
+
+#: ../src/sheet/sheet-item.c:310 ../src/schematic-view-ui.h:285
+msgid "Cut"
+msgstr "ÀÚ¤ê¼è¤ê"
+
+#: ../src/sheet/sheet-item.c:310
+msgid "Cut the object to the clipboard"
+msgstr "¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤ËÀÚ¤ê¼è¤ê"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete"
+msgstr "¾Ãµî"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete the object"
+msgstr "¥ª¥Ö¥¸¥§¥¯¥È¤ò¾Ãµî"
+
+#: ../src/sheet/sheet-item.c:319
+msgid "Rotate"
+msgstr "²óž"
+
+#: ../src/sheet/sheet-item.c:320
+msgid "Rotate the selected objects 90 degrees clockwise"
+msgstr "ÁªÂò¥ª¥Ö¥¸¥§¥¯¥È¤ò»þ·×¼þ¤ê¤Ë 90 ÅÙ²óž"
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit..."
+msgstr "ÊÔ½¸..."
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit the text"
+msgstr "¥Æ¥­¥¹¥È¤òÊÔ½¸"
+
+#: ../src/sheet/textbox-item.c:596
+msgid "Label"
+msgstr "¥é¥Ù¥ë"
+
+#: ../src/sheet/textbox-item.c:681 ../src/sheet/textbox-item.c:690
+#, fuzzy
+msgid "Could not create textbox properties dialog"
+msgstr "¥Ñ¡¼¥Ä¥×¥í¥Ñ¥Æ¥£¥À¥¤¥¢¥í¥°¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: ../src/simulation.c:102 ../src/simulation.c:109 ../src/simulation.c:115
+#, fuzzy
+msgid "Could not create simulation dialog"
+msgstr "¥·¥ß¥å¥ì¡¼¥È¥À¥¤¥¢¥í¥°¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: ../src/simulation.c:150
+#, fuzzy, c-format
+msgid "Progress: <b>%s</b>"
+msgstr "¿Ê¹Ô¾õ¶·:"
+
+#: ../src/simulation.c:201
+#, fuzzy
+msgid ""
+"<span weight=\"bold\" size=\"large\">The simulation was aborted due to an "
+"error.</span>\n"
+"\n"
+"Would you like to view the error log?"
+msgstr ""
+"¥·¥ß¥å¥ì¡¼¥·¥ç¥ó¤Ï¥¨¥é¡¼¤Î¤¿¤á¤ËÃæ»ß¤µ¤ì¤Þ¤·¤¿¡£\n"
+"¥¨¥é¡¼¥í¥°¤ò¤´Í÷¤Ë¤Ê¤ê¤Þ¤¹¤«?"
+
+#: ../src/simulation.c:211
+#, fuzzy
+msgid "The simulation was aborted due to an error"
+msgstr "¥·¥ß¥å¥ì¡¼¥·¥ç¥ó¤Ï¥¨¥é¡¼¤Î¤¿¤á¤ËÃæ»ß¤µ¤ì¤Þ¤·¤¿"
+
+#: ../src/sim-settings.c:229
+msgid "Add new option"
+msgstr ""
+
+#: ../src/sim-settings.c:777 ../src/sim-settings.c:784
+#: ../src/sim-settings.c:790
+#, fuzzy
+msgid "Could not create simulation settings dialog"
+msgstr "¥·¥ß¥å¥ì¡¼¥È¥À¥¤¥¢¥í¥°¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: ../src/sim-settings.c:814
+msgid "Option"
+msgstr "¥ª¥×¥·¥ç¥ó"
+
+#: ../src/sim-settings.c:816
+msgid "Value"
+msgstr "ÃÍ"
+
+#: ../src/settings.c:141 ../src/settings.c:148 ../src/settings.c:154
+#, fuzzy
+msgid "Could not create settings dialog"
+msgstr "¥·¥ß¥å¥ì¡¼¥È¥À¥¤¥¢¥í¥°¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: ../src/settings.c:215
+msgid "Engine executable not found"
+msgstr ""
+
+#: ../src/settings.c:216
+msgid "The engine is unable to locate the external program."
+msgstr ""
+
+#: ../src/schematic-view.c:254
+#, fuzzy
+msgid "Could not create properties dialog"
+msgstr "¥Ñ¡¼¥Ä¥×¥í¥Ñ¥Æ¥£¥À¥¤¥¢¥í¥°¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: ../src/schematic-view.c:320
+#, fuzzy
+msgid "Could not create the page properties dialog"
+msgstr "¥Ñ¡¼¥Ä¥×¥í¥Ñ¥Æ¥£¥À¥¤¥¢¥í¥°¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: ../src/schematic-view.c:383
+#, fuzzy
+msgid "Could not load file"
+msgstr "¿Þ¼°¥Õ¥¡¥¤¥ë %s ¤òÊݸ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿\n"
+
+#: ../src/schematic-view.c:410 ../src/schematic-view.c:1304
+#: ../src/schematic-view.c:1312
+msgid "Untitled.oregano"
+msgstr ""
+
+#: ../src/schematic-view.c:415
+#, fuzzy
+msgid "Could not save schematic file"
+msgstr "¿Þ¼°¥Õ¥¡¥¤¥ë %s ¤òÊݸ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿\n"
+
+#: ../src/schematic-view.c:765 ../src/netlist-editor.c:225
+#: ../src/netlist-editor.c:436
+#, fuzzy
+msgid "Could not create a netlist"
+msgstr "¥Ñ¡¼¥Ä¥Ö¥é¥¦¥¶¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: ../src/schematic-view.c:768 ../src/netlist-editor.c:229
+#: ../src/netlist-editor.c:439
+msgid "An unexpected error has occurred"
+msgstr ""
+
+#: ../src/schematic-view.c:1313
+msgid "Untitled.netlist"
+msgstr ""
+
+#: ../src/schematic-view.c:1504
+#, fuzzy, c-format
+msgid ""
+"<span weight=\"bold\" size=\"large\">Save changes to schematic %s before "
+"closing?</span>\n"
+"\n"
+"If you don't save, all changes since you last saved will be permanently lost."
+msgstr ""
+"¥·¥ß¥å¥ì¡¼¥·¥ç¥ó¤Ï¥¨¥é¡¼¤Î¤¿¤á¤ËÃæ»ß¤µ¤ì¤Þ¤·¤¿¡£\n"
+"¥¨¥é¡¼¥í¥°¤ò¤´Í÷¤Ë¤Ê¤ê¤Þ¤¹¤«?"
+
+#: ../src/schematic-view.c:1516
+msgid "Close _without Saving"
+msgstr ""
+
+#: ../src/schematic-view.c:2434 ../src/schematic-view.c:2445
+#, fuzzy
+msgid "Could not create the log window"
+msgstr "¥×¥í¥Ã¥È¥¦¥£¥ó¥É¥¦¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: ../src/schematic-view-ui.h:38
+msgid "_New"
+msgstr "¿·µ¬(_N)"
+
+#: ../src/schematic-view-ui.h:38 ../src/schematic-view-ui.h:264
+msgid "Create a new schematic"
+msgstr "¿·µ¬¿Þ¼°¤òÀ¸À®"
+
+#: ../src/schematic-view-ui.h:47
+#, fuzzy
+msgid "Page Properties"
+msgstr "¥Ñ¡¼¥Ä¥×¥í¥Ñ¥Æ¥£¤òÊÔ½¸"
+
+#: ../src/schematic-view-ui.h:48
+#, fuzzy
+msgid "Set print properties"
+msgstr "¥Ñ¡¼¥Ä¥×¥í¥Ñ¥Æ¥£¤òÊÔ½¸"
+
+#: ../src/schematic-view-ui.h:56 ../src/print.c:367 ../src/plot.c:150
+#: ../src/netlist-editor.c:193
+#, fuzzy
+msgid "Print Preview"
+msgstr "»î¼Ì"
+
+#: ../src/schematic-view-ui.h:57
+#, fuzzy
+msgid "Preview the schematic before printing"
+msgstr "¿Þ¼°¤Î¥×¥í¥Ñ¥Æ¥£¤òÊѹ¹"
+
+#: ../src/schematic-view-ui.h:65
+msgid "Schematic _Properties..."
+msgstr "¿Þ¼°¥×¥í¥Ñ¥Æ¥£(_P)..."
+
+#: ../src/schematic-view-ui.h:66
+msgid "Modify the schematic's properties"
+msgstr "¿Þ¼°¤Î¥×¥í¥Ñ¥Æ¥£¤òÊѹ¹"
+
+#: ../src/schematic-view-ui.h:95
+msgid "_Delete"
+msgstr "¾Ãµî(_D)"
+
+#: ../src/schematic-view-ui.h:96
+msgid "Delete the selection"
+msgstr "ÁªÂò¤µ¤ì¤¿¤â¤Î¤ò¾Ãµî"
+
+#: ../src/schematic-view-ui.h:102
+msgid "_Rotate"
+msgstr "²óž(_R)"
+
+#: ../src/schematic-view-ui.h:103
+msgid "Rotate the selection clockwise"
+msgstr "ÁªÂò¤µ¤ì¤¿¤â¤Î¤ò»þ·×Êý¸þ¤Ë²óž"
+
+#: ../src/schematic-view-ui.h:109
+#, fuzzy
+msgid "Flip _horizontally"
+msgstr "ÁªÂò¤µ¤ì¤¿¤â¤Î¤ò¿åÊ¿Êý¸þ¤Ë΢ÊÖ¤¹"
+
+#: ../src/schematic-view-ui.h:110
+msgid "Flip the selection horizontally"
+msgstr "ÁªÂò¤µ¤ì¤¿¤â¤Î¤ò¿åÊ¿Êý¸þ¤Ë΢ÊÖ¤¹"
+
+#: ../src/schematic-view-ui.h:116
+#, fuzzy
+msgid "Flip _vertically"
+msgstr "ÁªÂò¤µ¤ì¤¿¤â¤Î¤ò¿âľÊý¸þ¤Ë΢ÊÖ¤¹"
+
+#: ../src/schematic-view-ui.h:117
+msgid "Flip the selection vertically"
+msgstr "ÁªÂò¤µ¤ì¤¿¤â¤Î¤ò¿âľÊý¸þ¤Ë΢ÊÖ¤¹"
+
+#: ../src/schematic-view-ui.h:124
+#, fuzzy
+msgid "Select _all"
+msgstr "¤¹¤Ù¤Æ¤ÎÁªÂò¤ò²ò½ü(_D)"
+
+#: ../src/schematic-view-ui.h:125
+msgid "Select all objects on the sheet"
+msgstr "¥·¡¼¥È¾å¤Î¤¹¤Ù¤Æ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÁªÂò"
+
+#: ../src/schematic-view-ui.h:131
+#, fuzzy
+msgid "Deselect a_ll"
+msgstr "¤¹¤Ù¤Æ¤ÎÁªÂò¤ò²ò½ü(_D)"
+
+#: ../src/schematic-view-ui.h:132
+msgid "Deselect the selected objects"
+msgstr "¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁªÂò¤ò²ò½ü"
+
+#: ../src/schematic-view-ui.h:140
+#, fuzzy
+msgid "_Object Properties..."
+msgstr "¥ª¥Ö¥¸¥§¥¯¥È¤Î¥×¥í¥Ñ¥Æ¥£(_P)..."
+
+#: ../src/schematic-view-ui.h:141
+msgid "Modify the object's properties"
+msgstr "¥ª¥Ö¥¸¥§¥¯¥È¤Î¥×¥í¥Ñ¥Æ¥£¤òÊѹ¹"
+
+#: ../src/schematic-view-ui.h:146
+msgid "Simulation S_ettings..."
+msgstr "¥·¥ß¥å¥ì¡¼¥ÈÀßÄê(_e)"
+
+#: ../src/schematic-view-ui.h:147
+msgid "Edit the simulation settings"
+msgstr "¥·¥ß¥å¥ì¡¼¥ÈÀßÄê¤òÊÔ½¸"
+
+#: ../src/schematic-view-ui.h:162
+msgid "Run a simulation"
+msgstr "¥·¥ß¥å¥ì¡¼¥·¥ç¥ó¤ò¼Â¹Ô"
+
+#: ../src/schematic-view-ui.h:169
+msgid "_Generate netlist"
+msgstr "°ìÈ̥ͥåȥꥹ¥È(_G)"
+
+#: ../src/schematic-view-ui.h:170
+msgid "Generate a netlist"
+msgstr "¥Í¥Ã¥È¥ê¥¹¥È¤òÀ¸À®"
+
+#: ../src/schematic-view-ui.h:177
+msgid "50%"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:178
+msgid "Set the zoom factor to 50%"
+msgstr "³ÈÂçΨ¤ò 50 % ¤ËÀßÄê"
+
+#: ../src/schematic-view-ui.h:179
+msgid "75%"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:180
+msgid "Set the zoom factor to 75%"
+msgstr "³ÈÂçΨ¤ò 75 % ¤ËÀßÄê"
+
+#. GNOMEUIINFO_ITEM_NONE(N_("50%"),
+#. N_("Set the zoom factor to 50%"), plot_zoom_50_cmd),
+#. GNOMEUIINFO_ITEM_NONE(N_("75%"),
+#. N_("Set the zoom factor to 75%"), plot_zoom_75_cmd),
+#: ../src/schematic-view-ui.h:181 ../src/plot.c:167
+msgid "100%"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:182 ../src/plot.c:168
+msgid "Set the zoom factor to 100%"
+msgstr "³ÈÂçΨ¤ò 100 % ¤ËÀßÄê"
+
+#: ../src/schematic-view-ui.h:184
+msgid "125%"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:185
+msgid "Set the zoom factor to 125%"
+msgstr "³ÈÂçΨ¤ò 125 % ¤ËÀßÄê"
+
+#: ../src/schematic-view-ui.h:186
+msgid "150%"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:187
+msgid "Set the zoom factor to 150%"
+msgstr "³ÈÂçΨ¤ò 150 % ¤ËÀßÄê"
+
+#: ../src/schematic-view-ui.h:196
+msgid "Zoom"
+msgstr "³ÈÂç"
+
+#: ../src/schematic-view-ui.h:202
+msgid "_Log"
+msgstr "¥í¥°(_L)"
+
+#: ../src/schematic-view-ui.h:202
+msgid "View the latest simulation log"
+msgstr "ºÇ¿·¤Î¥·¥ß¥å¥ì¡¼¥È¥í¥°¤ò¸«¤ë"
+
+#: ../src/schematic-view-ui.h:205
+msgid "_Node labels"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:205
+#, fuzzy
+msgid "Show or hide node labels"
+msgstr "¥Ñ¡¼¥Ä¥Ö¥é¥¦¥¶¤òɽ¼¨(±£¤¹)"
+
+#: ../src/schematic-view-ui.h:207
+#, fuzzy
+msgid "N_etlist"
+msgstr "¥Í¥Ã¥È¥ê¥¹¥È¥Õ¥¡¥¤¥ë̾"
+
+#: ../src/schematic-view-ui.h:208
+#, fuzzy
+msgid "View the circuit netlist"
+msgstr "ºÇ¿·¤Î¥·¥ß¥å¥ì¡¼¥È¥Í¥Ã¥È¥ê¥¹¥È¤ò¸«¤ë"
+
+#: ../src/schematic-view-ui.h:240
+msgid "_Contents"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:240
+msgid "Show program help"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:254
+msgid "_Tools"
+msgstr "¥Ä¡¼¥ë(_T)"
+
+#: ../src/schematic-view-ui.h:264
+msgid "New"
+msgstr "¿·µ¬"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open"
+msgstr "³«¤¯"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open an existing schematic"
+msgstr "´û¸¤Î¿Þ¼°¤ò³«¤¯"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save"
+msgstr "Êݸ"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save the schematic"
+msgstr "¿Þ¼°¤òÊݸ"
+
+#: ../src/schematic-view-ui.h:285
+msgid "Cut the selection to the clipboard"
+msgstr "ÁªÂò¤µ¤ì¤¿¤â¤Î¤ò¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤ËÀÚ¤ê¼è¤ê"
+
+#: ../src/schematic-view-ui.h:288
+msgid "Copy the selection to the clipboard"
+msgstr "ÁªÂò¤µ¤ì¤¿¤â¤Î¤ò¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤Ë¥³¥Ô¡¼"
+
+#: ../src/schematic-view-ui.h:291 ../src/schematic-view-ui.h:404
+msgid "Paste"
+msgstr "Ž¤êÉÕ¤±"
+
+#: ../src/schematic-view-ui.h:291
+#, fuzzy
+msgid "Paste the clipboard"
+msgstr "¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤«¤éŽ¤êÉÕ¤±"
+
+#: ../src/schematic-view-ui.h:301
+msgid "Arrow"
+msgstr "Ìð°õ"
+
+#: ../src/schematic-view-ui.h:302
+msgid "Select, move and modify objects"
+msgstr "¥ª¥Ö¥¸¥§¥¯¥È¤òÁªÂò¤·¡¢°ÜÆ°¡¢Êѹ¹"
+
+#: ../src/schematic-view-ui.h:307
+msgid "Text"
+msgstr "¥Æ¥­¥¹¥È"
+
+#: ../src/schematic-view-ui.h:308
+msgid "Put text on the schematic"
+msgstr "¿Þ¼°¤Ë¥Æ¥­¥¹¥È¤òÃÖ¤¯"
+
+#: ../src/schematic-view-ui.h:313
+msgid "Wires"
+msgstr "¥ï¥¤¥¢"
+
+#: ../src/schematic-view-ui.h:314
+msgid "Draw wires"
+msgstr "¥ï¥¤¥¢¤òÉÁ²è"
+
+#: ../src/schematic-view-ui.h:330
+msgid "Add Voltage Clamp"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:331
+msgid "Add a Voltage test clamp"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:336
+msgid "Simulate"
+msgstr "¥·¥ß¥å¥ì¡¼¥È"
+
+#: ../src/schematic-view-ui.h:337
+msgid "Run a simulation for the current schematic"
+msgstr "¸½ºß¤Î¿Þ¼°¤ò¥·¥ß¥å¥ì¡¼¥È"
+
+#: ../src/schematic-view-ui.h:342 ../src/schematic-view-ui.h:343
+msgid "Simulation settings"
+msgstr "¥·¥ß¥å¥ì¡¼¥ÈÀßÄê"
+
+#: ../src/schematic-view-ui.h:361
+msgid "Show or hide the part browser"
+msgstr "¥Ñ¡¼¥Ä¥Ö¥é¥¦¥¶¤òɽ¼¨(±£¤¹)"
+
+#: ../src/schematic-view-ui.h:366
+msgid "Grid"
+msgstr "¥°¥ê¥Ã¥É"
+
+#: ../src/schematic-view-ui.h:367
+msgid "Turn on/off the grid"
+msgstr "¥°¥ê¥Ã¥É¤òɽ¼¨(Èóɽ¼¨)"
+
+#: ../src/schematic-view-ui.h:372 ../src/schematic-view-ui.h:373
+msgid "Zoom in"
+msgstr "³ÈÂç"
+
+#: ../src/schematic-view-ui.h:378 ../src/schematic-view-ui.h:379
+msgid "Zoom out"
+msgstr "½Ì¾®"
+
+#: ../src/schematic-view-ui.h:405
+msgid "Paste the contents of the clipboard to the sheet"
+msgstr "¥·¡¼¥È¤Ë¥¯¥ê¥Ã¥×¥Ü¡¼¥É¤«¤éŽ¤êÉÕ¤±"
+
+#: ../src/print.c:297
+#, fuzzy
+msgid "Print"
+msgstr "¥×¥ê¥ó¥¿¥À¥¤¥¢¥í¥°"
+
+#: ../src/print.c:304
+#, fuzzy
+msgid "Pages"
+msgstr "¥Ñ¥¹"
+
+#: ../src/print.c:339
+msgid "Can't get paper info! .. getting default!"
+msgstr ""
+
+#: ../src/print.c:353
+#, fuzzy
+msgid "Could not create font for printing."
+msgstr "¥Õ¥©¥ó¥È¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: ../src/print.c:372
+msgid "Printing failed."
+msgstr ""
+
+#: ../src/plot.c:61 ../src/plot.c:62
+msgid "Sans 10"
+msgstr ""
+
+#: ../src/plot.c:63
+msgid "Sans 8"
+msgstr ""
+
+#: ../src/plot.c:151
+#, fuzzy
+msgid "Preview the plot before printing"
+msgstr "¿Þ¼°¤Î¥×¥í¥Ñ¥Æ¥£¤òÊѹ¹"
+
+#: ../src/plot.c:153
+msgid "Export plot"
+msgstr ""
+
+#: ../src/plot.c:154
+msgid "Show the export menu"
+msgstr ""
+
+#: ../src/plot.c:155
+#, fuzzy
+msgid "Add Function"
+msgstr "°ì»þ"
+
+#: ../src/plot.c:156
+msgid "Add new function to the graph"
+msgstr ""
+
+#: ../src/plot.c:180
+msgid "_Preferences..."
+msgstr "ÀßÄê(_P)"
+
+#: ../src/plot.c:182
+msgid "Show crosshairs"
+msgstr ""
+
+#: ../src/plot.c:183
+#, fuzzy
+msgid "_Zoom"
+msgstr "³ÈÂç"
+
+#: ../src/plot.c:190
+#, fuzzy
+msgid "Schematic Plot"
+msgstr "¿Þ¼°¥×¥í¥Ñ¥Æ¥£(_P)..."
+
+#: ../src/plot.c:196
+msgid "_File"
+msgstr "¥Õ¥¡¥¤¥ë(_F)"
+
+#: ../src/plot.c:197
+msgid "_Plot"
+msgstr "¥×¥í¥Ã¥È(_P)"
+
+#. Simulation failed?
+#: ../src/plot.c:330
+msgid "The simulation produced no data!!\n"
+msgstr ""
+
+#: ../src/plot.c:340 ../src/plot.c:574
+#, fuzzy, c-format
+msgid "Plot - %s"
+msgstr "¥×¥í¥Ã¥È"
+
+#: ../src/plot.c:349
+msgid "Nodes"
+msgstr ""
+
+#: ../src/plot.c:352 ../src/plot.c:636
+#, fuzzy
+msgid "Functions"
+msgstr "°ì»þ"
+
+#: ../src/plot.c:424
+#, fuzzy
+msgid "Oregano - Plot"
+msgstr "Oregano ¥í¥°¥¦¥£¥ó¥É¥¦"
+
+#: ../src/plot.c:436 ../src/plot.c:443
+msgid "Could not create plot window."
+msgstr "¥×¥í¥Ã¥È¥¦¥£¥ó¥É¥¦¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: ../src/plot.c:659
+msgid "TRANSFER"
+msgstr ""
+
+#: ../src/plot.c:691 ../src/plot.c:698
+#, fuzzy
+msgid "Could not create plot export window."
+msgstr "¥×¥í¥Ã¥È¥¦¥£¥ó¥É¥¦¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#. if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (export_png)))
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PNG;
+#. else
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PS;
+#: ../src/plot.c:719
+#, fuzzy
+msgid "Save PNG"
+msgstr "Êݸ"
+
+#: ../src/part-browser.c:135 ../src/part-browser.c:614
+msgid ""
+"Gtk version 2.2 does not support GtkTreeModelFilter...\n"
+"Filtering disable!"
+msgstr ""
+
+#: ../src/part-browser.c:187 ../src/part-browser.c:401
+msgid "Unable to load required part"
+msgstr ""
+
+#: ../src/part-browser.c:499 ../src/part-browser.c:507
+#, fuzzy
+msgid "Could not create part browser"
+msgstr "¥Ñ¡¼¥Ä¥Ö¥é¥¦¥¶¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: ../src/oregano-config.c:123
+#, c-format
+msgid "Loading %s ..."
+msgstr ""
+
+#: ../src/oregano-config.c:164
+#, fuzzy, c-format
+msgid "Could not read the parts library: %s "
+msgstr "¥Ñ¡¼¥Ä¥Ö¥é¥¦¥¶¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: ../src/oregano-config.c:166
+#, fuzzy
+msgid ""
+"The file is probably corrupt. Please reinstall the parts\n"
+"library or Oregano and try again."
+msgstr ""
+"¥Ñ¡¼¥Ä¥é¥¤¥Ö¥é¥ê¤ò¤ß¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿: %s\n"
+"\n"
+"¥Õ¥¡¥¤¥ë¤Ï¤ª¤½¤é¤¯¤³¤ï¤ì¤Æ¤¤¤Þ¤¹¡£¥Ñ¡¼¥Ä¥é¥¤¥Ö¥é¥ê¤«\n"
+"Oregano ¤òºÆ¥¤¥ó¥¹¥È¡¼¥ë¤·¤ÆºÆ»î¹Ô¤·¤Æ²¼¤µ¤¤¡£"
+
+#: ../src/engines/netlist.c:436
+msgid "No ground node. Aborting.\n"
+msgstr "¥°¥é¥¦¥ó¥É¥Î¡¼¥É¤¬¤¢¤ê¤Þ¤»¤ó¡£Ãæ»ß¤·¤Þ¤¹¡£\n"
+
+#: ../src/engines/netlist.c:441
+#, fuzzy
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have a ground node and try again."
+msgstr ""
+"¥Í¥Ã¥È¥ê¥¹¥È¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£¤ª¤½¤é¤¯\n"
+"ÉÔÀµ¤Ê²óÏ©¿Þ¤Î¤»¤¤¤Ç¤¹¡£¥°¥é¥¦¥ó¥É¥Î¡¼¥É¤¬¤¢¤ë\n"
+"¤³¤È¤ò³Îǧ¤·¡¢ºÆ»î¹Ô¤·¤Æ²¼¤µ¤¤¡£"
+
+#: ../src/engines/netlist.c:450
+#, fuzzy
+msgid "No test clamps found. Aborting.\n"
+msgstr "¥°¥é¥¦¥ó¥É¥Î¡¼¥É¤¬¤¢¤ê¤Þ¤»¤ó¡£Ãæ»ß¤·¤Þ¤¹¡£\n"
+
+#: ../src/engines/netlist.c:455
+#, fuzzy
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have one o more test clamps and try again."
+msgstr ""
+"¥Í¥Ã¥È¥ê¥¹¥È¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£¤ª¤½¤é¤¯\n"
+"ÉÔÀµ¤Ê²óÏ©¿Þ¤Î¤»¤¤¤Ç¤¹¡£¥°¥é¥¦¥ó¥É¥Î¡¼¥É¤¬¤¢¤ë\n"
+"¤³¤È¤ò³Îǧ¤·¡¢ºÆ»î¹Ô¤·¤Æ²¼¤µ¤¤¡£"
+
+#: ../src/engines/gnucap.c:299
+msgid "### Too few or none analysis found ###\n"
+msgstr ""
+
+#: ../src/engines/gnucap.c:366
+msgid "Unable to execute GnuCap."
+msgstr ""
+
+#: ../src/engines/gnucap.c:383
+msgid "None"
+msgstr ""
+
+#: ../src/engines/gnucap.c:586
+msgid "time"
+msgstr ""
+
+#: ../src/engines/gnucap.c:591 ../src/engines/gnucap.c:601
+#, fuzzy
+msgid "voltage"
+msgstr "²óž"
+
+#: ../src/engines/gnucap.c:596
+#, fuzzy
+msgid "frequency"
+msgstr "¼þÇÈ¿ô"
+
+#: ../src/engines/gnucap.c:645
+msgid "Unknown analysis"
+msgstr ""
+
+#: ../src/engines/gnucap.c:693
+#, fuzzy
+msgid "abort"
+msgstr "³«»Ï"
+
+#: ../src/engines/engine.c:32
+msgid "Operating Point"
+msgstr ""
+
+#: ../src/engines/engine.c:33
+#, fuzzy
+msgid "Transient Analysis"
+msgstr "°ì»þ"
+
+#: ../src/engines/engine.c:34
+msgid "DC transfer characteristic"
+msgstr ""
+
+#: ../src/engines/engine.c:35
+#, fuzzy
+msgid "AC Analysis"
+msgstr "°ì»þ"
+
+#: ../src/engines/engine.c:36
+#, fuzzy
+msgid "Transfer Function"
+msgstr "°ì»þ"
+
+#: ../src/engines/engine.c:37
+#, fuzzy
+msgid "Distortion Analysis"
+msgstr "°ì»þ"
+
+#: ../src/engines/engine.c:38
+#, fuzzy
+msgid "Noise Analysis"
+msgstr "°ì»þ"
+
+#: ../src/engines/engine.c:39
+msgid "Pole-Zero Analysis"
+msgstr ""
+
+#: ../src/engines/engine.c:40
+#, fuzzy
+msgid "Sensitivity Analysis"
+msgstr "°ì»þ"
+
+#: ../src/engines/engine.c:41
+#, fuzzy
+msgid "Unknown Analysis"
+msgstr "°ì»þ"
+
+#: ../src/netlist-editor.c:172
+#, fuzzy, c-format
+msgid "Netlist for %s"
+msgstr "¥Í¥Ã¥È¥ê¥¹¥È¥Õ¥¡¥¤¥ë̾"
+
+#: ../src/netlist-editor.c:173
+#, c-format
+msgid "Author : %s"
+msgstr ""
+
+#: ../src/netlist-editor.c:186
+msgid "Page %N of %Q"
+msgstr ""
+
+#: ../src/netlist-editor.c:238 ../src/netlist-editor.c:274
+#, c-format
+msgid "The file %s could not be saved"
+msgstr ""
+
+#: ../src/netlist-editor.c:239 ../src/netlist-editor.c:275
+#, fuzzy
+msgid "Could not save temporary netlist file"
+msgstr "¿Þ¼°¥Õ¥¡¥¤¥ë %s ¤òÊݸ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿\n"
+
+#: ../src/netlist-editor.c:311
+#, fuzzy
+msgid "Could not create the netlist dialog"
+msgstr "¥Ñ¡¼¥Ä¥×¥í¥Ñ¥Æ¥£¥À¥¤¥¢¥í¥°¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#. gettext support
+#: ../src/netlist-editor.c:390
+#, c-format
+msgid "The file %s could not be found."
+msgstr ""
+
+#: ../src/netlist-editor.c:391
+#, fuzzy
+msgid "Could not find the required file"
+msgstr "Í×ÀÁ¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¤ß¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿: %s"
+
+#: ../src/main.c:107
+msgid "Enables some debugging functions"
+msgstr "¥Ç¥Ð¥Ã¥°´Ø¿ô¤òÍ­¸ú¤Ë¤·¤Þ¤¹"
+
+#: ../src/main.c:107
+msgid "LEVEL"
+msgstr "¥ì¥Ù¥ë"
+
+#: ../src/main.c:132
+msgid ""
+"You seem to be running Oregano without\n"
+"having it installed properly on your system.\n"
+"\n"
+"Please install Oregano and try again."
+msgstr ""
+"¤¢¤Ê¤¿¤ÏŬÀڤ˥¤¥ó¥¹¥È¡¼¥ë¤»¤º¤Ë Oregano ¤ò\n"
+"¼Â¹Ô¤·¤Æ¤¤¤ë¤è¤¦¤Ç¤¹¡£\n"
+"\n"
+"Oregano ¤òºÆ¥¤¥ó¥¹¥È¡¼¥ë¤·¤ÆºÆ¼Â¹Ô¤·¤Æ²¼¤µ¤¤¡£"
+
+#: ../src/main.c:155
+msgid ""
+"Could not find a parts library.\n"
+"\n"
+"This is probably due to a faulty installation\n"
+"of Oregano. Please check your installation."
+msgstr ""
+"¥Ñ¡¼¥Ä¥é¥¤¥Ö¥é¥ê¤ò¤ß¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£\n"
+"\n"
+"¤ª¤½¤é¤¯ Oregano ¤òŬÀڤ˥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¤¤Ê¤¤\n"
+"¤¿¤á¤Ç¤¹¡£¥¤¥ó¥¹¥È¡¼¥ë¤ò¥Á¥§¥Ã¥¯¤·¤Æ²¼¤µ¤¤¡£"
+
+#: ../src/main.c:212
+msgid "Welcome to Oregano"
+msgstr ""
+
+#: ../src/load-schematic.c:261
+msgid "Bad file format."
+msgstr ""
+
+#: ../src/load-schematic.c:271
+msgid "Unknown parser error."
+msgstr ""
+
+#: ../src/load-library.c:149
+#, c-format
+msgid "Could not find the requested symbol: %s\n"
+msgstr "Í×ÀÁ¤µ¤ì¤¿¥·¥ó¥Ü¥ë¤ò¤ß¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿: %s\n"
+
+#: ../src/load-library.c:165
+#, c-format
+msgid "Could not find the requested part: %s\n"
+msgstr "Í×ÀÁ¤µ¤ì¤¿¥Ñ¡¼¥Ä¤Ï¤ß¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿: %s\n"
+
+#: ../src/file.c:50 ../src/file.c:90
+#, fuzzy
+msgid "Oregano Files"
+msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤¯"
+
+#: ../src/file.c:52 ../src/file.c:92
+msgid "All Files"
+msgstr ""
+
+#: ../src/file.c:55
+#, fuzzy
+msgid "Open File"
+msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤¯"
+
+#: ../src/file.c:95
+#, fuzzy
+msgid "Save File"
+msgstr "Êݸ"
+
+#: ../src/file.c:145
+#, fuzzy
+msgid "Netlist File"
+msgstr "¥Í¥Ã¥È¥ê¥¹¥È¥Õ¥¡¥¤¥ë̾"
+
+#: ../src/file.c:221
+msgid "Open file"
+msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤¯"
+
+#: ../src/file.c:271
+msgid "Save schematic as"
+msgstr "¿Þ¼°¤òÊÌ̾¤ÇÊݸ"
+
+#: ../src/file.c:336
+msgid "Netlist filename"
+msgstr "¥Í¥Ã¥È¥ê¥¹¥È¥Õ¥¡¥¤¥ë̾"
+
+#: ../src/dialogs.c:126
+msgid ""
+"(c) 2003-2006 LUGFi\n"
+"(c) 1999-2001 Richard Hult"
+msgstr ""
+
+#: ../src/dialogs.c:141
+msgid "Schematic capture and circuit simulation.\n"
+msgstr ""
+
+#: ../src/model/schematic.c:584
+#, c-format
+msgid "File %s does not exists."
+msgstr ""
+
+#: ../src/model/schematic.c:592 ../src/model/schematic.c:630
+#, c-format
+msgid "Unknown file format for %s."
+msgstr ""
+
+#: ../src/model/schematic.c:611
+msgid "Load fails!."
+msgstr ""
+
+#: ../src/plot-add-function.c:48
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this"
+msgstr ""
+
+#: ../src/plot-add-function.c:50 ../src/plot-add-function.c:57
+#, fuzzy
+msgid "Could not create plot window"
+msgstr "¥×¥í¥Ã¥È¥¦¥£¥ó¥É¥¦¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#, fuzzy
+#~ msgid "_View netlist"
+#~ msgstr "¥Í¥Ã¥È¥ê¥¹¥È(_N)"
+
+#, fuzzy
+#~ msgid "View a netlist"
+#~ msgstr "¥Í¥Ã¥È¥ê¥¹¥È¤òÀ¸À®"
+
+#~ msgid "View plot"
+#~ msgstr "¥×¥í¥Ã¥È¤òɽ¼¨"
+
+#~ msgid "View plot "
+#~ msgstr "¥×¥í¥Ã¥È¤òɽ¼¨ "
+
+#, fuzzy
+#~ msgid "Problem in transient analysis"
+#~ msgstr "°ì»þ"
+
+#, fuzzy
+#~ msgid "Could not find the simulation executable"
+#~ msgstr "¥·¥ß¥å¥ì¡¼¥È¥À¥¤¥¢¥í¥°¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#, fuzzy
+#~ msgid "This probably means that you have not configured Oregano properly."
+#~ msgstr ""
+#~ "¥·¥ß¥å¥ì¡¼¥È¼Â¹Ô¥×¥í¥°¥é¥à¤ò¤ß¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿: %s\n"
+#~ "\n"
+#~ "¤ª¤½¤é¤¯ Oregano ¤¬Å¬ÀÚ¤ËÀßÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ÀßÄê¥á¥Ë¥å¡¼¤ò\n"
+#~ "ÁªÂò¤·¡¢¥·¥ß¥å¥ì¡¼¥È¼Â¹Ô¥×¥í¥°¥é¥à(Î㤨¤Ð spice)¤ò»ØÄꤷ¤Æ\n"
+#~ "²¼¤µ¤¤"
+
+#, fuzzy
+#~ msgid "You have not entered a simulation executable"
+#~ msgstr "¥·¥ß¥å¥ì¡¼¥È¥À¥¤¥¢¥í¥°¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#, fuzzy
+#~ msgid ""
+#~ "Please choose Settings and specify which program to use for simulations."
+#~ msgstr ""
+#~ "¥·¥ß¥å¥ì¡¼¥È¼Â¹Ô¥×¥í¥°¥é¥à¤ò¤ß¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£\n"
+#~ "ÀßÄê¥á¥Ë¥å¡¼¤òÁªÂò¤·¡¢¥·¥ß¥å¥ì¡¼¥È¼Â¹Ô¥×¥í¥°¥é¥à¤ò\n"
+#~ "»ØÄꤷ¤Æ²¼¤µ¤¤"
+
+#~ msgid "Name: "
+#~ msgstr "̾Á°: "
+
+#~ msgid "Value: "
+#~ msgstr "ÃÍ: "
+
+#, fuzzy
+#~ msgid "Parser"
+#~ msgstr "Ž¤êÉÕ¤±"
+
+#, fuzzy
+#~ msgid "<b>Format</b>"
+#~ msgstr "¥Õ¥¡¥¤¥ë·Á¼°"
+
+#, fuzzy
+#~ msgid "<b>Size</b>"
+#~ msgstr "°ì»þ"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the required file:\n"
+#~ "</span>%s\n"
+#~ msgstr "Í×ÀÁ¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¤ß¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿: %s"
+
+#~ msgid " "
+#~ msgstr " "
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the required file:</"
+#~ "span>\n"
+#~ "%s"
+#~ msgstr "Í×ÀÁ¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¤ß¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿: %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not load file.</span>\n"
+#~ "\n"
+#~ "%s"
+#~ msgstr "Í×ÀÁ¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¤ß¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿: %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create a netlist</span>\n"
+#~ "\n"
+#~ "%s"
+#~ msgstr "Í×ÀÁ¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¤ß¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿: %s"
+
+#, fuzzy
+#~ msgid "<span weight=\"bold\">Could not create log window.</span>"
+#~ msgstr "¥í¥°¥¦¥£¥ó¥É¥¦¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create settings dialog.</"
+#~ "span>"
+#~ msgstr "ÀßÄê¥À¥¤¥¢¥í¥°¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span size=\"x-large\" weigth=\"bold\">Transient analysis</span>\n"
+#~ "\n"
+#~ "Start time must be less than stop time."
+#~ msgstr ""
+#~ "°ì»þ²òÀÏ:\n"
+#~ "\n"
+#~ "³«»Ï»þ´Ö¤ÏÄä»ß»þ´Ö¤è¤ê¤â¾®¤µ¤¯¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create simulation "
+#~ "settings dialog.</span>"
+#~ msgstr "¥·¥ß¥å¥ì¡¼¥ÈÀßÄê¥À¥¤¥¢¥í¥°¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create simulation dialog."
+#~ "</span>"
+#~ msgstr "¥·¥ß¥å¥ì¡¼¥È¥À¥¤¥¢¥í¥°¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\">Could not find the required file:\n"
+#~ "</span>%s\n"
+#~ msgstr "Í×ÀÁ¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¤ß¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿: %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\">Could not create textbox properties dialog.</span>"
+#~ msgstr "¥Æ¥­¥¹¥È¥Ü¥Ã¥¯¥¹¥×¥í¥Ñ¥Æ¥£¥À¥¤¥¢¥í¥°¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not save temporary netlist "
+#~ "file:\n"
+#~ "</span>%s\n"
+#~ msgstr "Í×ÀÁ¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¤ß¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿: %s"
+
+#, fuzzy
+#~ msgid "window"
+#~ msgstr "¥¢¥ó¥É¥¥"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create simulation "
+#~ "settings dialog.</sapn>"
+#~ msgstr "¥·¥ß¥å¥ì¡¼¥ÈÀßÄê¥À¥¤¥¢¥í¥°¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#, fuzzy
+#~ msgid "Oregano"
+#~ msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤¯"
+
+#, fuzzy
+#~ msgid "Set the zoom factor to 200%"
+#~ msgstr "³ÈÂçΨ¤ò 100 % ¤ËÀßÄê"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create a netlist</span>\n"
+#~ "\n"
+#~ "Possibly dueto a faulty circuit schematic. Please check that\n"
+#~ "you have one o more test clamps and try again."
+#~ msgstr ""
+#~ "¥Í¥Ã¥È¥ê¥¹¥È¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£¤ª¤½¤é¤¯\n"
+#~ "ÉÔÀµ¤Ê²óÏ©¿Þ¤Î¤»¤¤¤Ç¤¹¡£¥°¥é¥¦¥ó¥É¥Î¡¼¥É¤¬¤¢¤ë\n"
+#~ "¤³¤È¤ò³Îǧ¤·¡¢ºÆ»î¹Ô¤·¤Æ²¼¤µ¤¤¡£"
+
+#, fuzzy
+#~ msgid "Library: "
+#~ msgstr "¥é¥¤¥Ö¥é¥ê: "
+
+#~ msgid "Preview"
+#~ msgstr "»î¼Ì"
+
+#~ msgid "part_browser"
+#~ msgstr "¥Ñ¡¼¥Ä¥Ö¥é¥¦¥¶"
+
+#~ msgid "Edit part properties"
+#~ msgstr "¥Ñ¡¼¥Ä¥×¥í¥Ñ¥Æ¥£¤òÊÔ½¸"
+
+#, fuzzy
+#~ msgid "label"
+#~ msgstr "¥é¥Ù¥ë"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the required file:\n"
+#~ "</span%s\n"
+#~ ">"
+#~ msgstr "Í×ÀÁ¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¤ß¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿: %s"
+
+#~ msgid "_Close"
+#~ msgstr "ÊĤ¸¤ë(_C)"
+
+#, fuzzy
+#~ msgid "Print Schematic"
+#~ msgstr "¿Þ¼°¤òÊݸ"
+
+#, fuzzy
+#~ msgid "Print preview"
+#~ msgstr "»î¼Ì"
+
+#, fuzzy
+#~ msgid "Paper Size"
+#~ msgstr "¥×¥í¥Ñ¥Æ¥£"
+
+#~ msgid "Warning"
+#~ msgstr "·Ù¹ð"
+
+#~ msgid "Schematic %s has unsaved changes, save them?"
+#~ msgstr "¿Þ¼° %s ¤ÏÊѹ¹¤¬Ì¤Êݸ¤Ç¤¹¡£Êݸ¤·¤Þ¤¹¤«?"
+
+#~ msgid "Schematic has unsaved changes, save them?"
+#~ msgstr "¿Þ¼°¤ÏÊѹ¹¤¬Ì¤Êݸ¤Ç¤¹¡£Êݸ¤·¤Þ¤¹¤«?"
+
+#~ msgid "View the latest plot"
+#~ msgstr "ºÇ¿·¤Î¥×¥í¥Ã¥È¤ò¸«¤ë"
+
+#~ msgid "Voltmeters"
+#~ msgstr "ÅÅ°µ·×"
+
+#~ msgid "Enable/disable voltmeters"
+#~ msgstr "ÅÅ°µ·×¤òÍ­¸ú²½/̵¸ú²½"
+
+#, fuzzy
+#~ msgid "Default"
+#~ msgstr "¥Ç¥Õ¥©¥ë¥È\n"
+
+#~ msgid "Spice Path: "
+#~ msgstr "Spice ¥Ñ¥¹: "
+
+#~ msgid "Data"
+#~ msgstr "Æü»þ"
+
+#~ msgid "Library Path: "
+#~ msgstr "¥é¥¤¥Ö¥é¥ê¥Ñ¥¹: "
+
+#~ msgid "Model Path: "
+#~ msgstr "¥â¥Ç¥ë¥Ñ¥¹: "
+
+#~ msgid "Start time: "
+#~ msgstr "³«»Ï»þ´Ö: "
+
+#~ msgid "Stop time: "
+#~ msgstr "Ää»ß»þ´Ö: "
+
+#~ msgid "Step size: "
+#~ msgstr "¥¹¥Æ¥Ã¥×¥µ¥¤¥º: "
+
+#~ msgid "Enable"
+#~ msgstr "Í­¸ú²½"
+
+#~ msgid "Use"
+#~ msgstr "»ÈÍÑ"
+
+#~ msgid "enable"
+#~ msgstr "Í­¸ú²½"
+
+#~ msgid "stop"
+#~ msgstr "Ää»ß"
+
+#~ msgid "New Value"
+#~ msgstr "¿·µ¬ÃÍ"
+
+#~ msgid "Accept"
+#~ msgstr "¼õÂú"
+
+#~ msgid "Edit text label"
+#~ msgstr "¥Æ¥­¥¹¥È¥é¥Ù¥ë¤òÊÔ½¸"
+
+#~ msgid "An electrical engineering tool.\n"
+#~ msgstr "Åŵ¤¹©³Ø¥Ä¡¼¥ë\n"
+
+#~ msgid ""
+#~ "To place the selected part, either press the 'Place' button, press the "
+#~ "key 'l', or drag the preview to the sheet."
+#~ msgstr ""
+#~ "ÁªÂò¥Ñ¡¼¥Ä¤òÇÛÃÖ¤¹¤ë¤Ë¤Ï 'ÇÛÃÖ'¥Ü¥¿¥ó¤ò²¡¤¹¤«¡¢¥­¡¼'l'¤ò²¡¤¹¤«¡¢¥·¡¼¥È\n"
+#~ "¤ò'»î¼Ì'¤Ë¥É¥é¥Ã¥°¤·¤Æ²¼¤µ¤¤¡£"
diff --git a/po/pl.po b/po/pl.po
new file mode 100644
index 0000000..a96968e
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,1551 @@
+# Copyright (C) 2001 Free Software Foundation, Inc.
+# Antonio Martínez Alvarez <newton@retemail.es>, 2001.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: oregano 0.3\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-11 02:36-0300\n"
+"PO-Revision-Date: 2005-10-09 21:25+0100\n"
+"Last-Translator: Wojciech Mu³a <wojciech_mula@poczta.onet.pl>\n"
+"Language-Team: Polish (Wojciech Mu³a) <wojciech_mula@poczta.onet.pl>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Polish\n"
+"X-Poedit-Country: Poland\n"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:1
+msgid "<b>AC Analysis Options</b>"
+msgstr "<b>Opcje analizy zmiennopr±dowej (AC)</b>"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:2
+msgid "<b>Type</b>"
+msgstr "<b>Rodzaj</b>"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:3
+msgid "Current"
+msgstr "Pr±d"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:4
+msgid "Edit Clamp properties"
+msgstr "Edycja w³a¶ciwo¶ci próbnika"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:5
+msgid "Imaginary part"
+msgstr "Czê¶æ urojona"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:6
+msgid "Magnitude"
+msgstr "Wzmocnienie"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:7
+msgid "Phase"
+msgstr "Faza"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:8
+msgid "Real part"
+msgstr "Czê¶æ rzeczywista"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:9
+msgid "Use decibel scale"
+msgstr "U¿ywaj skali decybelowej"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:10
+msgid "Voltage"
+msgstr "Napiêcie"
+
+#: ../data/dialogs/log-window.glade2.h:1
+msgid "Clear"
+msgstr "Wyczy¶æ"
+
+#: ../data/dialogs/log-window.glade2.h:2
+msgid "Oregano Log Window"
+msgstr "Oregano - okno dziennika"
+
+#: ../data/dialogs/page-properties.glade2.h:1
+msgid "<b>Alignment</b>"
+msgstr "<b>Wyrównanie</b>"
+
+#: ../data/dialogs/page-properties.glade2.h:2
+msgid "Center Horizontally"
+msgstr "Wycentruj w poziomie"
+
+#: ../data/dialogs/page-properties.glade2.h:3
+msgid "Center Vertically"
+msgstr "Wycentruj w pionie"
+
+#: ../data/dialogs/page-properties.glade2.h:4
+msgid "Fit to page"
+msgstr "Dopasuj do rozmiaru stron"
+
+#: ../data/dialogs/page-properties.glade2.h:5
+msgid "Print Properties"
+msgstr "W³a¶ciwo¶ci drukowania"
+
+#: ../data/dialogs/part-browser.glade2.h:1
+msgid "<b>Preview</b>"
+msgstr "<b>Podgl±d</b>"
+
+#: ../data/dialogs/part-browser.glade2.h:2
+msgid "Library:"
+msgstr "Biblioteka:"
+
+#: ../data/dialogs/part-browser.glade2.h:3 ../src/schematic-view-ui.h:360
+msgid "Parts"
+msgstr "Czê¶ci"
+
+#: ../data/dialogs/part-browser.glade2.h:4
+msgid "Place"
+msgstr "Umie¶æ element"
+
+#: ../data/dialogs/part-browser.glade2.h:5
+msgid "Press this button to place the selected part"
+msgstr "Naci¶nij przycisk, aby umie¶ciæ wybrany element na schemacie"
+
+#: ../data/dialogs/part-browser.glade2.h:6
+msgid "Search:"
+msgstr "Szukaj:"
+
+#: ../data/dialogs/part-browser.glade2.h:7
+msgid "Select which library to use"
+msgstr "Wybierz bibliotekê"
+
+#: ../data/dialogs/part-properties-dialog.glade2.h:1
+msgid "Part Properties"
+msgstr "W³a¶ciwo¶ci elementu"
+
+#: ../data/dialogs/plot-window.glade2.h:1
+msgid "<b>Plot</b>"
+msgstr "<b>Wykres</b>"
+
+#: ../data/dialogs/plot-window.glade2.h:2
+msgid "<b>Variables</b>"
+msgstr "<b>Zmienne</b>"
+
+#: ../data/dialogs/plot-window.glade2.h:3
+msgid "Plot"
+msgstr "Wykres"
+
+#: ../data/dialogs/plot-window.glade2.h:4
+msgid "Region"
+msgstr ""
+
+#: ../data/dialogs/plot-window.glade2.h:5
+msgid "Shift"
+msgstr ""
+
+#: ../data/dialogs/properties.glade2.h:1
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:1
+msgid " "
+msgstr ""
+
+#: ../data/dialogs/properties.glade2.h:2
+msgid "<b>Comments</b>"
+msgstr "<b>Komentarz</b>"
+
+#: ../data/dialogs/properties.glade2.h:3
+msgid "Author:"
+msgstr "Autor:"
+
+#: ../data/dialogs/properties.glade2.h:4 ../src/sheet/part-item.c:147
+msgid "Properties"
+msgstr "W³a¶ciwo¶ci"
+
+#: ../data/dialogs/properties.glade2.h:5
+msgid "Title:"
+msgstr "Tytu³:"
+
+#: ../data/dialogs/settings.glade2.h:1
+msgid "\n"
+msgstr "\n"
+
+#: ../data/dialogs/settings.glade2.h:3
+#, fuzzy
+msgid "<b>Data Paths</b>"
+msgstr "<b>¦cie¿ki do danych</b>"
+
+#: ../data/dialogs/settings.glade2.h:4
+msgid "<b>Engine</b>"
+msgstr "<b>Symulator</b>"
+
+#: ../data/dialogs/settings.glade2.h:5
+msgid "<b>Executable Path</b>"
+msgstr "<b>¦cie¿ka do symulatora</b>"
+
+#: ../data/dialogs/settings.glade2.h:6
+msgid "<b>File Format</b>"
+msgstr "<b>Format pliku</b>"
+
+#: ../data/dialogs/settings.glade2.h:7
+msgid "<b>User Interface</b>"
+msgstr "<b>Interfejs u¿ytkownika</b>"
+
+#: ../data/dialogs/settings.glade2.h:8
+msgid "Automatically show log windows after simulation"
+msgstr "Automatycznie pokazuj okno dziennika po zakoñczeniu symulacji"
+
+#: ../data/dialogs/settings.glade2.h:9
+msgid "Compress saved files"
+msgstr "Kompresuj pliki przy zapisie"
+
+#: ../data/dialogs/settings.glade2.h:10
+msgid "Grid size[px] "
+msgstr "Gêsto¶æ siatki [piksele]"
+
+#: ../data/dialogs/settings.glade2.h:11
+msgid "Library"
+msgstr "Biblioteka"
+
+#: ../data/dialogs/settings.glade2.h:12
+msgid "Model"
+msgstr "Model"
+
+#: ../data/dialogs/settings.glade2.h:13
+msgid "Paths"
+msgstr "¦cie¿ki"
+
+#: ../data/dialogs/settings.glade2.h:14
+msgid "Preferences"
+msgstr "W³a¶ciwo¶ci"
+
+#: ../data/dialogs/settings.glade2.h:15
+#, fuzzy
+msgid "Realtime update of selection (slow)"
+msgstr "Uaktualnienie zaznaczenia w czasie rzeczywistym (wolne)"
+
+#: ../data/dialogs/settings.glade2.h:16
+msgid "Remove"
+msgstr "Usuñ"
+
+#: ../data/dialogs/settings.glade2.h:17
+#, fuzzy
+msgid "Select A File"
+msgstr "Zaznacz _wszystko"
+
+#: ../data/dialogs/settings.glade2.h:18
+msgid "Show the splash screen at application startup"
+msgstr "Pokazuj ekran powitalny podczas ³adowania programu"
+
+#: ../data/dialogs/settings.glade2.h:19
+msgid "TODO : Add FINDPATH for Engines"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:20
+msgid "User Interface"
+msgstr "Interfejs u¿ytkownika"
+
+#: ../data/dialogs/sim-settings.glade2.h:1
+msgid "<b>AC</b>"
+msgstr "<b>AC</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:2
+msgid "<b>DC Sweep</b>"
+msgstr "<b>Przemiatanie warto¶ci ¼róde³ DC</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:3
+msgid "<b>Fourier</b>"
+msgstr "<b>Analiza czêstotliwo¶ciowa (Fourier)</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:4
+msgid "<b>Transient</b>"
+msgstr "<b>Analiza przej¶ciowa</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:5
+msgid "Add new options"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:6
+msgid "Add to list"
+msgstr "Dodaj do listy"
+
+#: ../data/dialogs/sim-settings.glade2.h:7
+msgid "Analysis Options"
+msgstr "Opcje analizy"
+
+#: ../data/dialogs/sim-settings.glade2.h:8
+msgid "Analysis Parameters"
+msgstr "Parametry analizy"
+
+#: ../data/dialogs/sim-settings.glade2.h:9
+msgid "DEC"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:10
+msgid "Frequency"
+msgstr "Czêstotliwo¶æ"
+
+#: ../data/dialogs/sim-settings.glade2.h:11
+msgid "LIN"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:12
+msgid "List of outputs"
+msgstr "Lista wyj¶æ"
+
+#: ../data/dialogs/sim-settings.glade2.h:13
+msgid "OCT"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:14
+msgid "Points"
+msgstr "Liczba punktów"
+
+#: ../data/dialogs/sim-settings.glade2.h:15
+msgid "Simulation Settings"
+msgstr "Ustawienia symulacji"
+
+#: ../data/dialogs/sim-settings.glade2.h:16
+msgid "Source"
+msgstr "¬ród³o"
+
+#: ../data/dialogs/sim-settings.glade2.h:17
+msgid "Start"
+msgstr "Start"
+
+#: ../data/dialogs/sim-settings.glade2.h:18
+msgid "Step"
+msgstr "Krok"
+
+#: ../data/dialogs/sim-settings.glade2.h:19
+msgid "Stop"
+msgstr "Stop"
+
+#: ../data/dialogs/sim-settings.glade2.h:20
+msgid "Type"
+msgstr "Typ"
+
+#: ../data/dialogs/sim-settings.glade2.h:21
+msgid "Use Initial Conditions"
+msgstr "U¿yj warto¶ci pocz±tkowych"
+
+#: ../data/dialogs/simulation.glade2.h:1
+#, fuzzy
+msgid "Progress: None"
+msgstr "Postêp:"
+
+#: ../data/dialogs/simulation.glade2.h:2
+msgid "Simulation"
+msgstr "Symulacja"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:2
+msgid "<b>Text</b>"
+msgstr "<b>Tekst</b>"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:3
+msgid "Text Properties"
+msgstr "W³a¶ciwo¶ci tekstu"
+
+#: ../data/dialogs/view-netlist.glade2.h:1
+msgid "Netlist View"
+msgstr "Podgl±d listy po³±czeñ"
+
+#: ../data/dialogs/view-netlist.glade2.h:2 ../src/schematic-view-ui.h:161
+msgid "_Simulate"
+msgstr "_Symulacja"
+
+#: ../src/sheet/part-item.c:147
+msgid "Edit the part's properties"
+msgstr "Edycja w³a¶ciwo¶ci elementu"
+
+#: ../src/sheet/part-item.c:616 ../src/sheet/part-item.c:765
+#: ../src/sheet/textbox-item.c:679 ../src/sim-settings.c:775
+#: ../src/settings.c:139 ../src/schematic-view.c:251
+#: ../src/schematic-view.c:317 ../src/schematic-view.c:2431 ../src/plot.c:434
+#: ../src/plot.c:689 ../src/part-browser.c:496 ../src/netlist-editor.c:309
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this."
+msgstr ""
+
+#: ../src/sheet/part-item.c:618 ../src/sheet/part-item.c:626
+#: ../src/sheet/part-item.c:767 ../src/sheet/part-item.c:775
+msgid "Could not create part properties dialog."
+msgstr "Nie mo¿na stworzyæ okna dialogowego w³a¶ciwo¶ci."
+
+#: ../src/sheet/sheet-item.c:307 ../src/schematic-view-ui.h:288
+msgid "Copy"
+msgstr "Kopiuj"
+
+#: ../src/sheet/sheet-item.c:307
+msgid "Copy the object to the clipboard"
+msgstr "Kopiuje obiekty do schowka"
+
+#: ../src/sheet/sheet-item.c:310 ../src/schematic-view-ui.h:285
+msgid "Cut"
+msgstr "Wytnij"
+
+#: ../src/sheet/sheet-item.c:310
+msgid "Cut the object to the clipboard"
+msgstr "Przenosi obiekty do schowka"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete"
+msgstr "Usuñ"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete the object"
+msgstr "Usuwa obiekt"
+
+#: ../src/sheet/sheet-item.c:319
+msgid "Rotate"
+msgstr "Obróæ"
+
+#: ../src/sheet/sheet-item.c:320
+msgid "Rotate the selected objects 90 degrees clockwise"
+msgstr "Obraca wybrane obiekty o 90 stopni w prawo"
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit..."
+msgstr "Edycja..."
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit the text"
+msgstr "Edytuje tekst"
+
+#: ../src/sheet/textbox-item.c:596
+msgid "Label"
+msgstr "Etykieta"
+
+#: ../src/sheet/textbox-item.c:681 ../src/sheet/textbox-item.c:690
+#, fuzzy
+msgid "Could not create textbox properties dialog"
+msgstr "Nie mo¿na stworzyæ okna dialogowego w³a¶ciwo¶ci."
+
+#: ../src/simulation.c:102 ../src/simulation.c:109 ../src/simulation.c:115
+#, fuzzy
+msgid "Could not create simulation dialog"
+msgstr "Nie mo¿na utworzyæ dialogu symulacji"
+
+#: ../src/simulation.c:150
+#, fuzzy, c-format
+msgid "Progress: <b>%s</b>"
+msgstr "Postêp:"
+
+#: ../src/simulation.c:201
+#, fuzzy
+msgid ""
+"<span weight=\"bold\" size=\"large\">The simulation was aborted due to an "
+"error.</span>\n"
+"\n"
+"Would you like to view the error log?"
+msgstr ""
+"<span weight=\"bold\" size=\"x-large\">Symulacja zosta³a przerwana z powodu "
+"b³êdów.</span>\n"
+"\n"
+"Chcesz zobaczyæ dziennik b³êdów?"
+
+#: ../src/simulation.c:211
+#, fuzzy
+msgid "The simulation was aborted due to an error"
+msgstr ""
+"<span weight=\"bold\" size=\"x-large\">Symulacja zosta³a przerwana z powodu "
+"blêdów.</span>\n"
+
+#: ../src/sim-settings.c:229
+msgid "Add new option"
+msgstr ""
+
+#: ../src/sim-settings.c:777 ../src/sim-settings.c:784
+#: ../src/sim-settings.c:790
+#, fuzzy
+msgid "Could not create simulation settings dialog"
+msgstr "Nie mo¿na utworzyæ dialogu symulacji"
+
+#: ../src/sim-settings.c:814
+msgid "Option"
+msgstr "Opcja"
+
+#: ../src/sim-settings.c:816
+msgid "Value"
+msgstr "Warto¶æ"
+
+#: ../src/settings.c:141 ../src/settings.c:148 ../src/settings.c:154
+#, fuzzy
+msgid "Could not create settings dialog"
+msgstr "Nie mo¿na utworzyæ dialogu symulacji"
+
+#: ../src/settings.c:215
+msgid "Engine executable not found"
+msgstr ""
+
+#: ../src/settings.c:216
+msgid "The engine is unable to locate the external program."
+msgstr ""
+
+#: ../src/schematic-view.c:254
+#, fuzzy
+msgid "Could not create properties dialog"
+msgstr "Nie mo¿na stworzyæ okna dialogowego w³a¶ciwo¶ci."
+
+#: ../src/schematic-view.c:320
+#, fuzzy
+msgid "Could not create the page properties dialog"
+msgstr "Nie mo¿na stworzyæ okna dialogowego w³a¶ciwo¶ci."
+
+#: ../src/schematic-view.c:383
+msgid "Could not load file"
+msgstr ""
+
+#: ../src/schematic-view.c:410 ../src/schematic-view.c:1304
+#: ../src/schematic-view.c:1312
+msgid "Untitled.oregano"
+msgstr "Nowy schemat (untitled.oregano)"
+
+#: ../src/schematic-view.c:415
+#, fuzzy
+msgid "Could not save schematic file"
+msgstr "Nie mo¿na utworzyæ dialogu symulacji"
+
+#: ../src/schematic-view.c:765 ../src/netlist-editor.c:225
+#: ../src/netlist-editor.c:436
+#, fuzzy
+msgid "Could not create a netlist"
+msgstr "Nie mo¿na utworzyæ przegl±darki elementów."
+
+#: ../src/schematic-view.c:768 ../src/netlist-editor.c:229
+#: ../src/netlist-editor.c:439
+msgid "An unexpected error has occurred"
+msgstr ""
+
+#: ../src/schematic-view.c:1313
+msgid "Untitled.netlist"
+msgstr "Untitled.netlist"
+
+#: ../src/schematic-view.c:1504
+#, c-format
+msgid ""
+"<span weight=\"bold\" size=\"large\">Save changes to schematic %s before "
+"closing?</span>\n"
+"\n"
+"If you don't save, all changes since you last saved will be permanently lost."
+msgstr ""
+
+#: ../src/schematic-view.c:1516
+msgid "Close _without Saving"
+msgstr ""
+
+#: ../src/schematic-view.c:2434 ../src/schematic-view.c:2445
+#, fuzzy
+msgid "Could not create the log window"
+msgstr "Nie mo¿na utworzyæ okna wykresu."
+
+#: ../src/schematic-view-ui.h:38
+msgid "_New"
+msgstr "_Nowy"
+
+#: ../src/schematic-view-ui.h:38 ../src/schematic-view-ui.h:264
+msgid "Create a new schematic"
+msgstr "Stworzenie nowego schematu"
+
+#: ../src/schematic-view-ui.h:47
+#, fuzzy
+msgid "Page Properties"
+msgstr "W³a¶ciwo¶ci elementu"
+
+#: ../src/schematic-view-ui.h:48
+msgid "Set print properties"
+msgstr "Ustawienia drukowania"
+
+#: ../src/schematic-view-ui.h:56 ../src/print.c:367 ../src/plot.c:150
+#: ../src/netlist-editor.c:193
+msgid "Print Preview"
+msgstr "Podgl±d wydruku"
+
+#: ../src/schematic-view-ui.h:57
+msgid "Preview the schematic before printing"
+msgstr "Zobacz podgl±d schematu przed wydrukowaniem"
+
+#: ../src/schematic-view-ui.h:65
+msgid "Schematic _Properties..."
+msgstr "W³a¶ciwo¶ci _schematu"
+
+#: ../src/schematic-view-ui.h:66
+msgid "Modify the schematic's properties"
+msgstr "Zmiana w³a¶ciwo¶ci schematu"
+
+#: ../src/schematic-view-ui.h:95
+msgid "_Delete"
+msgstr "_Skasuj"
+
+#: ../src/schematic-view-ui.h:96
+#, fuzzy
+msgid "Delete the selection"
+msgstr "Skasuj zaznaczone"
+
+#: ../src/schematic-view-ui.h:102
+msgid "_Rotate"
+msgstr "_Obróæ"
+
+#: ../src/schematic-view-ui.h:103
+#, fuzzy
+msgid "Rotate the selection clockwise"
+msgstr "Obróæ zaznaczone"
+
+#: ../src/schematic-view-ui.h:109
+#, fuzzy
+msgid "Flip _horizontally"
+msgstr "Wycentruj w poziomie"
+
+#: ../src/schematic-view-ui.h:110
+#, fuzzy
+msgid "Flip the selection horizontally"
+msgstr "Kopiuje zaznaczone obiekty do schowka"
+
+#: ../src/schematic-view-ui.h:116
+#, fuzzy
+msgid "Flip _vertically"
+msgstr "Wycentruj w pionie"
+
+#: ../src/schematic-view-ui.h:117
+#, fuzzy
+msgid "Flip the selection vertically"
+msgstr "Skasuj zaznaczone"
+
+#: ../src/schematic-view-ui.h:124
+#, fuzzy
+msgid "Select _all"
+msgstr "_Odznacz wszystkie"
+
+#: ../src/schematic-view-ui.h:125
+#, fuzzy
+msgid "Select all objects on the sheet"
+msgstr "Zaznacz wszystkie obiekty na arkuszu"
+
+#: ../src/schematic-view-ui.h:131
+#, fuzzy
+msgid "Deselect a_ll"
+msgstr "_Odznacz wszystkie"
+
+#: ../src/schematic-view-ui.h:132
+msgid "Deselect the selected objects"
+msgstr "Odznacz zaznaczone obiekty"
+
+#: ../src/schematic-view-ui.h:140
+#, fuzzy
+msgid "_Object Properties..."
+msgstr "W³a¶ciwo¶ci _obiektu"
+
+#: ../src/schematic-view-ui.h:141
+msgid "Modify the object's properties"
+msgstr "Modyfikacja w³a¶ciwo¶ci obiektu"
+
+#: ../src/schematic-view-ui.h:146
+msgid "Simulation S_ettings..."
+msgstr "Ustawienia symulacji"
+
+#: ../src/schematic-view-ui.h:147
+msgid "Edit the simulation settings"
+msgstr "Edycja ustawieñ symulacji"
+
+#: ../src/schematic-view-ui.h:162
+msgid "Run a simulation"
+msgstr "Uruchamia symulacjê"
+
+#: ../src/schematic-view-ui.h:169
+msgid "_Generate netlist"
+msgstr "_Utwórz listê po³±czeñ"
+
+#: ../src/schematic-view-ui.h:170
+msgid "Generate a netlist"
+msgstr "Tworzenie listy po³±czeñ (netlist)"
+
+#: ../src/schematic-view-ui.h:177
+msgid "50%"
+msgstr "50%"
+
+#: ../src/schematic-view-ui.h:178
+msgid "Set the zoom factor to 50%"
+msgstr "Ustawia powiêkszenie na 50%"
+
+#: ../src/schematic-view-ui.h:179
+msgid "75%"
+msgstr "75%"
+
+#: ../src/schematic-view-ui.h:180
+msgid "Set the zoom factor to 75%"
+msgstr "Ustawia powiêkszenie na 75%"
+
+#. GNOMEUIINFO_ITEM_NONE(N_("50%"),
+#. N_("Set the zoom factor to 50%"), plot_zoom_50_cmd),
+#. GNOMEUIINFO_ITEM_NONE(N_("75%"),
+#. N_("Set the zoom factor to 75%"), plot_zoom_75_cmd),
+#: ../src/schematic-view-ui.h:181 ../src/plot.c:167
+msgid "100%"
+msgstr "100%"
+
+#: ../src/schematic-view-ui.h:182 ../src/plot.c:168
+msgid "Set the zoom factor to 100%"
+msgstr "Powiêkszenie 100%"
+
+#: ../src/schematic-view-ui.h:184
+msgid "125%"
+msgstr "125%"
+
+#: ../src/schematic-view-ui.h:185
+msgid "Set the zoom factor to 125%"
+msgstr "Ustawia powiêkszenie na 125%"
+
+#: ../src/schematic-view-ui.h:186
+msgid "150%"
+msgstr "150%"
+
+#: ../src/schematic-view-ui.h:187
+msgid "Set the zoom factor to 150%"
+msgstr "Ustawia powiêkszenie na 150%"
+
+#: ../src/schematic-view-ui.h:196
+msgid "Zoom"
+msgstr "Powiêkszenie"
+
+#: ../src/schematic-view-ui.h:202
+msgid "_Log"
+msgstr "Dziennik (_log)"
+
+#: ../src/schematic-view-ui.h:202
+msgid "View the latest simulation log"
+msgstr "Wy¶wietl dziennik z ostatniej symulacji"
+
+#: ../src/schematic-view-ui.h:205
+#, fuzzy
+msgid "_Node labels"
+msgstr "_Wy¶wietl nazwy wêz³ów"
+
+#: ../src/schematic-view-ui.h:205
+msgid "Show or hide node labels"
+msgstr "Wy¶wietla lub ukrywa nazwy wêz³ów"
+
+#: ../src/schematic-view-ui.h:207
+#, fuzzy
+msgid "N_etlist"
+msgstr "Plik listy po³±czeñ"
+
+#: ../src/schematic-view-ui.h:208
+#, fuzzy
+msgid "View the circuit netlist"
+msgstr "Podgl±d listy po³±czeñ (netlist)"
+
+#: ../src/schematic-view-ui.h:240
+msgid "_Contents"
+msgstr "_Zwarto¶æ"
+
+#: ../src/schematic-view-ui.h:240
+msgid "Show program help"
+msgstr "Pokazuje pomoc programu"
+
+#: ../src/schematic-view-ui.h:254
+msgid "_Tools"
+msgstr "_Narzêdzia"
+
+#: ../src/schematic-view-ui.h:264
+msgid "New"
+msgstr "Nowy"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open"
+msgstr "Otwórz"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open an existing schematic"
+msgstr "Wczytuje schemat z pliku"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save"
+msgstr "Zapisz"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save the schematic"
+msgstr "Zapisuje schemat"
+
+#: ../src/schematic-view-ui.h:285
+msgid "Cut the selection to the clipboard"
+msgstr "Przenosi zaznaczone obiekty do schowka"
+
+#: ../src/schematic-view-ui.h:288
+msgid "Copy the selection to the clipboard"
+msgstr "Kopiuje zaznaczone obiekty do schowka"
+
+#: ../src/schematic-view-ui.h:291 ../src/schematic-view-ui.h:404
+msgid "Paste"
+msgstr "Wklej"
+
+#: ../src/schematic-view-ui.h:291
+#, fuzzy
+msgid "Paste the clipboard"
+msgstr "Wkleja ze schowka"
+
+#: ../src/schematic-view-ui.h:301
+msgid "Arrow"
+msgstr "Strza³ka"
+
+#: ../src/schematic-view-ui.h:302
+msgid "Select, move and modify objects"
+msgstr "Wybieranie, przesuwanie, edycja obiektów"
+
+#: ../src/schematic-view-ui.h:307
+msgid "Text"
+msgstr "Tekst"
+
+#: ../src/schematic-view-ui.h:308
+msgid "Put text on the schematic"
+msgstr "Dodaje podpisy tekstowe na schemacie"
+
+#: ../src/schematic-view-ui.h:313
+msgid "Wires"
+msgstr "Po³±czenia"
+
+#: ../src/schematic-view-ui.h:314
+msgid "Draw wires"
+msgstr "Rysowanie po³±czeñ"
+
+#: ../src/schematic-view-ui.h:330
+msgid "Add Voltage Clamp"
+msgstr "Dodaj próbnik napiêcia"
+
+#: ../src/schematic-view-ui.h:331
+msgid "Add a Voltage test clamp"
+msgstr "Dodaje próbnik napiêcia"
+
+#: ../src/schematic-view-ui.h:336
+msgid "Simulate"
+msgstr "Symulacja"
+
+#: ../src/schematic-view-ui.h:337
+msgid "Run a simulation for the current schematic"
+msgstr "Uruchamia symulacjê bie¿±cego obwodu"
+
+#: ../src/schematic-view-ui.h:342 ../src/schematic-view-ui.h:343
+msgid "Simulation settings"
+msgstr "Ustawienia symulacji"
+
+#: ../src/schematic-view-ui.h:361
+msgid "Show or hide the part browser"
+msgstr "Pokazuje lub chowa przegl±darkê elementów"
+
+#: ../src/schematic-view-ui.h:366
+msgid "Grid"
+msgstr "Siatka"
+
+#: ../src/schematic-view-ui.h:367
+msgid "Turn on/off the grid"
+msgstr "Pokazuje lub chowa siatkê"
+
+#: ../src/schematic-view-ui.h:372 ../src/schematic-view-ui.h:373
+msgid "Zoom in"
+msgstr "Powiêkszenie"
+
+#: ../src/schematic-view-ui.h:378 ../src/schematic-view-ui.h:379
+msgid "Zoom out"
+msgstr "Pomniejszenie"
+
+#: ../src/schematic-view-ui.h:405
+msgid "Paste the contents of the clipboard to the sheet"
+msgstr "Wkleja zawarto¶æ schowka do arkusza"
+
+#: ../src/print.c:297
+msgid "Print"
+msgstr "Drukowanie"
+
+#: ../src/print.c:304
+msgid "Pages"
+msgstr "Strony"
+
+#: ../src/print.c:339
+#, fuzzy
+msgid "Can't get paper info! .. getting default!"
+msgstr "Nie mo¿na pobraæ rozmiarów kartki! U¿ywam domy¶lnych!"
+
+#: ../src/print.c:353
+msgid "Could not create font for printing."
+msgstr "Nie mo¿na utworzyæ czcionki dla wydruku."
+
+#: ../src/print.c:372
+msgid "Printing failed."
+msgstr "Drukowanie nie powiod³o siê"
+
+#: ../src/plot.c:61 ../src/plot.c:62
+msgid "Sans 10"
+msgstr "Sans 10"
+
+#: ../src/plot.c:63
+msgid "Sans 8"
+msgstr "Sans 8"
+
+#: ../src/plot.c:151
+msgid "Preview the plot before printing"
+msgstr "Zobacz podgl±d przed wydrukowaniem"
+
+#: ../src/plot.c:153
+msgid "Export plot"
+msgstr "Eksport wykresu"
+
+#: ../src/plot.c:154
+msgid "Show the export menu"
+msgstr ""
+
+#: ../src/plot.c:155
+#, fuzzy
+msgid "Add Function"
+msgstr "Transmitancja"
+
+#: ../src/plot.c:156
+msgid "Add new function to the graph"
+msgstr ""
+
+#: ../src/plot.c:180
+msgid "_Preferences..."
+msgstr "_W³a¶ciwo¶ci..."
+
+#: ../src/plot.c:182
+msgid "Show crosshairs"
+msgstr "Poka¿ krzy¿yki"
+
+#: ../src/plot.c:183
+msgid "_Zoom"
+msgstr "_Powiêkszenie"
+
+#: ../src/plot.c:190
+msgid "Schematic Plot"
+msgstr ""
+
+#: ../src/plot.c:196
+msgid "_File"
+msgstr "_Plik"
+
+#: ../src/plot.c:197
+msgid "_Plot"
+msgstr "_Wykres"
+
+#. Simulation failed?
+#: ../src/plot.c:330
+msgid "The simulation produced no data!!\n"
+msgstr ""
+
+#: ../src/plot.c:340 ../src/plot.c:574
+#, c-format
+msgid "Plot - %s"
+msgstr "Wykres - %s"
+
+#: ../src/plot.c:349
+#, fuzzy
+msgid "Nodes"
+msgstr "Model"
+
+#: ../src/plot.c:352 ../src/plot.c:636
+#, fuzzy
+msgid "Functions"
+msgstr "Transmitancja"
+
+#
+#: ../src/plot.c:424
+msgid "Oregano - Plot"
+msgstr "Oregano - wykres"
+
+#: ../src/plot.c:436 ../src/plot.c:443
+msgid "Could not create plot window."
+msgstr "Nie mo¿na utworzyæ okna wykresu."
+
+#: ../src/plot.c:659
+msgid "TRANSFER"
+msgstr ""
+
+#: ../src/plot.c:691 ../src/plot.c:698
+msgid "Could not create plot export window."
+msgstr "Nie mo¿na utworzyæ okna eksportu wykresu"
+
+#. if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (export_png)))
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PNG;
+#. else
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PS;
+#: ../src/plot.c:719
+msgid "Save PNG"
+msgstr "Zapisz PNG"
+
+#: ../src/part-browser.c:135 ../src/part-browser.c:614
+msgid ""
+"Gtk version 2.2 does not support GtkTreeModelFilter...\n"
+"Filtering disable!"
+msgstr ""
+"Biblioteka GTK w wersji 2.2 nie posiada funkcji GtkTreeModeFilter...\n"
+"Filtrowanie wy³±czone!"
+
+#: ../src/part-browser.c:187 ../src/part-browser.c:401
+msgid "Unable to load required part"
+msgstr ""
+
+#: ../src/part-browser.c:499 ../src/part-browser.c:507
+#, fuzzy
+msgid "Could not create part browser"
+msgstr "Nie mo¿na utworzyæ przegl±darki elementów."
+
+#: ../src/oregano-config.c:123
+#, c-format
+msgid "Loading %s ..."
+msgstr "Wczytywanie %s ..."
+
+#: ../src/oregano-config.c:164
+#, fuzzy, c-format
+msgid "Could not read the parts library: %s "
+msgstr "Nie mo¿na utworzyæ przegl±darki elementów."
+
+#: ../src/oregano-config.c:166
+#, fuzzy
+msgid ""
+"The file is probably corrupt. Please reinstall the parts\n"
+"library or Oregano and try again."
+msgstr ""
+"<span weight=\"bold\" size=\"x-large\">Nie mogê odczytaæ biblioteki "
+"elementów: %s</span>\n"
+"\n"
+"Plik jest najprawdopodobniej uszkodzony.\n"
+"Zainstaluj od nowa biblioteki (albo nawet Oregano) i spróbuj ponownie."
+
+#: ../src/engines/netlist.c:436
+msgid "No ground node. Aborting.\n"
+msgstr ""
+
+#: ../src/engines/netlist.c:441
+#, fuzzy
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have a ground node and try again."
+msgstr ""
+"<span weight=\"bold\" size=\"x-large\">Nie mo¿na utworzyæ listy po³±czeñ</"
+"span>\n"
+"\n"
+"Prawodpobnie powodem jest niew³a¶ciwie skonstruowany obwód.\n"
+"Sprawd¼, czy przynajmniej jeden wêze³ jest uziemiony."
+
+#: ../src/engines/netlist.c:450
+msgid "No test clamps found. Aborting.\n"
+msgstr ""
+
+#: ../src/engines/netlist.c:455
+#, fuzzy
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have one o more test clamps and try again."
+msgstr ""
+"<span weight=\"bold\" size=\"x-large\">No se pudo crear el listado de nodos</"
+"span>\n"
+"\n"
+"Posiblemente debido a un fallo en el esquemático. Comprueba que exista "
+"alguna\n"
+"punta de prueba y pruebe de nuevo."
+
+#: ../src/engines/gnucap.c:299
+#, fuzzy
+msgid "### Too few or none analysis found ###\n"
+msgstr ""
+"\n"
+"\n"
+"### Nie znaleziono ¿adnych informacji z analizy obwodu ###\n"
+"\n"
+
+#: ../src/engines/gnucap.c:366
+msgid "Unable to execute GnuCap."
+msgstr ""
+
+#: ../src/engines/gnucap.c:383
+#, fuzzy
+msgid "None"
+msgstr "Model"
+
+#: ../src/engines/gnucap.c:586
+msgid "time"
+msgstr ""
+
+#: ../src/engines/gnucap.c:591 ../src/engines/gnucap.c:601
+#, fuzzy
+msgid "voltage"
+msgstr "Napiêcie"
+
+#: ../src/engines/gnucap.c:596
+#, fuzzy
+msgid "frequency"
+msgstr "Czêstotliwo¶æ"
+
+#: ../src/engines/gnucap.c:645
+#, fuzzy
+msgid "Unknown analysis"
+msgstr "Nieznany rodzaj analizy"
+
+#: ../src/engines/gnucap.c:693
+#, fuzzy
+msgid "abort"
+msgstr "Start"
+
+#: ../src/engines/engine.c:32
+msgid "Operating Point"
+msgstr "Punkt pracy"
+
+#: ../src/engines/engine.c:33
+msgid "Transient Analysis"
+msgstr "Analiza przej¶ciowa"
+
+#: ../src/engines/engine.c:34
+msgid "DC transfer characteristic"
+msgstr ""
+
+#: ../src/engines/engine.c:35
+msgid "AC Analysis"
+msgstr "Analiza zmiennopr±dowa (AC)"
+
+#: ../src/engines/engine.c:36
+#, fuzzy
+msgid "Transfer Function"
+msgstr "Transmitancja"
+
+#: ../src/engines/engine.c:37
+msgid "Distortion Analysis"
+msgstr "Analiza rozrzutu parametrów"
+
+#: ../src/engines/engine.c:38
+msgid "Noise Analysis"
+msgstr "Analiza szumów"
+
+#: ../src/engines/engine.c:39
+msgid "Pole-Zero Analysis"
+msgstr "Analiza zer i biegunów uk³adu"
+
+#: ../src/engines/engine.c:40
+msgid "Sensitivity Analysis"
+msgstr "Analiza wra¿liwo¶ci"
+
+#: ../src/engines/engine.c:41
+msgid "Unknown Analysis"
+msgstr "Nieznany rodzaj analizy"
+
+#: ../src/netlist-editor.c:172
+#, c-format
+msgid "Netlist for %s"
+msgstr "Lista po³±czeñ dla %s"
+
+#: ../src/netlist-editor.c:173
+#, c-format
+msgid "Author : %s"
+msgstr "Autor: %s"
+
+#: ../src/netlist-editor.c:186
+msgid "Page %N of %Q"
+msgstr "Strona %N z %Q"
+
+#: ../src/netlist-editor.c:238 ../src/netlist-editor.c:274
+#, c-format
+msgid "The file %s could not be saved"
+msgstr ""
+
+#: ../src/netlist-editor.c:239 ../src/netlist-editor.c:275
+#, fuzzy
+msgid "Could not save temporary netlist file"
+msgstr "Nie mo¿na stworzyæ okna dialogowego w³a¶ciwo¶ci."
+
+#: ../src/netlist-editor.c:311
+#, fuzzy
+msgid "Could not create the netlist dialog"
+msgstr "Nie mo¿na stworzyæ okna dialogowego w³a¶ciwo¶ci."
+
+#. gettext support
+#: ../src/netlist-editor.c:390
+#, c-format
+msgid "The file %s could not be found."
+msgstr ""
+
+#: ../src/netlist-editor.c:391
+#, fuzzy
+msgid "Could not find the required file"
+msgstr ""
+"Nie znaleziono ¿±danego pliku:\n"
+"%s"
+
+#: ../src/main.c:107
+#, fuzzy
+msgid "Enables some debugging functions"
+msgstr "W³±cza pewne funkcje debugguj±ce"
+
+#: ../src/main.c:107
+msgid "LEVEL"
+msgstr "POZIOM"
+
+#: ../src/main.c:132
+msgid ""
+"You seem to be running Oregano without\n"
+"having it installed properly on your system.\n"
+"\n"
+"Please install Oregano and try again."
+msgstr ""
+"Wygl±da na to, ¿e program Oregano\n"
+"nie zosta³ prawid³owo zainstalowany.\n"
+"\n"
+"Zainstaluj poprawnie Oregano (lub popraw b³êdy instalacji je¶li wiesz jak) i "
+"spróbuj ponownie."
+
+#: ../src/main.c:155
+msgid ""
+"Could not find a parts library.\n"
+"\n"
+"This is probably due to a faulty installation\n"
+"of Oregano. Please check your installation."
+msgstr ""
+"Nie mogê znale¼æ biblioteki elementów.\n"
+"\n"
+"Prawdopodobnie jest to spowodowane b³êdn± instalacj± Oregano.\n"
+"Sprawd¼ co jest nie tak."
+
+#: ../src/main.c:212
+msgid "Welcome to Oregano"
+msgstr "Witaj w Oregano"
+
+#: ../src/load-schematic.c:261
+msgid "Bad file format."
+msgstr ""
+
+#: ../src/load-schematic.c:271
+msgid "Unknown parser error."
+msgstr ""
+
+#: ../src/load-library.c:149
+#, c-format
+msgid "Could not find the requested symbol: %s\n"
+msgstr "Symbol nie zosta³ znaleziony: %s\n"
+
+#: ../src/load-library.c:165
+#, c-format
+msgid "Could not find the requested part: %s\n"
+msgstr "Element nie zosta³ znaleziony: %s\n"
+
+#: ../src/file.c:50 ../src/file.c:90
+msgid "Oregano Files"
+msgstr "Pliki Oregano"
+
+#: ../src/file.c:52 ../src/file.c:92
+msgid "All Files"
+msgstr "Wszystkie pliki"
+
+#: ../src/file.c:55
+msgid "Open File"
+msgstr "Otwórz plik"
+
+#: ../src/file.c:95
+msgid "Save File"
+msgstr "Zapisz plik"
+
+#: ../src/file.c:145
+msgid "Netlist File"
+msgstr "Plik listy po³±czeñ"
+
+#: ../src/file.c:221
+msgid "Open file"
+msgstr "Otwórz plik"
+
+#: ../src/file.c:271
+msgid "Save schematic as"
+msgstr "Zapisz schemat jako"
+
+#: ../src/file.c:336
+msgid "Netlist filename"
+msgstr "Nazwa pliku listy po³±czeñ"
+
+#: ../src/dialogs.c:126
+#, fuzzy
+msgid ""
+"(c) 2003-2006 LUGFi\n"
+"(c) 1999-2001 Richard Hult"
+msgstr ""
+"(c) 2003-2004 LUGFi\n"
+"(c) 1999-2001, Richard Hult"
+
+#: ../src/dialogs.c:141
+msgid "Schematic capture and circuit simulation.\n"
+msgstr "Program do rysowania schematów elektrycznych i symulacji obwodów.\n"
+
+#: ../src/model/schematic.c:584
+#, c-format
+msgid "File %s does not exists."
+msgstr ""
+
+#: ../src/model/schematic.c:592 ../src/model/schematic.c:630
+#, c-format
+msgid "Unknown file format for %s."
+msgstr ""
+
+#: ../src/model/schematic.c:611
+msgid "Load fails!."
+msgstr ""
+
+#: ../src/plot-add-function.c:48
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this"
+msgstr ""
+
+#: ../src/plot-add-function.c:50 ../src/plot-add-function.c:57
+#, fuzzy
+msgid "Could not create plot window"
+msgstr "Nie mo¿na utworzyæ okna wykresu."
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the required file:\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Nie znaleziono ¿±danego pliku:\n"
+#~ "</span>%s\n"
+
+#~ msgid "s"
+#~ msgstr "s"
+
+#~ msgid "Hz"
+#~ msgstr "Hz"
+
+#~ msgid "A"
+#~ msgstr "A"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the required file:</"
+#~ "span>\n"
+#~ "%s"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Nie znaleziono ¿±danego pliku:</"
+#~ "span>\n"
+#~ "%s"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not save Schematic file\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Nie mo¿na zapisaæ schematu do "
+#~ "pliku\n"
+#~ "</span>%s\n"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create a netlist</span>\n"
+#~ "\n"
+#~ "%s"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Nie mo¿na utworzyæ listy po³±czeñ</"
+#~ "span>\n"
+#~ "\n"
+#~ "%s"
+
+#~ msgid "<span weight=\"bold\" size=\"x-large\">Unspected error!!!</span>"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Niespodziewany b³±d!!!</span>"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Schematic %s has unsaved changes</"
+#~ "span>\n"
+#~ "\n"
+#~ "Do you want to save them?"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Schemat %s zosta³ zmieniony od "
+#~ "czasu ostatniego zapisu</span>\n"
+#~ "\n"
+#~ "Chcesz zapisaæ zmiany?"
+
+#~ msgid "<span weight=\"bold\">Could not create log window.</span>"
+#~ msgstr "<span weight=\"bold\">Nie mo¿na utworzyæ okna dziennika.</span>"
+
+#~ msgid "_View netlist"
+#~ msgstr "_Podgl±d listy po³±czeñ"
+
+#~ msgid "View plot"
+#~ msgstr "Wy¶wietl wykres"
+
+#~ msgid "View plot "
+#~ msgstr "Wy¶wietla wykres"
+
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create settings dialog.</"
+#~ "span>"
+#~ msgstr ""
+#~ "<span size=\"x-large\" weight=\"bold\">Nie mo¿na utworzyæ okna "
+#~ "w³a¶ciwo¶ci.</span>"
+
+#~ msgid ""
+#~ "<span size=\"x-large\" weigth=\"bold\">Transient analysis</span>\n"
+#~ "\n"
+#~ "Start time must be less than stop time."
+#~ msgstr ""
+#~ "<span size=\"x-large\" weigth=\"bold\">Analiza przej¶ciowa</span>\n"
+#~ "\n"
+#~ "Pocz±tkowy czas musi byæ mniejszy od koñcowego."
+
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create simulation "
+#~ "settings dialog.</span>"
+#~ msgstr ""
+#~ "<span size=\"x-large\" weight=\"bold\">Nie mo¿na utworzyæ okna ustawieñ "
+#~ "symulacji.</span>"
+
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create simulation "
+#~ "settings dialog.</sapn>"
+#~ msgstr ""
+#~ "<span size=\"x-large\" weight=\"bold\">Nie mo¿na utworzyæ okna ustawieñ "
+#~ "symulacji.</span>"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the simulation "
+#~ "executable</span>\n"
+#~ "\n"
+#~ "This probably means that you have not configured Oregano properly."
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Nie znalaz³em programu do "
+#~ "symulacji</span>\n"
+#~ "\n"
+#~ "Prawdopodobnie pope³ni³e¶ b³±d przy konfiguracji Oregano."
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">You have not entered a simulation "
+#~ "executable.</span>\n"
+#~ "\n"
+#~ "Please choose Settings and specify whichprogram to use for simulations."
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Nie wskaza³e¶ programu do "
+#~ "symulacji.</span>\n"
+#~ "\n"
+#~ "Wejd¼ w menu Narzêdzia/Preferencje i wska¿ odpowiedni program."
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create simulation dialog."
+#~ "</span>"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Nie mo¿na utworzyæ okna "
+#~ "dialogowego symulacji.</span>"
+
+#~ msgid ""
+#~ "<span weight=\"bold\">Could not find the required file:\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "<span weight=\"bold\">Nie mo¿na znale¼æ ¿±danego pliku:\n"
+#~ "</span>%s\n"
+
+#~ msgid ""
+#~ "<span weight=\"bold\">Could not create textbox properties dialog.</span>"
+#~ msgstr ""
+#~ "<span weight=\"bold\">Nie mo¿na utworzyæ okna dialogowego w³a¶ciwo¶ci "
+#~ "tekstu.</span>"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not save temporary netlist "
+#~ "file:\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Nie mo¿na zapisaæ tymczasowego "
+#~ "pliku z list± po³±czeñ:\n"
+#~ "</span>%s\n"
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "Name: "
+#~ msgstr "Nazwa:"
+
+#~ msgid "Value: "
+#~ msgstr "Warto¶æ:"
+
+#~ msgid "(0, 0)"
+#~ msgstr "(0, 0)"
+
+#~ msgid "window"
+#~ msgstr "okno"
+
+#~ msgid "./oregano_parser"
+#~ msgstr "./oregano_parser"
+
+#~ msgid "GnuCap"
+#~ msgstr "GnuCap"
+
+#~ msgid "NgSpice"
+#~ msgstr "NgSpice"
+
+#, fuzzy
+#~ msgid "Parser"
+#~ msgstr "Parser"
+
+#~ msgid "Oregano"
+#~ msgstr "Oregano"
+
+#~ msgid "ABCDEFGHIJK abcdefghi"
+#~ msgstr "ABCDEFGHIJK abcdefghi"
+
+#~ msgid "<b>Format</b>"
+#~ msgstr "<b>Format</b>"
+
+#~ msgid "<b>Size</b>"
+#~ msgstr "<b>Rozmiar</b>"
+
+#~ msgid "Height : "
+#~ msgstr "Wysoko¶æ: "
+
+#~ msgid "Plot Export"
+#~ msgstr "Eksportuj wykres"
+
+#~ msgid "Portable Network Graphics (png)"
+#~ msgstr "Portable Network Graphics (PNG)"
+
+#~ msgid "Postscript (ps)"
+#~ msgstr "Postscript (PS)"
+
+#~ msgid "Width : "
+#~ msgstr "Szeroko¶æ: "
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create a netlist</span>\n"
+#~ "\n"
+#~ "Possibly dueto a faulty circuit schematic. Please check that\n"
+#~ "you have one o more test clamps and try again."
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Nie mo¿na utworzyæ listy po³±czeñ</"
+#~ "span>\n"
+#~ "\n"
+#~ "Prawodpobnie powodem jest niew³a¶ciwie skonstruowany obwód.\n"
+#~ "Sprawd¼, czy umie¶ci³e¶ przynajmniej jeden próbnik."
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create a netlist</span>\n"
+#~ "\n"
+#~ "Possibly due an I/O error.</span>"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">No se pudo crear el archivo de "
+#~ "netlist</span>\n"
+#~ "\n"
+#~ "Posiblemente por un error de E/S.</span><span weight=\"bold\" size=\"x-"
+#~ "large\">No se pudo crear el listado de nodos</span>\n"
+#~ "\n"
+#~ "Posiblemente debidoc a un fallo en el esquemático. Comprueba que exista "
+#~ "algún\n"
+#~ "nodo a tierra y pruebe de nuevo.<span weight=\"bold\" size=\"x-large\">No "
+#~ "se pudo crear el listado de nodos</span>\n"
+#~ "\n"
+#~ "Posiblemente debido a un fallo en el esquemático. Comprueba que exista "
+#~ "algún\n"
+#~ "nodo a tierra y pruebe de nuevo."
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create a netlist</span>\n"
+#~ "\n"
+#~ "Possibly due an I/O error."
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">No se pudo generar lista de nodos</"
+#~ "span>\n"
+#~ "\n"
+#~ "Posible error de E/S."
+
+#~ msgid ""
+#~ "DEC\n"
+#~ "OCT\n"
+#~ "LIN\n"
+#~ msgstr ""
+#~ "DEC\n"
+#~ "OCT\n"
+#~ "LIN\n"
+
+#~ msgid ""
+#~ "To place the selected part, either press the 'Place' button, press the "
+#~ "key 'l', or drag the preview to the sheet."
+#~ msgstr ""
+#~ "Para insertar el componente escogido, presione el botón 'Insertar', la "
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644
index 0000000..6d35d3e
--- /dev/null
+++ b/po/pt_BR.po
@@ -0,0 +1,1593 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# Marcelo Elias Del Valle <marceloelias@iname.com>, 2001.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Oregano 0.22\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-11 02:36-0300\n"
+"PO-Revision-Date: 2001-02-20 19:12Sao Paulo\n"
+"Last-Translator: Marcelo Elias Del Valle,63,,6945 7011,marceloelias@iname."
+"com <marceloelias@iname.com>\n"
+"Language-Team: Português do Brasil <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 0.8\n"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:1
+#, fuzzy
+msgid "<b>AC Analysis Options</b>"
+msgstr "<b>Opções AC</b>"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:2
+#, fuzzy
+msgid "<b>Type</b>"
+msgstr "<b>Tipo</b>"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:3
+msgid "Current"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:4
+#, fuzzy
+msgid "Edit Clamp properties"
+msgstr "Editar propriedades"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:5
+msgid "Imaginary part"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:6
+msgid "Magnitude"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:7
+msgid "Phase"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:8
+msgid "Real part"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:9
+msgid "Use decibel scale"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:10
+msgid "Voltage"
+msgstr ""
+
+#: ../data/dialogs/log-window.glade2.h:1
+msgid "Clear"
+msgstr "Limpar"
+
+#: ../data/dialogs/log-window.glade2.h:2
+msgid "Oregano Log Window"
+msgstr "Janela de log Oregano"
+
+#: ../data/dialogs/page-properties.glade2.h:1
+msgid "<b>Alignment</b>"
+msgstr ""
+
+#: ../data/dialogs/page-properties.glade2.h:2
+#, fuzzy
+msgid "Center Horizontally"
+msgstr "_Virar horizontalmente"
+
+#: ../data/dialogs/page-properties.glade2.h:3
+#, fuzzy
+msgid "Center Vertically"
+msgstr "_Virar verticalmente"
+
+#: ../data/dialogs/page-properties.glade2.h:4
+msgid "Fit to page"
+msgstr ""
+
+#: ../data/dialogs/page-properties.glade2.h:5
+#, fuzzy
+msgid "Print Properties"
+msgstr "Propriedades"
+
+#: ../data/dialogs/part-browser.glade2.h:1
+msgid "<b>Preview</b>"
+msgstr ""
+
+#: ../data/dialogs/part-browser.glade2.h:2
+msgid "Library:"
+msgstr "Biblioteca:"
+
+#: ../data/dialogs/part-browser.glade2.h:3 ../src/schematic-view-ui.h:360
+msgid "Parts"
+msgstr "Partes"
+
+#: ../data/dialogs/part-browser.glade2.h:4
+msgid "Place"
+msgstr "Colocar"
+
+#: ../data/dialogs/part-browser.glade2.h:5
+msgid "Press this button to place the selected part"
+msgstr "Pressione este botão para colocar a parte selecionada"
+
+#: ../data/dialogs/part-browser.glade2.h:6
+msgid "Search:"
+msgstr ""
+
+#: ../data/dialogs/part-browser.glade2.h:7
+msgid "Select which library to use"
+msgstr "Selecionar qual biblioteca utilizar"
+
+#: ../data/dialogs/part-properties-dialog.glade2.h:1
+#, fuzzy
+msgid "Part Properties"
+msgstr "Propriedades da parte"
+
+#: ../data/dialogs/plot-window.glade2.h:1
+msgid "<b>Plot</b>"
+msgstr ""
+
+#: ../data/dialogs/plot-window.glade2.h:2
+msgid "<b>Variables</b>"
+msgstr "<b>Variáveis</b>"
+
+#: ../data/dialogs/plot-window.glade2.h:3
+msgid "Plot"
+msgstr "Plotar"
+
+#: ../data/dialogs/plot-window.glade2.h:4
+#, fuzzy
+msgid "Region"
+msgstr "Refazer"
+
+#: ../data/dialogs/plot-window.glade2.h:5
+msgid "Shift"
+msgstr ""
+
+#: ../data/dialogs/properties.glade2.h:1
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:1
+msgid " "
+msgstr " "
+
+#: ../data/dialogs/properties.glade2.h:2
+msgid "<b>Comments</b>"
+msgstr ""
+
+#: ../data/dialogs/properties.glade2.h:3
+msgid "Author:"
+msgstr ""
+
+#: ../data/dialogs/properties.glade2.h:4 ../src/sheet/part-item.c:147
+msgid "Properties"
+msgstr "Propriedades"
+
+#: ../data/dialogs/properties.glade2.h:5
+msgid "Title:"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:1
+msgid "\n"
+msgstr "\n"
+
+#: ../data/dialogs/settings.glade2.h:3
+msgid "<b>Data Paths</b>"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:4
+msgid "<b>Engine</b>"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:5
+#, fuzzy
+msgid "<b>Executable Path</b>"
+msgstr "<b>Programas executáveis</b>"
+
+#: ../data/dialogs/settings.glade2.h:6
+msgid "<b>File Format</b>"
+msgstr "<b>Formato de arquivo</b>"
+
+#: ../data/dialogs/settings.glade2.h:7
+msgid "<b>User Interface</b>"
+msgstr "<b>Interface de usuário</b>"
+
+#: ../data/dialogs/settings.glade2.h:8
+msgid "Automatically show log windows after simulation"
+msgstr "Automaticamente mostrar janela de log depois da simulação"
+
+#: ../data/dialogs/settings.glade2.h:9
+msgid "Compress saved files"
+msgstr "Comprimir arquivos salvos"
+
+#: ../data/dialogs/settings.glade2.h:10
+msgid "Grid size[px] "
+msgstr "Tamanho de grade [px] "
+
+#: ../data/dialogs/settings.glade2.h:11
+msgid "Library"
+msgstr "Biblioteca"
+
+#: ../data/dialogs/settings.glade2.h:12
+msgid "Model"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:13
+msgid "Paths"
+msgstr "Caminhos"
+
+#: ../data/dialogs/settings.glade2.h:14
+#, fuzzy
+msgid "Preferences"
+msgstr "Preferências"
+
+#: ../data/dialogs/settings.glade2.h:15
+#, fuzzy
+msgid "Realtime update of selection (slow)"
+msgstr "Atualização de seleção em tempo real (lento)"
+
+#: ../data/dialogs/settings.glade2.h:16
+msgid "Remove"
+msgstr "Remover"
+
+#: ../data/dialogs/settings.glade2.h:17
+#, fuzzy
+msgid "Select A File"
+msgstr "Selecionar _tudo"
+
+#: ../data/dialogs/settings.glade2.h:18
+msgid "Show the splash screen at application startup"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:19
+msgid "TODO : Add FINDPATH for Engines"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:20
+msgid "User Interface"
+msgstr "Interface de usuário"
+
+#: ../data/dialogs/sim-settings.glade2.h:1
+msgid "<b>AC</b>"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:2
+#, fuzzy
+msgid "<b>DC Sweep</b>"
+msgstr "<b>Varredura DC (corrente contínua)</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:3
+msgid "<b>Fourier</b>"
+msgstr "<b>Fourier</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:4
+msgid "<b>Transient</b>"
+msgstr "<b>Transiente</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:5
+msgid "Add new options"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:6
+#, fuzzy
+msgid "Add to list"
+msgstr "Adicionar à lista"
+
+#: ../data/dialogs/sim-settings.glade2.h:7
+#, fuzzy
+msgid "Analysis Options"
+msgstr "Opções"
+
+#: ../data/dialogs/sim-settings.glade2.h:8
+msgid "Analysis Parameters"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:9
+msgid "DEC"
+msgstr "DEC"
+
+#: ../data/dialogs/sim-settings.glade2.h:10
+msgid "Frequency"
+msgstr "Frequência"
+
+#: ../data/dialogs/sim-settings.glade2.h:11
+msgid "LIN"
+msgstr "LIN"
+
+#: ../data/dialogs/sim-settings.glade2.h:12
+msgid "List of outputs"
+msgstr "Lista de saídas"
+
+#: ../data/dialogs/sim-settings.glade2.h:13
+msgid "OCT"
+msgstr "OCT"
+
+#: ../data/dialogs/sim-settings.glade2.h:14
+#, fuzzy
+msgid "Points"
+msgstr "apontamentos"
+
+#: ../data/dialogs/sim-settings.glade2.h:15
+msgid "Simulation Settings"
+msgstr "Ajustes de simulação"
+
+#: ../data/dialogs/sim-settings.glade2.h:16
+msgid "Source"
+msgstr "Fonte"
+
+#: ../data/dialogs/sim-settings.glade2.h:17
+msgid "Start"
+msgstr "Partida"
+
+#: ../data/dialogs/sim-settings.glade2.h:18
+msgid "Step"
+msgstr "Passo"
+
+#: ../data/dialogs/sim-settings.glade2.h:19
+msgid "Stop"
+msgstr "Parada"
+
+#: ../data/dialogs/sim-settings.glade2.h:20
+msgid "Type"
+msgstr "Tipo"
+
+#: ../data/dialogs/sim-settings.glade2.h:21
+msgid "Use Initial Conditions"
+msgstr ""
+
+#: ../data/dialogs/simulation.glade2.h:1
+#, fuzzy
+msgid "Progress: None"
+msgstr "Progresso:"
+
+#: ../data/dialogs/simulation.glade2.h:2
+msgid "Simulation"
+msgstr "Simulação"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:2
+msgid "<b>Text</b>"
+msgstr "<b>Texto</b>"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:3
+#, fuzzy
+msgid "Text Properties"
+msgstr "Propriedades do Texto"
+
+#: ../data/dialogs/view-netlist.glade2.h:1
+#, fuzzy
+msgid "Netlist View"
+msgstr "Vista da lista de rede (netlist)"
+
+#: ../data/dialogs/view-netlist.glade2.h:2 ../src/schematic-view-ui.h:161
+msgid "_Simulate"
+msgstr "_Simular"
+
+#: ../src/sheet/part-item.c:147
+msgid "Edit the part's properties"
+msgstr "Editar propriedades das partes"
+
+#: ../src/sheet/part-item.c:616 ../src/sheet/part-item.c:765
+#: ../src/sheet/textbox-item.c:679 ../src/sim-settings.c:775
+#: ../src/settings.c:139 ../src/schematic-view.c:251
+#: ../src/schematic-view.c:317 ../src/schematic-view.c:2431 ../src/plot.c:434
+#: ../src/plot.c:689 ../src/part-browser.c:496 ../src/netlist-editor.c:309
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this."
+msgstr ""
+
+#: ../src/sheet/part-item.c:618 ../src/sheet/part-item.c:626
+#: ../src/sheet/part-item.c:767 ../src/sheet/part-item.c:775
+msgid "Could not create part properties dialog."
+msgstr "Não foi possível criar a janela de diálogo de propriedades."
+
+#: ../src/sheet/sheet-item.c:307 ../src/schematic-view-ui.h:288
+msgid "Copy"
+msgstr "Copiar"
+
+#: ../src/sheet/sheet-item.c:307
+msgid "Copy the object to the clipboard"
+msgstr "Copiar o objeto para a área de trabalho (clipboard)"
+
+#: ../src/sheet/sheet-item.c:310 ../src/schematic-view-ui.h:285
+msgid "Cut"
+msgstr "Cortar"
+
+#: ../src/sheet/sheet-item.c:310
+msgid "Cut the object to the clipboard"
+msgstr "Cortar o objeto para a área de trabalho (clipboard)"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete"
+msgstr "Apagar"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete the object"
+msgstr "Apaga o objeto"
+
+#: ../src/sheet/sheet-item.c:319
+msgid "Rotate"
+msgstr "Rotacionar"
+
+#: ../src/sheet/sheet-item.c:320
+msgid "Rotate the selected objects 90 degrees clockwise"
+msgstr "Rotaciona os objetos selecionados 90 graus no sentido horário"
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit..."
+msgstr "Editar..."
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit the text"
+msgstr "Edita o texto"
+
+#: ../src/sheet/textbox-item.c:596
+msgid "Label"
+msgstr "Legenda"
+
+#: ../src/sheet/textbox-item.c:681 ../src/sheet/textbox-item.c:690
+msgid "Could not create textbox properties dialog"
+msgstr ""
+"Não foi possível criar a janela de diálogo de propriedades de caixa de "
+"texto."
+
+#: ../src/simulation.c:102 ../src/simulation.c:109 ../src/simulation.c:115
+msgid "Could not create simulation dialog"
+msgstr "Não foi possível criar janela de diálogo de simulação"
+
+#: ../src/simulation.c:150
+#, fuzzy, c-format
+msgid "Progress: <b>%s</b>"
+msgstr "Progresso:"
+
+#: ../src/simulation.c:201
+msgid ""
+"<span weight=\"bold\" size=\"large\">The simulation was aborted due to an "
+"error.</span>\n"
+"\n"
+"Would you like to view the error log?"
+msgstr ""
+"<span weight=\"bold\" size=\"large\">A simulação foi abortada por um erro."
+"</span>\n"
+"\n"
+"Gostaria de visualizar o log de erros?"
+
+#: ../src/simulation.c:211
+msgid "The simulation was aborted due to an error"
+msgstr "A simulação foi abortada por um erro"
+
+#: ../src/sim-settings.c:229
+msgid "Add new option"
+msgstr ""
+
+#: ../src/sim-settings.c:777 ../src/sim-settings.c:784
+#: ../src/sim-settings.c:790
+#, fuzzy
+msgid "Could not create simulation settings dialog"
+msgstr "Não foi possível criar janela de diálogo de ajustes de simulação"
+
+#: ../src/sim-settings.c:814
+msgid "Option"
+msgstr "Opção"
+
+#: ../src/sim-settings.c:816
+msgid "Value"
+msgstr "Valor"
+
+#: ../src/settings.c:141 ../src/settings.c:148 ../src/settings.c:154
+#, fuzzy
+msgid "Could not create settings dialog"
+msgstr "Não foi possível criar janela de diálogo de configurações"
+
+#: ../src/settings.c:215
+msgid "Engine executable not found"
+msgstr ""
+
+#: ../src/settings.c:216
+msgid "The engine is unable to locate the external program."
+msgstr ""
+
+#: ../src/schematic-view.c:254
+msgid "Could not create properties dialog"
+msgstr "Não foi possível criar a janela de diálogo de propriedades"
+
+#: ../src/schematic-view.c:320
+#, fuzzy
+msgid "Could not create the page properties dialog"
+msgstr "Não foi possível criar a janela de diálogo de propriedades"
+
+#: ../src/schematic-view.c:383
+#, fuzzy
+msgid "Could not load file"
+msgstr "Não foi possível encontrar o arquivo requisitado"
+
+#: ../src/schematic-view.c:410 ../src/schematic-view.c:1304
+#: ../src/schematic-view.c:1312
+msgid "Untitled.oregano"
+msgstr "SemTítulo.oregano"
+
+#: ../src/schematic-view.c:415
+msgid "Could not save schematic file"
+msgstr "Não foi possível salvar arquivo de esquema"
+
+#: ../src/schematic-view.c:765 ../src/netlist-editor.c:225
+#: ../src/netlist-editor.c:436
+msgid "Could not create a netlist"
+msgstr ""
+
+#: ../src/schematic-view.c:768 ../src/netlist-editor.c:229
+#: ../src/netlist-editor.c:439
+msgid "An unexpected error has occurred"
+msgstr ""
+
+#: ../src/schematic-view.c:1313
+msgid "Untitled.netlist"
+msgstr "SemTítulo.netlist"
+
+#: ../src/schematic-view.c:1504
+#, c-format
+msgid ""
+"<span weight=\"bold\" size=\"large\">Save changes to schematic %s before "
+"closing?</span>\n"
+"\n"
+"If you don't save, all changes since you last saved will be permanently lost."
+msgstr ""
+
+#: ../src/schematic-view.c:1516
+msgid "Close _without Saving"
+msgstr ""
+
+#: ../src/schematic-view.c:2434 ../src/schematic-view.c:2445
+#, fuzzy
+msgid "Could not create the log window"
+msgstr "Não foi possível criar janela"
+
+#: ../src/schematic-view-ui.h:38
+msgid "_New"
+msgstr "_Novo"
+
+#: ../src/schematic-view-ui.h:38 ../src/schematic-view-ui.h:264
+msgid "Create a new schematic"
+msgstr "Criar um novo esquema"
+
+#: ../src/schematic-view-ui.h:47
+#, fuzzy
+msgid "Page Properties"
+msgstr "Propriedades da parte"
+
+#: ../src/schematic-view-ui.h:48
+#, fuzzy
+msgid "Set print properties"
+msgstr "Editar propriedades de partes"
+
+#: ../src/schematic-view-ui.h:56 ../src/print.c:367 ../src/plot.c:150
+#: ../src/netlist-editor.c:193
+msgid "Print Preview"
+msgstr "Visualização de impressão"
+
+#: ../src/schematic-view-ui.h:57
+msgid "Preview the schematic before printing"
+msgstr "Visualizar o esquema antes de imprimir"
+
+#: ../src/schematic-view-ui.h:65
+msgid "Schematic _Properties..."
+msgstr "_Propriedades de esquema"
+
+#: ../src/schematic-view-ui.h:66
+msgid "Modify the schematic's properties"
+msgstr "Modifica as propriedades do esquema"
+
+#: ../src/schematic-view-ui.h:95
+msgid "_Delete"
+msgstr "Apa_gar"
+
+#: ../src/schematic-view-ui.h:96
+msgid "Delete the selection"
+msgstr "Apaga a seleção"
+
+#: ../src/schematic-view-ui.h:102
+msgid "_Rotate"
+msgstr "_Rotacionar"
+
+#: ../src/schematic-view-ui.h:103
+msgid "Rotate the selection clockwise"
+msgstr "Rotaciona a seleção no sentído horário"
+
+#: ../src/schematic-view-ui.h:109
+#, fuzzy
+msgid "Flip _horizontally"
+msgstr "Vira a seleção horizontalmente"
+
+#: ../src/schematic-view-ui.h:110
+msgid "Flip the selection horizontally"
+msgstr "Vira a seleção horizontalmente"
+
+#: ../src/schematic-view-ui.h:116
+#, fuzzy
+msgid "Flip _vertically"
+msgstr "Vira a seleção verticalmente"
+
+#: ../src/schematic-view-ui.h:117
+msgid "Flip the selection vertically"
+msgstr "Vira a seleção verticalmente"
+
+#: ../src/schematic-view-ui.h:124
+#, fuzzy
+msgid "Select _all"
+msgstr "_Não selecionar tudo"
+
+#: ../src/schematic-view-ui.h:125
+msgid "Select all objects on the sheet"
+msgstr "Seleciona todos os objetos na planilha"
+
+#: ../src/schematic-view-ui.h:131
+#, fuzzy
+msgid "Deselect a_ll"
+msgstr "_Não selecionar tudo"
+
+#: ../src/schematic-view-ui.h:132
+msgid "Deselect the selected objects"
+msgstr "Remove a seleção dos objetos selecionados"
+
+#: ../src/schematic-view-ui.h:140
+#, fuzzy
+msgid "_Object Properties..."
+msgstr "_Propriedades do objeto"
+
+#: ../src/schematic-view-ui.h:141
+msgid "Modify the object's properties"
+msgstr "Modifica as propriedades do objeto"
+
+#: ../src/schematic-view-ui.h:146
+msgid "Simulation S_ettings..."
+msgstr "A_justes de simulação"
+
+#: ../src/schematic-view-ui.h:147
+msgid "Edit the simulation settings"
+msgstr "Edita as configurações de simulação"
+
+#: ../src/schematic-view-ui.h:162
+msgid "Run a simulation"
+msgstr "Roda uma simulação"
+
+#: ../src/schematic-view-ui.h:169
+msgid "_Generate netlist"
+msgstr "_Gerar lista de rede (netlist)"
+
+#: ../src/schematic-view-ui.h:170
+msgid "Generate a netlist"
+msgstr "Gera uma lista de rede (netlist)"
+
+#: ../src/schematic-view-ui.h:177
+msgid "50%"
+msgstr "50%"
+
+#: ../src/schematic-view-ui.h:178
+msgid "Set the zoom factor to 50%"
+msgstr "Ajusta o fator de aproximação (zoom) para 50%"
+
+#: ../src/schematic-view-ui.h:179
+msgid "75%"
+msgstr "75%"
+
+#: ../src/schematic-view-ui.h:180
+msgid "Set the zoom factor to 75%"
+msgstr "Ajusta o fator de aproximação (zoom) para 75%"
+
+#. GNOMEUIINFO_ITEM_NONE(N_("50%"),
+#. N_("Set the zoom factor to 50%"), plot_zoom_50_cmd),
+#. GNOMEUIINFO_ITEM_NONE(N_("75%"),
+#. N_("Set the zoom factor to 75%"), plot_zoom_75_cmd),
+#: ../src/schematic-view-ui.h:181 ../src/plot.c:167
+msgid "100%"
+msgstr "100%"
+
+#: ../src/schematic-view-ui.h:182 ../src/plot.c:168
+msgid "Set the zoom factor to 100%"
+msgstr "Ajusta o fator de aproximação (zoom) para 100%"
+
+#: ../src/schematic-view-ui.h:184
+msgid "125%"
+msgstr "125%"
+
+#: ../src/schematic-view-ui.h:185
+msgid "Set the zoom factor to 125%"
+msgstr "Ajusta o fator de aproximação (zoom) para 125%"
+
+#: ../src/schematic-view-ui.h:186
+msgid "150%"
+msgstr "150%"
+
+#: ../src/schematic-view-ui.h:187
+msgid "Set the zoom factor to 150%"
+msgstr "Ajusta o fator de aproximação (zoom) para 150%"
+
+#: ../src/schematic-view-ui.h:196
+msgid "Zoom"
+msgstr "Aproximação (zoom)"
+
+#: ../src/schematic-view-ui.h:202
+msgid "_Log"
+msgstr "_Log"
+
+#: ../src/schematic-view-ui.h:202
+msgid "View the latest simulation log"
+msgstr "Visualizar o último log de simulação"
+
+#: ../src/schematic-view-ui.h:205
+msgid "_Node labels"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:205
+#, fuzzy
+msgid "Show or hide node labels"
+msgstr "Mostrar ou esconder"
+
+#: ../src/schematic-view-ui.h:207
+#, fuzzy
+msgid "N_etlist"
+msgstr "Nome de arquivo para lista de rede (netlist)"
+
+#: ../src/schematic-view-ui.h:208
+#, fuzzy
+msgid "View the circuit netlist"
+msgstr "Visualizar a última lista de rede simulada"
+
+#: ../src/schematic-view-ui.h:240
+msgid "_Contents"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:240
+msgid "Show program help"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:254
+msgid "_Tools"
+msgstr "_Ferramentas"
+
+#: ../src/schematic-view-ui.h:264
+msgid "New"
+msgstr "Novo"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open"
+msgstr "Abrir"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open an existing schematic"
+msgstr "Abre um esquema existente"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save"
+msgstr "Salvar"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save the schematic"
+msgstr "Salva o esquema"
+
+#: ../src/schematic-view-ui.h:285
+msgid "Cut the selection to the clipboard"
+msgstr "Corta a seleção para a área de trabalho (clipboard)"
+
+#: ../src/schematic-view-ui.h:288
+msgid "Copy the selection to the clipboard"
+msgstr "Copia a seleção para a área de trabalho (clipboard)"
+
+#: ../src/schematic-view-ui.h:291 ../src/schematic-view-ui.h:404
+msgid "Paste"
+msgstr "Colar"
+
+#: ../src/schematic-view-ui.h:291
+#, fuzzy
+msgid "Paste the clipboard"
+msgstr "Cola a área de trabalho (clipboard)"
+
+#: ../src/schematic-view-ui.h:301
+msgid "Arrow"
+msgstr "Seta"
+
+#: ../src/schematic-view-ui.h:302
+msgid "Select, move and modify objects"
+msgstr "Seleciona, move e modifica objetos"
+
+#: ../src/schematic-view-ui.h:307
+msgid "Text"
+msgstr "Texto"
+
+#: ../src/schematic-view-ui.h:308
+msgid "Put text on the schematic"
+msgstr "Coloca texto no esquema"
+
+#: ../src/schematic-view-ui.h:313
+msgid "Wires"
+msgstr "Fiação"
+
+#: ../src/schematic-view-ui.h:314
+msgid "Draw wires"
+msgstr "Desenha fios"
+
+#: ../src/schematic-view-ui.h:330
+msgid "Add Voltage Clamp"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:331
+msgid "Add a Voltage test clamp"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:336
+msgid "Simulate"
+msgstr "Simulação"
+
+#: ../src/schematic-view-ui.h:337
+msgid "Run a simulation for the current schematic"
+msgstr "Roda uma simulação para o esquema corrente"
+
+#: ../src/schematic-view-ui.h:342 ../src/schematic-view-ui.h:343
+msgid "Simulation settings"
+msgstr "Ajustes de simulação"
+
+#: ../src/schematic-view-ui.h:361
+msgid "Show or hide the part browser"
+msgstr "Mostrar ou esconder o navegador de partes"
+
+#: ../src/schematic-view-ui.h:366
+msgid "Grid"
+msgstr "Grade"
+
+#: ../src/schematic-view-ui.h:367
+msgid "Turn on/off the grid"
+msgstr "Tornar a grade ligada/desligada"
+
+#: ../src/schematic-view-ui.h:372 ../src/schematic-view-ui.h:373
+msgid "Zoom in"
+msgstr "Aproximar mais"
+
+#: ../src/schematic-view-ui.h:378 ../src/schematic-view-ui.h:379
+msgid "Zoom out"
+msgstr "Aproximar menos"
+
+#: ../src/schematic-view-ui.h:405
+msgid "Paste the contents of the clipboard to the sheet"
+msgstr "Colar o conteúdo da área de trabalho (clipboard) na planilha"
+
+#: ../src/print.c:297
+msgid "Print"
+msgstr ""
+
+#: ../src/print.c:304
+msgid "Pages"
+msgstr ""
+
+#: ../src/print.c:339
+msgid "Can't get paper info! .. getting default!"
+msgstr ""
+
+#: ../src/print.c:353
+msgid "Could not create font for printing."
+msgstr "Não foi possível criar fontes para imprimir."
+
+#: ../src/print.c:372
+msgid "Printing failed."
+msgstr "Falha na impressão"
+
+#: ../src/plot.c:61 ../src/plot.c:62
+msgid "Sans 10"
+msgstr "Sans 10"
+
+#: ../src/plot.c:63
+msgid "Sans 8"
+msgstr "Sans 8"
+
+#: ../src/plot.c:151
+msgid "Preview the plot before printing"
+msgstr "Visualizar o esquema antes de imprimir"
+
+#: ../src/plot.c:153
+msgid "Export plot"
+msgstr ""
+
+#: ../src/plot.c:154
+msgid "Show the export menu"
+msgstr ""
+
+#: ../src/plot.c:155
+#, fuzzy
+msgid "Add Function"
+msgstr "Função"
+
+#: ../src/plot.c:156
+msgid "Add new function to the graph"
+msgstr ""
+
+#: ../src/plot.c:180
+msgid "_Preferences..."
+msgstr "_Preferências..."
+
+#: ../src/plot.c:182
+msgid "Show crosshairs"
+msgstr ""
+
+#: ../src/plot.c:183
+msgid "_Zoom"
+msgstr "Aproximação (_Zoom)"
+
+#: ../src/plot.c:190
+msgid "Schematic Plot"
+msgstr ""
+
+#: ../src/plot.c:196
+msgid "_File"
+msgstr "_Arquivo"
+
+#: ../src/plot.c:197
+msgid "_Plot"
+msgstr "_Plotar"
+
+#. Simulation failed?
+#: ../src/plot.c:330
+msgid "The simulation produced no data!!\n"
+msgstr ""
+
+#: ../src/plot.c:340 ../src/plot.c:574
+#, c-format
+msgid "Plot - %s"
+msgstr "Plotar - %s"
+
+#: ../src/plot.c:349
+msgid "Nodes"
+msgstr ""
+
+#: ../src/plot.c:352 ../src/plot.c:636
+#, fuzzy
+msgid "Functions"
+msgstr "Função de transferência"
+
+#: ../src/plot.c:424
+msgid "Oregano - Plot"
+msgstr "Oregano - Plotar"
+
+#: ../src/plot.c:436 ../src/plot.c:443
+msgid "Could not create plot window."
+msgstr "Não foi possível criar janela de plotagem."
+
+#: ../src/plot.c:659
+msgid "TRANSFER"
+msgstr ""
+
+#: ../src/plot.c:691 ../src/plot.c:698
+#, fuzzy
+msgid "Could not create plot export window."
+msgstr "Não foi possível criar janela de plotagem."
+
+#. if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (export_png)))
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PNG;
+#. else
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PS;
+#: ../src/plot.c:719
+#, fuzzy
+msgid "Save PNG"
+msgstr "Salvar PNG"
+
+#: ../src/part-browser.c:135 ../src/part-browser.c:614
+msgid ""
+"Gtk version 2.2 does not support GtkTreeModelFilter...\n"
+"Filtering disable!"
+msgstr ""
+
+#: ../src/part-browser.c:187 ../src/part-browser.c:401
+msgid "Unable to load required part"
+msgstr ""
+
+#: ../src/part-browser.c:499 ../src/part-browser.c:507
+#, fuzzy
+msgid "Could not create part browser"
+msgstr "Não foi possível criar o navegador de partes."
+
+#: ../src/oregano-config.c:123
+#, c-format
+msgid "Loading %s ..."
+msgstr ""
+
+#: ../src/oregano-config.c:164
+#, fuzzy, c-format
+msgid "Could not read the parts library: %s "
+msgstr "Não foi possível ler a biblioteca de partes: %s"
+
+#: ../src/oregano-config.c:166
+#, fuzzy
+msgid ""
+"The file is probably corrupt. Please reinstall the parts\n"
+"library or Oregano and try again."
+msgstr ""
+"O arquivo provavelmente está corrompido. Por favor re-instale\n"
+"a biblioteca de partes ou o Oregano e tente novamente."
+
+#: ../src/engines/netlist.c:436
+msgid "No ground node. Aborting.\n"
+msgstr "Sem nó terra. Abortando.\n"
+
+#: ../src/engines/netlist.c:441
+#, fuzzy
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have a ground node and try again."
+msgstr ""
+"Possivelmente por causa de uma falha no esquema de circuito. Por favor \n"
+"verifique que você tem um nó terra e tente novamente."
+
+#: ../src/engines/netlist.c:450
+msgid "No test clamps found. Aborting.\n"
+msgstr ""
+
+#: ../src/engines/netlist.c:455
+#, fuzzy
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have one o more test clamps and try again."
+msgstr "Possivelmente por causa de uma falha no esquema de circuito.\n"
+
+#: ../src/engines/gnucap.c:299
+msgid "### Too few or none analysis found ###\n"
+msgstr ""
+
+#: ../src/engines/gnucap.c:366
+msgid "Unable to execute GnuCap."
+msgstr ""
+
+#: ../src/engines/gnucap.c:383
+msgid "None"
+msgstr ""
+
+#: ../src/engines/gnucap.c:586
+msgid "time"
+msgstr ""
+
+#: ../src/engines/gnucap.c:591 ../src/engines/gnucap.c:601
+#, fuzzy
+msgid "voltage"
+msgstr "Rotacionar"
+
+#: ../src/engines/gnucap.c:596
+#, fuzzy
+msgid "frequency"
+msgstr "Frequência"
+
+#: ../src/engines/gnucap.c:645
+#, fuzzy
+msgid "Unknown analysis"
+msgstr "Análise desconhecida"
+
+#: ../src/engines/gnucap.c:693
+#, fuzzy
+msgid "abort"
+msgstr "partida"
+
+#: ../src/engines/engine.c:32
+msgid "Operating Point"
+msgstr "Ponto de operação"
+
+#: ../src/engines/engine.c:33
+msgid "Transient Analysis"
+msgstr "Análise transiente"
+
+#: ../src/engines/engine.c:34
+msgid "DC transfer characteristic"
+msgstr "Características de transferência DC (corrente contínua)"
+
+#: ../src/engines/engine.c:35
+msgid "AC Analysis"
+msgstr "Análise AC (corrente alternada)"
+
+#: ../src/engines/engine.c:36
+msgid "Transfer Function"
+msgstr "Função de transferência"
+
+#: ../src/engines/engine.c:37
+msgid "Distortion Analysis"
+msgstr "Análise de distorção"
+
+#: ../src/engines/engine.c:38
+msgid "Noise Analysis"
+msgstr "Análise de ruído"
+
+#: ../src/engines/engine.c:39
+msgid "Pole-Zero Analysis"
+msgstr "Análise pólo-zero"
+
+#: ../src/engines/engine.c:40
+msgid "Sensitivity Analysis"
+msgstr "Análise de sensitividade"
+
+#: ../src/engines/engine.c:41
+msgid "Unknown Analysis"
+msgstr "Análise desconhecida"
+
+#: ../src/netlist-editor.c:172
+#, fuzzy, c-format
+msgid "Netlist for %s"
+msgstr "Lista de rede (netlist) para %s"
+
+#: ../src/netlist-editor.c:173
+#, c-format
+msgid "Author : %s"
+msgstr ""
+
+#: ../src/netlist-editor.c:186
+msgid "Page %N of %Q"
+msgstr ""
+
+#: ../src/netlist-editor.c:238 ../src/netlist-editor.c:274
+#, c-format
+msgid "The file %s could not be saved"
+msgstr ""
+
+#: ../src/netlist-editor.c:239 ../src/netlist-editor.c:275
+#, fuzzy
+msgid "Could not save temporary netlist file"
+msgstr "Não foi possível salvar arquivo"
+
+#: ../src/netlist-editor.c:311
+#, fuzzy
+msgid "Could not create the netlist dialog"
+msgstr "Não foi possível criar a janela"
+
+#. gettext support
+#: ../src/netlist-editor.c:390
+#, c-format
+msgid "The file %s could not be found."
+msgstr ""
+
+#: ../src/netlist-editor.c:391
+#, fuzzy
+msgid "Could not find the required file"
+msgstr "Não foi possível encontrar o arquivo requisitado"
+
+#: ../src/main.c:107
+msgid "Enables some debugging functions"
+msgstr "Habilita algumas funções de debug"
+
+#: ../src/main.c:107
+msgid "LEVEL"
+msgstr "Nível"
+
+#: ../src/main.c:132
+msgid ""
+"You seem to be running Oregano without\n"
+"having it installed properly on your system.\n"
+"\n"
+"Please install Oregano and try again."
+msgstr ""
+"Você parece estar rodando oregano sem \n"
+"tê-lo instalado adequadamente em seu sistema.\n"
+"\n"
+"Por favor instale Oregano e tente novamente."
+
+#: ../src/main.c:155
+msgid ""
+"Could not find a parts library.\n"
+"\n"
+"This is probably due to a faulty installation\n"
+"of Oregano. Please check your installation."
+msgstr ""
+"Não foi possível encontrar uma biblioteca de partes.\n"
+"\n"
+"Esse erro ocorre provevelmente por causa\n"
+" de uma instalação mal feita do Oregano. \n"
+"Por favor verifique sua instalação."
+
+#: ../src/main.c:212
+msgid "Welcome to Oregano"
+msgstr ""
+
+#: ../src/load-schematic.c:261
+msgid "Bad file format."
+msgstr ""
+
+#: ../src/load-schematic.c:271
+msgid "Unknown parser error."
+msgstr ""
+
+#: ../src/load-library.c:149
+#, c-format
+msgid "Could not find the requested symbol: %s\n"
+msgstr "Não foi possível encontrar o símbolo solicitado: %s\n"
+
+#: ../src/load-library.c:165
+#, c-format
+msgid "Could not find the requested part: %s\n"
+msgstr "Não foi possível encontrar a parte solicitada: %s\n"
+
+#: ../src/file.c:50 ../src/file.c:90
+#, fuzzy
+msgid "Oregano Files"
+msgstr "Arquivos de Oregano"
+
+#: ../src/file.c:52 ../src/file.c:92
+msgid "All Files"
+msgstr "Todos os arquivos"
+
+#: ../src/file.c:55
+msgid "Open File"
+msgstr "Abrir arquivo"
+
+#: ../src/file.c:95
+msgid "Save File"
+msgstr "Salvar"
+
+#: ../src/file.c:145
+msgid "Netlist File"
+msgstr "Nome de arquivo para lista de rede (netlist)"
+
+#: ../src/file.c:221
+msgid "Open file"
+msgstr "Abrir arquivo"
+
+#: ../src/file.c:271
+msgid "Save schematic as"
+msgstr "Salvar esquema como"
+
+#: ../src/file.c:336
+msgid "Netlist filename"
+msgstr "Nome de arquivo para lista de rede (netlist)"
+
+#: ../src/dialogs.c:126
+#, fuzzy
+msgid ""
+"(c) 2003-2006 LUGFi\n"
+"(c) 1999-2001 Richard Hult"
+msgstr ""
+"(c) 2003-2005 LUGFi\n"
+"(c) 1999-2001, Richard Hult"
+
+#: ../src/dialogs.c:141
+msgid "Schematic capture and circuit simulation.\n"
+msgstr "Captura de esquemas e simulação de circuitos. \n"
+
+#: ../src/model/schematic.c:584
+#, c-format
+msgid "File %s does not exists."
+msgstr ""
+
+#: ../src/model/schematic.c:592 ../src/model/schematic.c:630
+#, c-format
+msgid "Unknown file format for %s."
+msgstr ""
+
+#: ../src/model/schematic.c:611
+msgid "Load fails!."
+msgstr ""
+
+#: ../src/plot-add-function.c:48
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this"
+msgstr ""
+
+#: ../src/plot-add-function.c:50 ../src/plot-add-function.c:57
+#, fuzzy
+msgid "Could not create plot window"
+msgstr "Não foi possível criar janela de plotagem."
+
+#~ msgid "_View netlist"
+#~ msgstr "_Lista de rede (netlist)"
+
+#, fuzzy
+#~ msgid "View a netlist"
+#~ msgstr "Mostra uma lista de rede (netlist)"
+
+#~ msgid "View plot"
+#~ msgstr "Visualizar plotagem"
+
+#~ msgid "View plot "
+#~ msgstr "Visualiza plotagem"
+
+#, fuzzy
+#~ msgid "Problem in transient analysis"
+#~ msgstr "Análise transiente"
+
+#~ msgid "Start time must be less than stop time."
+#~ msgstr "Tempo de partida precisa ser menor que o tempo de parada."
+
+#~ msgid "Could not find the simulation executable"
+#~ msgstr "Não foi possível encontrar o programa de simulação"
+
+#~ msgid "This probably means that you have not configured Oregano properly."
+#~ msgstr ""
+#~ "Isso provavelmente significa que você não configurou\n"
+#~ " Oregano adequadamente."
+
+#, fuzzy
+#~ msgid "You have not entered a simulation executable"
+#~ msgstr "Você não especificou um programa de simulação"
+
+#~ msgid ""
+#~ "Please choose Settings and specify which program to use for simulations."
+#~ msgstr ""
+#~ "Por favor escolha configurações e escolha qual programa deverá ser "
+#~ "usado para simulações."
+
+#~ msgid "Name: "
+#~ msgstr "Nome:"
+
+#~ msgid "Value: "
+#~ msgstr "Valor:"
+
+#~ msgid "GnuCap"
+#~ msgstr "GnuCap"
+
+#~ msgid "NgSpice"
+#~ msgstr "NgSpice"
+
+#, fuzzy
+#~ msgid "<b>Format</b>"
+#~ msgstr "<b>Formato</b>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the required file:\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "Não foi possível encontrar o arquivo requisitado:\n"
+#~ "%s"
+
+#~ msgid " "
+#~ msgstr "."
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the required file:</"
+#~ "span>\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Não foi possível encontrar o arquivo requisitado:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not load file.</span>\n"
+#~ "\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Não foi possível encontrar o arquivo requisitado:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create a netlist</span>\n"
+#~ "\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Não foi possível encontrar o arquivo requisitado:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "<span weight=\"bold\">Could not create log window.</span>"
+#~ msgstr "Não foi possível criar uma janela de log."
+
+#, fuzzy
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create settings dialog.</"
+#~ "span>"
+#~ msgstr "Não foi possível criar janela de diálogo de configurações"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span size=\"x-large\" weigth=\"bold\">Transient analysis</span>\n"
+#~ "\n"
+#~ "Start time must be less than stop time."
+#~ msgstr ""
+#~ "Análise transiente\n"
+#~ "\n"
+#~ "Tempo de partida precisa ser menor que o tempo de parada."
+
+#, fuzzy
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create simulation "
+#~ "settings dialog.</span>"
+#~ msgstr ""
+#~ "Não foi possível criar janela de diálogo de ajustes de simulação"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create simulation dialog."
+#~ "</span>"
+#~ msgstr "Não foi possível criar janela de diálogo de simulação."
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\">Could not find the required file:\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "Não foi possível encontrar o arquivo requisitado:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\">Could not create textbox properties dialog.</span>"
+#~ msgstr ""
+#~ "Não foi possível criar a janela de diálogo de propriedades de caixa de "
+#~ "texto."
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not save temporary netlist "
+#~ "file:\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "Não foi possível encontrar o arquivo requisitado:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "window"
+#~ msgstr "janela2"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create simulation "
+#~ "settings dialog.</sapn>"
+#~ msgstr ""
+#~ "Não foi possível criar janela de diálogo de ajustes de simulação"
+
+#, fuzzy
+#~ msgid "(0, 0)"
+#~ msgstr "(0.0, 0.0)"
+
+#~ msgid "s"
+#~ msgstr "s"
+
+#~ msgid "Hz"
+#~ msgstr "Hz"
+
+#~ msgid "A"
+#~ msgstr "A"
+
+#, fuzzy
+#~ msgid "Oregano"
+#~ msgstr "Oregano - Plotar"
+
+#, fuzzy
+#~ msgid "200%"
+#~ msgstr "100%"
+
+#, fuzzy
+#~ msgid "Set the zoom factor to 200%"
+#~ msgstr "Ajusta o fator de aproximação (zoom) para 100%"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create a netlist</span>\n"
+#~ "\n"
+#~ "Possibly dueto a faulty circuit schematic. Please check that\n"
+#~ "you have one o more test clamps and try again."
+#~ msgstr ""
+#~ "Não foi possível criar uma lista de rede (netlist)\n"
+#~ "Possivelmente por causa de uma falha no esquema de circuito. Por favor \n"
+#~ "verifique que você tem um nó terra e tente novamente."
+
+#, fuzzy
+#~ msgid "Library: "
+#~ msgstr "Biblioteca:"
+
+#~ msgid "Preview"
+#~ msgstr "Pré-visualizar"
+
+#~ msgid "part_browser"
+#~ msgstr "navega_dor de partes"
+
+#, fuzzy
+#~ msgid "label"
+#~ msgstr "legenda2"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the required file:\n"
+#~ "</span%s\n"
+#~ ">"
+#~ msgstr ""
+#~ "Não foi possível encontrar o arquivo requisitado:\n"
+#~ "%s"
+
+#~ msgid "-adobe-helvetica-bold-r-normal-*-12-*-*-*-*-*-*-*"
+#~ msgstr "-adobe-helvetica-negrito-r-normal-*-12-*-*-*-*-*-*-*"
+
+#~ msgid "-adobe-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*"
+#~ msgstr "-adobe-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*"
+
+#~ msgid "-adobe-helvetica-medium-r-normal-*-8-*-*-*-*-*-*-*"
+#~ msgstr "-adobe-helvetica-medium-r-normal-*-8-*-*-*-*-*-*-*"
+
+#~ msgid "_Close"
+#~ msgstr "_Fechar"
+
+#~ msgid "Print Schematic"
+#~ msgstr "Imprimir esquema"
+
+#~ msgid "Print preview"
+#~ msgstr "Visualizar impressão"
+
+#~ msgid "Scaling"
+#~ msgstr "Escalonamento"
+
+#~ msgid "Paper Size"
+#~ msgstr "Tamanho do papel"
+
+#~ msgid "Warning"
+#~ msgstr "Aviso"
+
+#~ msgid "Schematic %s has unsaved changes, save them?"
+#~ msgstr "Esquema %s tem mudanças não salvas, salvá-las?"
+
+#~ msgid "Schematic has unsaved changes, save them?"
+#~ msgstr "Esquema tem mudanças não salvas. Salvá-las?"
+
+#~ msgid "View the latest plot"
+#~ msgstr "Visualizar a última plotagem"
+
+#~ msgid "Undo"
+#~ msgstr "Desfazer"
+
+#~ msgid "Voltmeters"
+#~ msgstr "Voltímetros"
+
+#~ msgid "Enable/disable voltmeters"
+#~ msgstr "Habilitar/desabilitar voltímetros"
+
+#~ msgid "label10"
+#~ msgstr "legenda10"
+
+#~ msgid "Default"
+#~ msgstr "Padrão"
+
+#~ msgid "Spice Path: "
+#~ msgstr "Caminho do spice:"
+
+#~ msgid "Data"
+#~ msgstr "Dados"
+
+#~ msgid "Library Path: "
+#~ msgstr "Caminho da biblioteca:"
+
+#~ msgid "Model Path: "
+#~ msgstr "Caminho dos modelos:"
+
+#~ msgid "Start time: "
+#~ msgstr "Tempo de partida:"
+
+#~ msgid "Stop time: "
+#~ msgstr "Tempo de parada:"
+
+#~ msgid "Step size: "
+#~ msgstr "Tamanho do passo:"
+
+#~ msgid "Enable"
+#~ msgstr "Habilitar"
+
+#~ msgid "Use"
+#~ msgstr "Usar"
+
+#~ msgid "enable"
+#~ msgstr "Habilitar"
+
+#~ msgid "stop"
+#~ msgstr "parada"
+
+#~ msgid ""
+#~ "DEC\n"
+#~ "OCT\n"
+#~ "LIN\n"
+#~ msgstr ""
+#~ "DEC\n"
+#~ "OCT\n"
+#~ "LIN\n"
+
+#~ msgid "AC"
+#~ msgstr "AC (corrente alternada)"
+
+#~ msgid "New Value"
+#~ msgstr "Novo valor"
+
+#~ msgid "Accept"
+#~ msgstr "Aceitar"
+
+#~ msgid "Edit text label"
+#~ msgstr "Editar legenda de texto"
diff --git a/po/ro.po b/po/ro.po
new file mode 100644
index 0000000..f1a6e0b
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,1596 @@
+# Oregano
+# Copyright (C) 2000 Free Software Foundation, Inc.
+# Marius Andreiana <mandreiana@yahoo.com>, 2000.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Oregano 0.18\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-11 02:36-0300\n"
+"PO-Revision-Date: 2000-11-28 20:00+0200\n"
+"Last-Translator: Marius Andreiana <mandreiana@yahoo.com>\n"
+"Language-Team: Românã <ro@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:1
+msgid "<b>AC Analysis Options</b>"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:2
+#, fuzzy
+msgid "<b>Type</b>"
+msgstr "Tranzitoriu"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:3
+#, fuzzy
+msgid "Current"
+msgstr "Taie"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:4
+#, fuzzy
+msgid "Edit Clamp properties"
+msgstr "Editeazã proprietãþi parte"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:5
+msgid "Imaginary part"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:6
+msgid "Magnitude"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:7
+#, fuzzy
+msgid "Phase"
+msgstr "Lipeºte"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:8
+msgid "Real part"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:9
+msgid "Use decibel scale"
+msgstr ""
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:10
+msgid "Voltage"
+msgstr ""
+
+#: ../data/dialogs/log-window.glade2.h:1
+msgid "Clear"
+msgstr "ªterge"
+
+#: ../data/dialogs/log-window.glade2.h:2
+msgid "Oregano Log Window"
+msgstr "Fereastrã log Oregano"
+
+#: ../data/dialogs/page-properties.glade2.h:1
+#, fuzzy
+msgid "<b>Alignment</b>"
+msgstr "Tranzitoriu"
+
+#: ../data/dialogs/page-properties.glade2.h:2
+#, fuzzy
+msgid "Center Horizontally"
+msgstr "ÃŽntoarce orizontal"
+
+#: ../data/dialogs/page-properties.glade2.h:3
+#, fuzzy
+msgid "Center Vertically"
+msgstr "ÃŽntoarce vertical"
+
+#: ../data/dialogs/page-properties.glade2.h:4
+msgid "Fit to page"
+msgstr ""
+
+#: ../data/dialogs/page-properties.glade2.h:5
+#, fuzzy
+msgid "Print Properties"
+msgstr "Proprietãþi"
+
+#: ../data/dialogs/part-browser.glade2.h:1
+#, fuzzy
+msgid "<b>Preview</b>"
+msgstr "Tranzitoriu"
+
+#: ../data/dialogs/part-browser.glade2.h:2
+#, fuzzy
+msgid "Library:"
+msgstr "Bibliotecã:"
+
+#: ../data/dialogs/part-browser.glade2.h:3 ../src/schematic-view-ui.h:360
+msgid "Parts"
+msgstr "Pãrþi"
+
+#: ../data/dialogs/part-browser.glade2.h:4
+msgid "Place"
+msgstr "Plaseazã"
+
+#: ../data/dialogs/part-browser.glade2.h:5
+msgid "Press this button to place the selected part"
+msgstr "Apãsaþi acest buton pentru a plasa partea selectatã"
+
+#: ../data/dialogs/part-browser.glade2.h:6
+msgid "Search:"
+msgstr ""
+
+#: ../data/dialogs/part-browser.glade2.h:7
+msgid "Select which library to use"
+msgstr "Selectaþi care bibliotecã sã fie folositã"
+
+#: ../data/dialogs/part-properties-dialog.glade2.h:1
+#, fuzzy
+msgid "Part Properties"
+msgstr "Editeazã proprietãþi parte"
+
+#: ../data/dialogs/plot-window.glade2.h:1
+#, fuzzy
+msgid "<b>Plot</b>"
+msgstr "Format fiºier"
+
+#: ../data/dialogs/plot-window.glade2.h:2
+#, fuzzy
+msgid "<b>Variables</b>"
+msgstr "Variabile"
+
+#: ../data/dialogs/plot-window.glade2.h:3
+msgid "Plot"
+msgstr "Punct"
+
+#: ../data/dialogs/plot-window.glade2.h:4
+msgid "Region"
+msgstr ""
+
+#: ../data/dialogs/plot-window.glade2.h:5
+msgid "Shift"
+msgstr ""
+
+#: ../data/dialogs/properties.glade2.h:1
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:1
+msgid " "
+msgstr ""
+
+#: ../data/dialogs/properties.glade2.h:2
+#, fuzzy
+msgid "<b>Comments</b>"
+msgstr "Tranzitoriu"
+
+#: ../data/dialogs/properties.glade2.h:3
+msgid "Author:"
+msgstr ""
+
+#: ../data/dialogs/properties.glade2.h:4 ../src/sheet/part-item.c:147
+msgid "Properties"
+msgstr "Proprietãþi"
+
+#: ../data/dialogs/properties.glade2.h:5
+#, fuzzy
+msgid "Title:"
+msgstr "_Fiºier"
+
+#: ../data/dialogs/settings.glade2.h:1
+msgid "\n"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:3
+#, fuzzy
+msgid "<b>Data Paths</b>"
+msgstr "Executabile"
+
+#: ../data/dialogs/settings.glade2.h:4
+msgid "<b>Engine</b>"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:5
+#, fuzzy
+msgid "<b>Executable Path</b>"
+msgstr "Executabile"
+
+#: ../data/dialogs/settings.glade2.h:6
+#, fuzzy
+msgid "<b>File Format</b>"
+msgstr "Format fiºier"
+
+#: ../data/dialogs/settings.glade2.h:7
+#, fuzzy
+msgid "<b>User Interface</b>"
+msgstr "Interfaþã utilizator"
+
+#: ../data/dialogs/settings.glade2.h:8
+#, fuzzy
+msgid "Automatically show log windows after simulation"
+msgstr "Automat aratã fereastra log dupã simulare"
+
+#: ../data/dialogs/settings.glade2.h:9
+msgid "Compress saved files"
+msgstr "Compreseazã fiºierele salvate"
+
+#: ../data/dialogs/settings.glade2.h:10
+#, fuzzy
+msgid "Grid size[px] "
+msgstr "Mãrime grãtar [px]:"
+
+#: ../data/dialogs/settings.glade2.h:11
+#, fuzzy
+msgid "Library"
+msgstr "Bibliotecã:"
+
+#: ../data/dialogs/settings.glade2.h:12
+msgid "Model"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:13
+msgid "Paths"
+msgstr "Cãi"
+
+#: ../data/dialogs/settings.glade2.h:14
+#, fuzzy
+msgid "Preferences"
+msgstr "_Preferinþe..."
+
+#: ../data/dialogs/settings.glade2.h:15
+#, fuzzy
+msgid "Realtime update of selection (slow)"
+msgstr "Reactualizare selecþie în timp real (încet)"
+
+#: ../data/dialogs/settings.glade2.h:16
+msgid "Remove"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:17
+#, fuzzy
+msgid "Select A File"
+msgstr "Selecte_azã tot"
+
+#: ../data/dialogs/settings.glade2.h:18
+msgid "Show the splash screen at application startup"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:19
+msgid "TODO : Add FINDPATH for Engines"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:20
+msgid "User Interface"
+msgstr "Interfaþã utilizator"
+
+#: ../data/dialogs/sim-settings.glade2.h:1
+msgid "<b>AC</b>"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:2
+msgid "<b>DC Sweep</b>"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:3
+msgid "<b>Fourier</b>"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:4
+#, fuzzy
+msgid "<b>Transient</b>"
+msgstr "Tranzitoriu"
+
+#: ../data/dialogs/sim-settings.glade2.h:5
+msgid "Add new options"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:6
+msgid "Add to list"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:7
+msgid "Analysis Options"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:8
+msgid "Analysis Parameters"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:9
+msgid "DEC"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:10
+msgid "Frequency"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:11
+msgid "LIN"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:12
+msgid "List of outputs"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:13
+msgid "OCT"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:14
+#, fuzzy
+msgid "Points"
+msgstr "Dialog Imprimantã"
+
+#: ../data/dialogs/sim-settings.glade2.h:15
+#, fuzzy
+msgid "Simulation Settings"
+msgstr "Setãri simulaþie"
+
+#: ../data/dialogs/sim-settings.glade2.h:16
+msgid "Source"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:17
+#, fuzzy
+msgid "Start"
+msgstr "Pãrþi"
+
+#: ../data/dialogs/sim-settings.glade2.h:18
+#, fuzzy
+msgid "Step"
+msgstr "Lipeºte"
+
+#: ../data/dialogs/sim-settings.glade2.h:19
+msgid "Stop"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:20
+msgid "Type"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:21
+msgid "Use Initial Conditions"
+msgstr ""
+
+#: ../data/dialogs/simulation.glade2.h:1
+#, fuzzy
+msgid "Progress: None"
+msgstr "Progres:"
+
+#: ../data/dialogs/simulation.glade2.h:2
+msgid "Simulation"
+msgstr "Simulare"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:2
+#, fuzzy
+msgid "<b>Text</b>"
+msgstr "Tranzitoriu"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:3
+#, fuzzy
+msgid "Text Properties"
+msgstr "Proprietãþi"
+
+#: ../data/dialogs/view-netlist.glade2.h:1
+#, fuzzy
+msgid "Netlist View"
+msgstr "Nume fiºier netlist"
+
+#: ../data/dialogs/view-netlist.glade2.h:2 ../src/schematic-view-ui.h:161
+msgid "_Simulate"
+msgstr "_Simuleazã"
+
+#: ../src/sheet/part-item.c:147
+msgid "Edit the part's properties"
+msgstr "Editeazã proprietãþile pãrþii"
+
+#: ../src/sheet/part-item.c:616 ../src/sheet/part-item.c:765
+#: ../src/sheet/textbox-item.c:679 ../src/sim-settings.c:775
+#: ../src/settings.c:139 ../src/schematic-view.c:251
+#: ../src/schematic-view.c:317 ../src/schematic-view.c:2431 ../src/plot.c:434
+#: ../src/plot.c:689 ../src/part-browser.c:496 ../src/netlist-editor.c:309
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this."
+msgstr ""
+
+#: ../src/sheet/part-item.c:618 ../src/sheet/part-item.c:626
+#: ../src/sheet/part-item.c:767 ../src/sheet/part-item.c:775
+msgid "Could not create part properties dialog."
+msgstr "Nu s-a putut crea dialogul proprietãþi parte."
+
+#: ../src/sheet/sheet-item.c:307 ../src/schematic-view-ui.h:288
+msgid "Copy"
+msgstr "Copiazã"
+
+#: ../src/sheet/sheet-item.c:307
+msgid "Copy the object to the clipboard"
+msgstr "Copiazã obiectul în clipboard"
+
+#: ../src/sheet/sheet-item.c:310 ../src/schematic-view-ui.h:285
+msgid "Cut"
+msgstr "Taie"
+
+#: ../src/sheet/sheet-item.c:310
+msgid "Cut the object to the clipboard"
+msgstr "Taie obiectul în clipboard"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete"
+msgstr "ªterge"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete the object"
+msgstr "ªterge obiectul"
+
+#: ../src/sheet/sheet-item.c:319
+msgid "Rotate"
+msgstr "Roteºte"
+
+#: ../src/sheet/sheet-item.c:320
+msgid "Rotate the selected objects 90 degrees clockwise"
+msgstr "Roteºte obiectul selectat 90 grade în sensul acelor de ceasornic"
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit..."
+msgstr "Editeazã..."
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit the text"
+msgstr "Editezã textul"
+
+#: ../src/sheet/textbox-item.c:596
+msgid "Label"
+msgstr "Etichetã"
+
+#: ../src/sheet/textbox-item.c:681 ../src/sheet/textbox-item.c:690
+#, fuzzy
+msgid "Could not create textbox properties dialog"
+msgstr "Nu s-a putut crea dialogul proprietãþi parte."
+
+#: ../src/simulation.c:102 ../src/simulation.c:109 ../src/simulation.c:115
+#, fuzzy
+msgid "Could not create simulation dialog"
+msgstr "Nu s-a putut crea dialogul de simulare."
+
+#: ../src/simulation.c:150
+#, fuzzy, c-format
+msgid "Progress: <b>%s</b>"
+msgstr "Progres:"
+
+#: ../src/simulation.c:201
+#, fuzzy
+msgid ""
+"<span weight=\"bold\" size=\"large\">The simulation was aborted due to an "
+"error.</span>\n"
+"\n"
+"Would you like to view the error log?"
+msgstr ""
+"Simularea a fost întreruptã datoritã unei erori.\n"
+"Doriþi sã vizualizaþi logul de erori?"
+
+#: ../src/simulation.c:211
+#, fuzzy
+msgid "The simulation was aborted due to an error"
+msgstr "Simularea a fost întreruptã datoritã unei erori."
+
+#: ../src/sim-settings.c:229
+msgid "Add new option"
+msgstr ""
+
+#: ../src/sim-settings.c:777 ../src/sim-settings.c:784
+#: ../src/sim-settings.c:790
+#, fuzzy
+msgid "Could not create simulation settings dialog"
+msgstr "Nu s-a putut crea dialogul de simulare."
+
+#: ../src/sim-settings.c:814
+#, fuzzy
+msgid "Option"
+msgstr "Deschide"
+
+#: ../src/sim-settings.c:816
+msgid "Value"
+msgstr "Valoare"
+
+#: ../src/settings.c:141 ../src/settings.c:148 ../src/settings.c:154
+#, fuzzy
+msgid "Could not create settings dialog"
+msgstr "Nu s-a putut crea dialogul de simulare."
+
+#: ../src/settings.c:215
+msgid "Engine executable not found"
+msgstr ""
+
+#: ../src/settings.c:216
+msgid "The engine is unable to locate the external program."
+msgstr ""
+
+#: ../src/schematic-view.c:254
+#, fuzzy
+msgid "Could not create properties dialog"
+msgstr "Nu s-a putut crea dialogul proprietãþi parte."
+
+#: ../src/schematic-view.c:320
+#, fuzzy
+msgid "Could not create the page properties dialog"
+msgstr "Nu s-a putut crea dialogul proprietãþi parte."
+
+#: ../src/schematic-view.c:383
+#, fuzzy
+msgid "Could not load file"
+msgstr "Nu s-a putut salva fiºierul Schema %s\n"
+
+#: ../src/schematic-view.c:410 ../src/schematic-view.c:1304
+#: ../src/schematic-view.c:1312
+msgid "Untitled.oregano"
+msgstr "Untitled.oregano"
+
+#: ../src/schematic-view.c:415
+#, fuzzy
+msgid "Could not save schematic file"
+msgstr "Nu s-a putut salva fiºierul Schema %s\n"
+
+#: ../src/schematic-view.c:765 ../src/netlist-editor.c:225
+#: ../src/netlist-editor.c:436
+#, fuzzy
+msgid "Could not create a netlist"
+msgstr "Nu s-a putut crea browserul de pãrþi."
+
+#: ../src/schematic-view.c:768 ../src/netlist-editor.c:229
+#: ../src/netlist-editor.c:439
+msgid "An unexpected error has occurred"
+msgstr ""
+
+#: ../src/schematic-view.c:1313
+msgid "Untitled.netlist"
+msgstr "Untitled.netlist"
+
+#: ../src/schematic-view.c:1504
+#, fuzzy, c-format
+msgid ""
+"<span weight=\"bold\" size=\"large\">Save changes to schematic %s before "
+"closing?</span>\n"
+"\n"
+"If you don't save, all changes since you last saved will be permanently lost."
+msgstr ""
+"Simularea a fost întreruptã datoritã unei erori.\n"
+"Doriþi sã vizualizaþi logul de erori?"
+
+#: ../src/schematic-view.c:1516
+msgid "Close _without Saving"
+msgstr ""
+
+#: ../src/schematic-view.c:2434 ../src/schematic-view.c:2445
+#, fuzzy
+msgid "Could not create the log window"
+msgstr "Nu s-a putu crea fereastra de puncte."
+
+#: ../src/schematic-view-ui.h:38
+msgid "_New"
+msgstr "_Nou"
+
+#: ../src/schematic-view-ui.h:38 ../src/schematic-view-ui.h:264
+msgid "Create a new schematic"
+msgstr "Creazã o nouã schemã"
+
+#: ../src/schematic-view-ui.h:47
+#, fuzzy
+msgid "Page Properties"
+msgstr "Editeazã proprietãþi parte"
+
+#: ../src/schematic-view-ui.h:48
+#, fuzzy
+msgid "Set print properties"
+msgstr "Editeazã proprietãþi parte"
+
+#: ../src/schematic-view-ui.h:56 ../src/print.c:367 ../src/plot.c:150
+#: ../src/netlist-editor.c:193
+#, fuzzy
+msgid "Print Preview"
+msgstr "Previzualizare"
+
+#: ../src/schematic-view-ui.h:57
+#, fuzzy
+msgid "Preview the schematic before printing"
+msgstr "Modificã proprietãþile schemei"
+
+#: ../src/schematic-view-ui.h:65
+msgid "Schematic _Properties..."
+msgstr "_Proprietãþile schemei..."
+
+#: ../src/schematic-view-ui.h:66
+msgid "Modify the schematic's properties"
+msgstr "Modificã proprietãþile schemei"
+
+#: ../src/schematic-view-ui.h:95
+msgid "_Delete"
+msgstr "ªterge"
+
+#: ../src/schematic-view-ui.h:96
+msgid "Delete the selection"
+msgstr "ªterge selecþia"
+
+#: ../src/schematic-view-ui.h:102
+msgid "_Rotate"
+msgstr "_Roteºte"
+
+#: ../src/schematic-view-ui.h:103
+msgid "Rotate the selection clockwise"
+msgstr "Roteºte selecþia în sensul acelor de ceas"
+
+#: ../src/schematic-view-ui.h:109
+#, fuzzy
+msgid "Flip _horizontally"
+msgstr "Întoarce selecþia orizontal"
+
+#: ../src/schematic-view-ui.h:110
+msgid "Flip the selection horizontally"
+msgstr "Întoarce selecþia orizontal"
+
+#: ../src/schematic-view-ui.h:116
+#, fuzzy
+msgid "Flip _vertically"
+msgstr "Întoarce selecþia vertical"
+
+#: ../src/schematic-view-ui.h:117
+msgid "Flip the selection vertically"
+msgstr "Întoarce selecþia vertical"
+
+#: ../src/schematic-view-ui.h:124
+#, fuzzy
+msgid "Select _all"
+msgstr "_Deselecteazã tot"
+
+#: ../src/schematic-view-ui.h:125
+msgid "Select all objects on the sheet"
+msgstr "Selecteazã toate obiectele din fereastrã"
+
+#: ../src/schematic-view-ui.h:131
+#, fuzzy
+msgid "Deselect a_ll"
+msgstr "_Deselecteazã tot"
+
+#: ../src/schematic-view-ui.h:132
+msgid "Deselect the selected objects"
+msgstr "Deselecteazã toate obiectele din fereastrã"
+
+#: ../src/schematic-view-ui.h:140
+#, fuzzy
+msgid "_Object Properties..."
+msgstr "_Proprietãþi obiect..."
+
+#: ../src/schematic-view-ui.h:141
+msgid "Modify the object's properties"
+msgstr "Modificã proprietãþile obiectului"
+
+#: ../src/schematic-view-ui.h:146
+msgid "Simulation S_ettings..."
+msgstr "Setãri simulaþie..."
+
+#: ../src/schematic-view-ui.h:147
+msgid "Edit the simulation settings"
+msgstr "Editeazã setãrile simulaþiei"
+
+#: ../src/schematic-view-ui.h:162
+msgid "Run a simulation"
+msgstr "Ruleazã o simulare"
+
+#: ../src/schematic-view-ui.h:169
+msgid "_Generate netlist"
+msgstr "_Genereazã netlist"
+
+#: ../src/schematic-view-ui.h:170
+msgid "Generate a netlist"
+msgstr "_Genereazã un netlist"
+
+#: ../src/schematic-view-ui.h:177
+msgid "50%"
+msgstr "50%"
+
+#: ../src/schematic-view-ui.h:178
+msgid "Set the zoom factor to 50%"
+msgstr "Seteazã factorul zoom la 50%"
+
+#: ../src/schematic-view-ui.h:179
+msgid "75%"
+msgstr "75%"
+
+#: ../src/schematic-view-ui.h:180
+msgid "Set the zoom factor to 75%"
+msgstr "Seteazã factorul zoom la 75%"
+
+#. GNOMEUIINFO_ITEM_NONE(N_("50%"),
+#. N_("Set the zoom factor to 50%"), plot_zoom_50_cmd),
+#. GNOMEUIINFO_ITEM_NONE(N_("75%"),
+#. N_("Set the zoom factor to 75%"), plot_zoom_75_cmd),
+#: ../src/schematic-view-ui.h:181 ../src/plot.c:167
+msgid "100%"
+msgstr "100%"
+
+#: ../src/schematic-view-ui.h:182 ../src/plot.c:168
+msgid "Set the zoom factor to 100%"
+msgstr "Seteazã factorul zoom la 100%"
+
+#: ../src/schematic-view-ui.h:184
+msgid "125%"
+msgstr "125%"
+
+#: ../src/schematic-view-ui.h:185
+msgid "Set the zoom factor to 125%"
+msgstr "Seteazã factorul zoom la 125%"
+
+#: ../src/schematic-view-ui.h:186
+msgid "150%"
+msgstr "150%"
+
+#: ../src/schematic-view-ui.h:187
+msgid "Set the zoom factor to 150%"
+msgstr "Seteazã factorul zoom la 150%"
+
+#: ../src/schematic-view-ui.h:196
+msgid "Zoom"
+msgstr "Zoom"
+
+#: ../src/schematic-view-ui.h:202
+msgid "_Log"
+msgstr "_Log"
+
+#: ../src/schematic-view-ui.h:202
+msgid "View the latest simulation log"
+msgstr "Vizualizeazã cel mai recent log de simulare"
+
+#: ../src/schematic-view-ui.h:205
+msgid "_Node labels"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:205
+#, fuzzy
+msgid "Show or hide node labels"
+msgstr "Aratã sau ascunde browserul de pãrþi"
+
+#: ../src/schematic-view-ui.h:207
+#, fuzzy
+msgid "N_etlist"
+msgstr "Nume fiºier netlist"
+
+#: ../src/schematic-view-ui.h:208
+#, fuzzy
+msgid "View the circuit netlist"
+msgstr "Vizualizeazã cel mai recent netlist simulat"
+
+#: ../src/schematic-view-ui.h:240
+msgid "_Contents"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:240
+msgid "Show program help"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:254
+msgid "_Tools"
+msgstr "_Unelte"
+
+#: ../src/schematic-view-ui.h:264
+msgid "New"
+msgstr "Nou"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open"
+msgstr "Deschide"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open an existing schematic"
+msgstr "Deschide o schema existentã"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save"
+msgstr "Salveazã"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save the schematic"
+msgstr "Salveazã schema"
+
+#: ../src/schematic-view-ui.h:285
+msgid "Cut the selection to the clipboard"
+msgstr "Taie selecþia în clipboard"
+
+#: ../src/schematic-view-ui.h:288
+msgid "Copy the selection to the clipboard"
+msgstr "Copiazã selecþia în clipboard"
+
+#: ../src/schematic-view-ui.h:291 ../src/schematic-view-ui.h:404
+msgid "Paste"
+msgstr "Lipeºte"
+
+#: ../src/schematic-view-ui.h:291
+#, fuzzy
+msgid "Paste the clipboard"
+msgstr "Lipeºte clipboardul"
+
+#: ../src/schematic-view-ui.h:301
+msgid "Arrow"
+msgstr "Sãgeatã"
+
+#: ../src/schematic-view-ui.h:302
+msgid "Select, move and modify objects"
+msgstr "Selecteazã, muta si modificã obiectele"
+
+#: ../src/schematic-view-ui.h:307
+msgid "Text"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:308
+msgid "Put text on the schematic"
+msgstr "Pune text pe schemã"
+
+#: ../src/schematic-view-ui.h:313
+msgid "Wires"
+msgstr "Fire"
+
+#: ../src/schematic-view-ui.h:314
+msgid "Draw wires"
+msgstr "Deseneazã fire"
+
+#: ../src/schematic-view-ui.h:330
+msgid "Add Voltage Clamp"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:331
+msgid "Add a Voltage test clamp"
+msgstr ""
+
+#: ../src/schematic-view-ui.h:336
+msgid "Simulate"
+msgstr "Simuleazã"
+
+#: ../src/schematic-view-ui.h:337
+msgid "Run a simulation for the current schematic"
+msgstr "Ruleazã o simulaþie pentru schema curentã"
+
+#: ../src/schematic-view-ui.h:342 ../src/schematic-view-ui.h:343
+msgid "Simulation settings"
+msgstr "Setãri simulaþie"
+
+#: ../src/schematic-view-ui.h:361
+msgid "Show or hide the part browser"
+msgstr "Aratã sau ascunde browserul de pãrþi"
+
+#: ../src/schematic-view-ui.h:366
+msgid "Grid"
+msgstr "Grãtar"
+
+#: ../src/schematic-view-ui.h:367
+msgid "Turn on/off the grid"
+msgstr "Activeazã/dezactiveazã grãtarul"
+
+#: ../src/schematic-view-ui.h:372 ../src/schematic-view-ui.h:373
+msgid "Zoom in"
+msgstr "Zoom înãuntru"
+
+#: ../src/schematic-view-ui.h:378 ../src/schematic-view-ui.h:379
+msgid "Zoom out"
+msgstr "Zoom în afarã"
+
+#: ../src/schematic-view-ui.h:405
+msgid "Paste the contents of the clipboard to the sheet"
+msgstr "Lipeºte conþinutul clipboardului pe fereastrã"
+
+#: ../src/print.c:297
+#, fuzzy
+msgid "Print"
+msgstr "Dialog Imprimantã"
+
+#: ../src/print.c:304
+#, fuzzy
+msgid "Pages"
+msgstr "Cãi"
+
+#: ../src/print.c:339
+msgid "Can't get paper info! .. getting default!"
+msgstr ""
+
+#: ../src/print.c:353
+#, fuzzy
+msgid "Could not create font for printing."
+msgstr "Nu s-a putut crea fontul."
+
+#: ../src/print.c:372
+msgid "Printing failed."
+msgstr ""
+
+#: ../src/plot.c:61 ../src/plot.c:62
+msgid "Sans 10"
+msgstr ""
+
+#: ../src/plot.c:63
+msgid "Sans 8"
+msgstr ""
+
+#: ../src/plot.c:151
+#, fuzzy
+msgid "Preview the plot before printing"
+msgstr "Modificã proprietãþile schemei"
+
+#: ../src/plot.c:153
+msgid "Export plot"
+msgstr ""
+
+#: ../src/plot.c:154
+msgid "Show the export menu"
+msgstr ""
+
+#: ../src/plot.c:155
+#, fuzzy
+msgid "Add Function"
+msgstr "Tranzitoriu"
+
+#: ../src/plot.c:156
+msgid "Add new function to the graph"
+msgstr ""
+
+#: ../src/plot.c:180
+msgid "_Preferences..."
+msgstr "_Preferinþe..."
+
+#: ../src/plot.c:182
+msgid "Show crosshairs"
+msgstr ""
+
+#: ../src/plot.c:183
+#, fuzzy
+msgid "_Zoom"
+msgstr "Zoom"
+
+#: ../src/plot.c:190
+#, fuzzy
+msgid "Schematic Plot"
+msgstr "_Proprietãþile schemei..."
+
+#: ../src/plot.c:196
+msgid "_File"
+msgstr "_Fiºier"
+
+#: ../src/plot.c:197
+msgid "_Plot"
+msgstr "_Punct"
+
+#. Simulation failed?
+#: ../src/plot.c:330
+msgid "The simulation produced no data!!\n"
+msgstr ""
+
+#: ../src/plot.c:340 ../src/plot.c:574
+#, fuzzy, c-format
+msgid "Plot - %s"
+msgstr "Punct"
+
+#: ../src/plot.c:349
+msgid "Nodes"
+msgstr ""
+
+#: ../src/plot.c:352 ../src/plot.c:636
+#, fuzzy
+msgid "Functions"
+msgstr "Tranzitoriu"
+
+#: ../src/plot.c:424
+#, fuzzy
+msgid "Oregano - Plot"
+msgstr "Fereastrã log Oregano"
+
+#: ../src/plot.c:436 ../src/plot.c:443
+msgid "Could not create plot window."
+msgstr "Nu s-a putu crea fereastra de puncte."
+
+#: ../src/plot.c:659
+msgid "TRANSFER"
+msgstr ""
+
+#: ../src/plot.c:691 ../src/plot.c:698
+#, fuzzy
+msgid "Could not create plot export window."
+msgstr "Nu s-a putu crea fereastra de puncte."
+
+#. if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (export_png)))
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PNG;
+#. else
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PS;
+#: ../src/plot.c:719
+#, fuzzy
+msgid "Save PNG"
+msgstr "Salveazã"
+
+#: ../src/part-browser.c:135 ../src/part-browser.c:614
+msgid ""
+"Gtk version 2.2 does not support GtkTreeModelFilter...\n"
+"Filtering disable!"
+msgstr ""
+
+#: ../src/part-browser.c:187 ../src/part-browser.c:401
+msgid "Unable to load required part"
+msgstr ""
+
+#: ../src/part-browser.c:499 ../src/part-browser.c:507
+#, fuzzy
+msgid "Could not create part browser"
+msgstr "Nu s-a putut crea browserul de pãrþi."
+
+#: ../src/oregano-config.c:123
+#, c-format
+msgid "Loading %s ..."
+msgstr ""
+
+#: ../src/oregano-config.c:164
+#, c-format
+msgid "Could not read the parts library: %s "
+msgstr "Nu s-a putu citi biblioteca de pãrþi: %s "
+
+#: ../src/oregano-config.c:166
+msgid ""
+"The file is probably corrupt. Please reinstall the parts\n"
+"library or Oregano and try again."
+msgstr ""
+"Aceast fiºier este probabil corupt. Vã rog sã\n"
+"reinstalaþi biblioteca de pãrþi sau Oregano ºi încercaþi din nou."
+
+#: ../src/engines/netlist.c:436
+msgid "No ground node. Aborting.\n"
+msgstr "Nu existã nod împãmântare. Renunþ.\n"
+
+#: ../src/engines/netlist.c:441
+#, fuzzy
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have a ground node and try again."
+msgstr ""
+"Posibil datoritã unei scheme greºite. Vã rog sã verificaþi dacã "
+"aveþi\n"
+"un nod de împãmântare ºi încercaþi din nou."
+
+#: ../src/engines/netlist.c:450
+msgid "No test clamps found. Aborting.\n"
+msgstr ""
+
+#: ../src/engines/netlist.c:455
+#, fuzzy
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have one o more test clamps and try again."
+msgstr "Posibil datoritã unei scheme greºite. "
+
+#: ../src/engines/gnucap.c:299
+msgid "### Too few or none analysis found ###\n"
+msgstr ""
+
+#: ../src/engines/gnucap.c:366
+msgid "Unable to execute GnuCap."
+msgstr ""
+
+#: ../src/engines/gnucap.c:383
+msgid "None"
+msgstr ""
+
+#: ../src/engines/gnucap.c:586
+msgid "time"
+msgstr ""
+
+#: ../src/engines/gnucap.c:591 ../src/engines/gnucap.c:601
+#, fuzzy
+msgid "voltage"
+msgstr "Roteºte"
+
+#: ../src/engines/gnucap.c:596
+msgid "frequency"
+msgstr ""
+
+#: ../src/engines/gnucap.c:645
+msgid "Unknown analysis"
+msgstr ""
+
+#: ../src/engines/gnucap.c:693
+#, fuzzy
+msgid "abort"
+msgstr "Pãrþi"
+
+#: ../src/engines/engine.c:32
+msgid "Operating Point"
+msgstr ""
+
+#: ../src/engines/engine.c:33
+#, fuzzy
+msgid "Transient Analysis"
+msgstr "Tranzitoriu"
+
+#: ../src/engines/engine.c:34
+msgid "DC transfer characteristic"
+msgstr ""
+
+#: ../src/engines/engine.c:35
+#, fuzzy
+msgid "AC Analysis"
+msgstr "Tranzitoriu"
+
+#: ../src/engines/engine.c:36
+#, fuzzy
+msgid "Transfer Function"
+msgstr "Tranzitoriu"
+
+#: ../src/engines/engine.c:37
+#, fuzzy
+msgid "Distortion Analysis"
+msgstr "Tranzitoriu"
+
+#: ../src/engines/engine.c:38
+#, fuzzy
+msgid "Noise Analysis"
+msgstr "Tranzitoriu"
+
+#: ../src/engines/engine.c:39
+msgid "Pole-Zero Analysis"
+msgstr ""
+
+#: ../src/engines/engine.c:40
+#, fuzzy
+msgid "Sensitivity Analysis"
+msgstr "Tranzitoriu"
+
+#: ../src/engines/engine.c:41
+#, fuzzy
+msgid "Unknown Analysis"
+msgstr "Tranzitoriu"
+
+#: ../src/netlist-editor.c:172
+#, fuzzy, c-format
+msgid "Netlist for %s"
+msgstr "Nume fiºier netlist"
+
+#: ../src/netlist-editor.c:173
+#, c-format
+msgid "Author : %s"
+msgstr ""
+
+#: ../src/netlist-editor.c:186
+msgid "Page %N of %Q"
+msgstr ""
+
+#: ../src/netlist-editor.c:238 ../src/netlist-editor.c:274
+#, c-format
+msgid "The file %s could not be saved"
+msgstr ""
+
+#: ../src/netlist-editor.c:239 ../src/netlist-editor.c:275
+#, fuzzy
+msgid "Could not save temporary netlist file"
+msgstr "Nu s-a putut salva fiºierul Schema %s\n"
+
+#: ../src/netlist-editor.c:311
+#, fuzzy
+msgid "Could not create the netlist dialog"
+msgstr "Nu s-a putut crea dialogul proprietãþi parte."
+
+#. gettext support
+#: ../src/netlist-editor.c:390
+#, c-format
+msgid "The file %s could not be found."
+msgstr ""
+
+#: ../src/netlist-editor.c:391
+#, fuzzy
+msgid "Could not find the required file"
+msgstr ""
+"Nu s-a putut gãsi fiºierul cerut:\n"
+"%s"
+
+#: ../src/main.c:107
+msgid "Enables some debugging functions"
+msgstr "Activeazã unele funcþii de debug"
+
+#: ../src/main.c:107
+msgid "LEVEL"
+msgstr "NIVEL"
+
+#: ../src/main.c:132
+msgid ""
+"You seem to be running Oregano without\n"
+"having it installed properly on your system.\n"
+"\n"
+"Please install Oregano and try again."
+msgstr ""
+"Se pare cã rulaþi Oregano fãrã a-l\n"
+"fi instalat corespunzãtor pe sistemul dvs.\n"
+"\n"
+"Vã rog sã instalaþi Oregano ºi încercaþi din nou."
+
+#: ../src/main.c:155
+msgid ""
+"Could not find a parts library.\n"
+"\n"
+"This is probably due to a faulty installation\n"
+"of Oregano. Please check your installation."
+msgstr ""
+"Nu s-a putu gãsi biblioteca de pãrþi.\n"
+"\n"
+"Aceasta este probabil datoritã unei instalãri defectuoase\n"
+"a lui Oregano. Vã rog sã verificaþi instalaþia."
+
+#: ../src/main.c:212
+msgid "Welcome to Oregano"
+msgstr ""
+
+#: ../src/load-schematic.c:261
+msgid "Bad file format."
+msgstr ""
+
+#: ../src/load-schematic.c:271
+msgid "Unknown parser error."
+msgstr ""
+
+#: ../src/load-library.c:149
+#, c-format
+msgid "Could not find the requested symbol: %s\n"
+msgstr "Nu s-a putut gãsi simbolul cerut: %s\n"
+
+#: ../src/load-library.c:165
+#, c-format
+msgid "Could not find the requested part: %s\n"
+msgstr "Nu s-a putut gãsi partea cerutã: %s\n"
+
+#: ../src/file.c:50 ../src/file.c:90
+msgid "Oregano Files"
+msgstr ""
+
+#: ../src/file.c:52 ../src/file.c:92
+msgid "All Files"
+msgstr ""
+
+#: ../src/file.c:55
+#, fuzzy
+msgid "Open File"
+msgstr "Deschide fiºier"
+
+#: ../src/file.c:95
+#, fuzzy
+msgid "Save File"
+msgstr "Salveazã"
+
+#: ../src/file.c:145
+#, fuzzy
+msgid "Netlist File"
+msgstr "Nume fiºier netlist"
+
+#: ../src/file.c:221
+msgid "Open file"
+msgstr "Deschide fiºier"
+
+#: ../src/file.c:271
+msgid "Save schematic as"
+msgstr "Salveazã schema ca"
+
+#: ../src/file.c:336
+msgid "Netlist filename"
+msgstr "Nume fiºier netlist"
+
+#: ../src/dialogs.c:126
+#, fuzzy
+msgid ""
+"(c) 2003-2006 LUGFi\n"
+"(c) 1999-2001 Richard Hult"
+msgstr ""
+"(c) 2003, 2005 LUGFi\n"
+"(c) 1999, 2001 Richard Hult"
+
+#: ../src/dialogs.c:141
+msgid "Schematic capture and circuit simulation.\n"
+msgstr ""
+
+#: ../src/model/schematic.c:584
+#, c-format
+msgid "File %s does not exists."
+msgstr ""
+
+#: ../src/model/schematic.c:592 ../src/model/schematic.c:630
+#, c-format
+msgid "Unknown file format for %s."
+msgstr ""
+
+#: ../src/model/schematic.c:611
+msgid "Load fails!."
+msgstr ""
+
+#: ../src/plot-add-function.c:48
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this"
+msgstr ""
+
+#: ../src/plot-add-function.c:50 ../src/plot-add-function.c:57
+#, fuzzy
+msgid "Could not create plot window"
+msgstr "Nu s-a putu crea fereastra de puncte."
+
+#, fuzzy
+#~ msgid "_View netlist"
+#~ msgstr "_Netlist"
+
+#, fuzzy
+#~ msgid "View a netlist"
+#~ msgstr "_Genereazã un netlist"
+
+#~ msgid "View plot"
+#~ msgstr "Vizualizeazã punct"
+
+#~ msgid "View plot "
+#~ msgstr "Vizualizeazã punct"
+
+#, fuzzy
+#~ msgid "Problem in transient analysis"
+#~ msgstr "Tranzitoriu"
+
+#, fuzzy
+#~ msgid "Could not find the simulation executable"
+#~ msgstr "Nu s-a putut crea dialogul de simulare."
+
+#, fuzzy
+#~ msgid "This probably means that you have not configured Oregano properly."
+#~ msgstr ""
+#~ "Nu s-a putut gãsi executabilul de simulare:\n"
+#~ "%s\n"
+#~ "\n"
+#~ "Aceasta înseamnã probabil cã nu aþi configurat Oregano\n"
+#~ "corespunzãtor. Vã rog alegeþi Setãri ºi specificaþi calea\n"
+#~ "cãtre executabilul de simulare (e.g. spice)"
+
+#, fuzzy
+#~ msgid "You have not entered a simulation executable"
+#~ msgstr "Nu s-a putut crea dialogul de simulare."
+
+#, fuzzy
+#~ msgid ""
+#~ "Please choose Settings and specify which program to use for simulations."
+#~ msgstr ""
+#~ "Nu aþi selectat un executabil de simulare.\n"
+#~ "Vã rog alegeþi Setãri ºi specificaþi calea\n"
+#~ "cãtre executabilul de simulare (e.g. spice)"
+
+#~ msgid "Name: "
+#~ msgstr "Nume:"
+
+#~ msgid "Value: "
+#~ msgstr "Valoare:"
+
+#, fuzzy
+#~ msgid "Parser"
+#~ msgstr "Lipeºte"
+
+#, fuzzy
+#~ msgid "<b>Format</b>"
+#~ msgstr "Format fiºier"
+
+#, fuzzy
+#~ msgid "<b>Size</b>"
+#~ msgstr "Tranzitoriu"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the required file:\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "Nu s-a putut gãsi fiºierul cerut:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the required file:</"
+#~ "span>\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Nu s-a putut gãsi fiºierul cerut:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not load file.</span>\n"
+#~ "\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Nu s-a putut gãsi fiºierul cerut:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create a netlist</span>\n"
+#~ "\n"
+#~ "%s"
+#~ msgstr ""
+#~ "Nu s-a putut gãsi fiºierul cerut:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid "<span weight=\"bold\">Could not create log window.</span>"
+#~ msgstr "Nu s-a putut crea fereastra de log."
+
+#, fuzzy
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create settings dialog.</"
+#~ "span>"
+#~ msgstr "Nu s-a putut crea dialogul de setãri."
+
+#, fuzzy
+#~ msgid ""
+#~ "<span size=\"x-large\" weigth=\"bold\">Transient analysis</span>\n"
+#~ "\n"
+#~ "Start time must be less than stop time."
+#~ msgstr ""
+#~ "Analizã tranzitorie :\n"
+#~ "\n"
+#~ "Timpul de început trebuie sã fie mai mic decãt timpul de sfârºit."
+
+#, fuzzy
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create simulation "
+#~ "settings dialog.</span>"
+#~ msgstr "Nu s-a putu crea dialogul de setãri simulare."
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create simulation dialog."
+#~ "</span>"
+#~ msgstr "Nu s-a putut crea dialogul de simulare."
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\">Could not find the required file:\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "Nu s-a putut gãsi fiºierul cerut:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\">Could not create textbox properties dialog.</span>"
+#~ msgstr "Nu s-a putut crea dialogul de proprietãþi pentru textbox."
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not save temporary netlist "
+#~ "file:\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "Nu s-a putut gãsi fiºierul cerut:\n"
+#~ "%s"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create simulation "
+#~ "settings dialog.</sapn>"
+#~ msgstr "Nu s-a putu crea dialogul de setãri simulare."
+
+#, fuzzy
+#~ msgid "Oregano"
+#~ msgstr "Deschide fiºier"
+
+#, fuzzy
+#~ msgid "200%"
+#~ msgstr "100%"
+
+#, fuzzy
+#~ msgid "Set the zoom factor to 200%"
+#~ msgstr "Seteazã factorul zoom la 100%"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create a netlist</span>\n"
+#~ "\n"
+#~ "Possibly dueto a faulty circuit schematic. Please check that\n"
+#~ "you have one o more test clamps and try again."
+#~ msgstr ""
+#~ "Nu s-a putut crea un netlist, posibil datoritã unei\n"
+#~ "scheme greºite. Vã rog sã verificaþi dacã aveþi\n"
+#~ "un nod de împãmântare ºi încercaþi din nou."
+
+#, fuzzy
+#~ msgid "Library: "
+#~ msgstr "Bibliotecã:"
+
+#~ msgid "Preview"
+#~ msgstr "Previzualizare"
+
+#~ msgid "Edit part properties"
+#~ msgstr "Editeazã proprietãþi parte"
+
+#, fuzzy
+#~ msgid "label"
+#~ msgstr "Etichetã"
+
+#, fuzzy
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the required file:\n"
+#~ "</span%s\n"
+#~ ">"
+#~ msgstr ""
+#~ "Nu s-a putut gãsi fiºierul cerut:\n"
+#~ "%s"
+
+#~ msgid "_Close"
+#~ msgstr "ÃŽn_chide"
+
+#, fuzzy
+#~ msgid "Print Schematic"
+#~ msgstr "Salveazã schema"
+
+#, fuzzy
+#~ msgid "Print preview"
+#~ msgstr "Previzualizare"
+
+#, fuzzy
+#~ msgid "Paper Size"
+#~ msgstr "Proprietãþi"
+
+#~ msgid "Warning"
+#~ msgstr "Atenþie"
+
+#~ msgid "Schematic %s has unsaved changes, save them?"
+#~ msgstr "Schema %s are schimbãri nesalvate, le salvez?"
+
+#~ msgid "Schematic has unsaved changes, save them?"
+#~ msgstr "Schema are schimbãri nesalvate, le salvez?"
+
+#~ msgid "View the latest plot"
+#~ msgstr "Vizualizeazã cel mai recent punct"
+
+#~ msgid "Voltmeters"
+#~ msgstr "Voltmetre"
+
+#~ msgid "Enable/disable voltmeters"
+#~ msgstr "Activeazã/dezactiveazã voltmetrele"
+
+#, fuzzy
+#~ msgid "Default"
+#~ msgstr "Standard\n"
+
+#~ msgid "Spice Path: "
+#~ msgstr "Calea catre Spice:"
+
+#~ msgid "Data"
+#~ msgstr "Date"
+
+#~ msgid "Library Path: "
+#~ msgstr "Calea cãtre biblioteci:"
+
+#~ msgid "Model Path: "
+#~ msgstr "Calea model:"
+
+#~ msgid "Start time: "
+#~ msgstr "Timp început:"
+
+#~ msgid "Stop time: "
+#~ msgstr "Timp sfârºit:"
+
+#~ msgid "Step size: "
+#~ msgstr "Mãrime pas:"
+
+#~ msgid "Enable"
+#~ msgstr "Activeazã"
+
+#~ msgid "Use"
+#~ msgstr "Foloseºte"
+
+#, fuzzy
+#~ msgid "enable"
+#~ msgstr "Activeazã"
+
+#, fuzzy
+#~ msgid "New Value"
+#~ msgstr "Valoare"
+
+#~ msgid "Edit text label"
+#~ msgstr "Editeazã etichetã text"
+
+#~ msgid "An electrical engineering tool.\n"
+#~ msgstr "O unealtã pentru inginierie eletronicã.\n"
+
+#~ msgid ""
+#~ "To place the selected part, either press the 'Place' button, press the "
+#~ "key 'l', or drag the preview to the sheet."
+#~ msgstr ""
+#~ "Pentru a poziþiona partea selectatã, ori apãsaþi butonul 'Plaseazã', "
+#~ "ori apãsaþi tasta 'l', sau trageþi previzualizarea pe fereastrã."
+
+#~ msgid "Temperature"
+#~ msgstr "Temperaturã"
diff --git a/po/ru.po b/po/ru.po
new file mode 100644
index 0000000..b5a8c1b
--- /dev/null
+++ b/po/ru.po
@@ -0,0 +1,1320 @@
+# translation of ru.po to Russian
+# Copyright (C) 2001, 2005 Free Software Foundation, Inc.
+# Valek Filippov <frob@df.ru>, 2001.
+# Yuri Kozlov <kozlov.y@gmail.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-11 02:36-0300\n"
+"PO-Revision-Date: 2005-09-07 20:14+0400\n"
+"Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
+"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:1
+msgid "<b>AC Analysis Options</b>"
+msgstr "<b>Параметры анализа по переменному току</b>"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:2
+msgid "<b>Type</b>"
+msgstr "<b>Тип</b>"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:3
+msgid "Current"
+msgstr "Ток"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:4
+msgid "Edit Clamp properties"
+msgstr "Правка ÑвойÑтв клеммы"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:5
+msgid "Imaginary part"
+msgstr "ÐœÐ½Ð¸Ð¼Ð°Ñ Ð´ÐµÑ‚Ð°Ð»ÑŒ"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:6
+msgid "Magnitude"
+msgstr "Ðмплитуда"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:7
+msgid "Phase"
+msgstr "Фаза"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:8
+msgid "Real part"
+msgstr "Ð ÐµÐ°Ð»ÑŒÐ½Ð°Ñ Ð´ÐµÑ‚Ð°Ð»ÑŒ"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:9
+msgid "Use decibel scale"
+msgstr "ИÑпользовать шкалу децибел"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:10
+msgid "Voltage"
+msgstr "ÐапрÑжение"
+
+#: ../data/dialogs/log-window.glade2.h:1
+msgid "Clear"
+msgstr "ОчиÑтка"
+
+#: ../data/dialogs/log-window.glade2.h:2
+msgid "Oregano Log Window"
+msgstr "Окно журнала Oregano"
+
+#: ../data/dialogs/page-properties.glade2.h:1
+msgid "<b>Alignment</b>"
+msgstr "<b>Выравнивание</b>"
+
+#: ../data/dialogs/page-properties.glade2.h:2
+msgid "Center Horizontally"
+msgstr "Отразить по горизонтали"
+
+#: ../data/dialogs/page-properties.glade2.h:3
+msgid "Center Vertically"
+msgstr "Отразить по вертикали"
+
+#: ../data/dialogs/page-properties.glade2.h:4
+msgid "Fit to page"
+msgstr "УмеÑтить в Ñтраницу"
+
+#: ../data/dialogs/page-properties.glade2.h:5
+msgid "Print Properties"
+msgstr "Параметры печати"
+
+#: ../data/dialogs/part-browser.glade2.h:1
+msgid "<b>Preview</b>"
+msgstr "<b>Предварительный проÑмотр</b>"
+
+#: ../data/dialogs/part-browser.glade2.h:2
+msgid "Library:"
+msgstr "Библиотека:"
+
+#: ../data/dialogs/part-browser.glade2.h:3 ../src/schematic-view-ui.h:360
+msgid "Parts"
+msgstr "Детали"
+
+#: ../data/dialogs/part-browser.glade2.h:4
+msgid "Place"
+msgstr "ПомеÑтить"
+
+#: ../data/dialogs/part-browser.glade2.h:5
+msgid "Press this button to place the selected part"
+msgstr "Ðажмите Ñту кнопку, чтобы помеÑтить выбранную деталь"
+
+#: ../data/dialogs/part-browser.glade2.h:6
+msgid "Search:"
+msgstr "ПоиÑк:"
+
+#: ../data/dialogs/part-browser.glade2.h:7
+msgid "Select which library to use"
+msgstr "Выбрать нужную библиотеку"
+
+#: ../data/dialogs/part-properties-dialog.glade2.h:1
+msgid "Part Properties"
+msgstr "СвойÑтва детали"
+
+#: ../data/dialogs/plot-window.glade2.h:1
+msgid "<b>Plot</b>"
+msgstr "<b>Диаграмма</b>"
+
+#: ../data/dialogs/plot-window.glade2.h:2
+msgid "<b>Variables</b>"
+msgstr "<b>Переменные</b>"
+
+#: ../data/dialogs/plot-window.glade2.h:3
+msgid "Plot"
+msgstr "Диаграмма"
+
+#: ../data/dialogs/plot-window.glade2.h:4
+msgid "Region"
+msgstr ""
+
+#: ../data/dialogs/plot-window.glade2.h:5
+msgid "Shift"
+msgstr ""
+
+#: ../data/dialogs/properties.glade2.h:1
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:1
+msgid " "
+msgstr " "
+
+#: ../data/dialogs/properties.glade2.h:2
+msgid "<b>Comments</b>"
+msgstr "<b>Комментарии</b>"
+
+#: ../data/dialogs/properties.glade2.h:3
+msgid "Author:"
+msgstr "Ðвтор:"
+
+#: ../data/dialogs/properties.glade2.h:4 ../src/sheet/part-item.c:147
+msgid "Properties"
+msgstr "СвойÑтва"
+
+#: ../data/dialogs/properties.glade2.h:5
+msgid "Title:"
+msgstr "Заголовок:"
+
+#: ../data/dialogs/settings.glade2.h:1
+msgid "\n"
+msgstr "\n"
+
+#: ../data/dialogs/settings.glade2.h:3
+msgid "<b>Data Paths</b>"
+msgstr "<b>Пути к данным</b>"
+
+#: ../data/dialogs/settings.glade2.h:4
+msgid "<b>Engine</b>"
+msgstr "<b>Механизм</b>"
+
+#: ../data/dialogs/settings.glade2.h:5
+msgid "<b>Executable Path</b>"
+msgstr "<b>Путь к иÑполнÑемым файлам</b>"
+
+#: ../data/dialogs/settings.glade2.h:6
+msgid "<b>File Format</b>"
+msgstr "<b>Формат файла</b>"
+
+#: ../data/dialogs/settings.glade2.h:7
+msgid "<b>User Interface</b>"
+msgstr "<b>ПользовательÑкий интерфейÑ</b>"
+
+#: ../data/dialogs/settings.glade2.h:8
+msgid "Automatically show log windows after simulation"
+msgstr "ÐвтоматичеÑки показывать окно журнала поÑле моделированиÑ"
+
+#: ../data/dialogs/settings.glade2.h:9
+msgid "Compress saved files"
+msgstr "Сжимать ÑохранÑемые файлы"
+
+#: ../data/dialogs/settings.glade2.h:10
+msgid "Grid size[px] "
+msgstr "Размер Ñетки[пикÑел] "
+
+#: ../data/dialogs/settings.glade2.h:11
+msgid "Library"
+msgstr "Библиотека"
+
+#: ../data/dialogs/settings.glade2.h:12
+msgid "Model"
+msgstr "Модель"
+
+#: ../data/dialogs/settings.glade2.h:13
+msgid "Paths"
+msgstr "Пути"
+
+#: ../data/dialogs/settings.glade2.h:14
+msgid "Preferences"
+msgstr "ÐаÑтройки"
+
+#: ../data/dialogs/settings.glade2.h:15
+msgid "Realtime update of selection (slow)"
+msgstr "ÐепоÑредÑтвенное обновление Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ (медленно)"
+
+#: ../data/dialogs/settings.glade2.h:16
+msgid "Remove"
+msgstr "Удалить"
+
+#: ../data/dialogs/settings.glade2.h:17
+#, fuzzy
+msgid "Select A File"
+msgstr "Выбрать вÑе"
+
+#: ../data/dialogs/settings.glade2.h:18
+msgid "Show the splash screen at application startup"
+msgstr "Показывать заÑтавку при загрузке приложениÑ"
+
+#: ../data/dialogs/settings.glade2.h:19
+msgid "TODO : Add FINDPATH for Engines"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:20
+msgid "User Interface"
+msgstr "ПользовательÑкий интерфейÑ"
+
+#: ../data/dialogs/sim-settings.glade2.h:1
+msgid "<b>AC</b>"
+msgstr "<b>AC</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:2
+msgid "<b>DC Sweep</b>"
+msgstr "<b>DC Sweep</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:3
+msgid "<b>Fourier</b>"
+msgstr "<b>Фурье</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:4
+msgid "<b>Transient</b>"
+msgstr "<b>Переходный</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:5
+msgid "Add new options"
+msgstr "Добавить новые параметры"
+
+#: ../data/dialogs/sim-settings.glade2.h:6
+msgid "Add to list"
+msgstr "Добавить в ÑпиÑок"
+
+#: ../data/dialogs/sim-settings.glade2.h:7
+msgid "Analysis Options"
+msgstr "Опции анализа"
+
+#: ../data/dialogs/sim-settings.glade2.h:8
+msgid "Analysis Parameters"
+msgstr "Параметры анализа"
+
+#: ../data/dialogs/sim-settings.glade2.h:9
+msgid "DEC"
+msgstr "DEC"
+
+#: ../data/dialogs/sim-settings.glade2.h:10
+msgid "Frequency"
+msgstr "ЧаÑтота"
+
+#: ../data/dialogs/sim-settings.glade2.h:11
+msgid "LIN"
+msgstr "LIN"
+
+#: ../data/dialogs/sim-settings.glade2.h:12
+msgid "List of outputs"
+msgstr "СпиÑок выводов"
+
+#: ../data/dialogs/sim-settings.glade2.h:13
+msgid "OCT"
+msgstr "OCT"
+
+#: ../data/dialogs/sim-settings.glade2.h:14
+msgid "Points"
+msgstr "Точки"
+
+#: ../data/dialogs/sim-settings.glade2.h:15
+msgid "Simulation Settings"
+msgstr "ÐаÑтройки моделированиÑ"
+
+#: ../data/dialogs/sim-settings.glade2.h:16
+msgid "Source"
+msgstr "ц╘ц⌠ц■цâ–ц·ц▌ц┴ц▀"
+
+#: ../data/dialogs/sim-settings.glade2.h:17
+msgid "Start"
+msgstr "ц╨ц│ц░ц∙ц⌠ц▀"
+
+#: ../data/dialogs/sim-settings.glade2.h:18
+msgid "Step"
+msgstr "Шаг"
+
+#: ../data/dialogs/sim-settings.glade2.h:19
+msgid "Stop"
+msgstr "ц╞ц⌠ц■ц│ц▌цâ–ц≈ц▀ц│"
+
+#: ../data/dialogs/sim-settings.glade2.h:20
+msgid "Type"
+msgstr "Тип"
+
+#: ../data/dialogs/sim-settings.glade2.h:21
+msgid "Use Initial Conditions"
+msgstr "ИÑпользовать начальные уÑловиÑ"
+
+#: ../data/dialogs/simulation.glade2.h:1
+#, fuzzy
+msgid "Progress: None"
+msgstr "ПрогреÑÑ:"
+
+#: ../data/dialogs/simulation.glade2.h:2
+msgid "Simulation"
+msgstr "Моделирование"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:2
+msgid "<b>Text</b>"
+msgstr "<b>ТекÑÑ‚</b>"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:3
+msgid "Text Properties"
+msgstr "СвойÑтва текÑта"
+
+#: ../data/dialogs/view-netlist.glade2.h:1
+msgid "Netlist View"
+msgstr "Вид Netlist"
+
+#: ../data/dialogs/view-netlist.glade2.h:2 ../src/schematic-view-ui.h:161
+msgid "_Simulate"
+msgstr "Моделировать"
+
+#: ../src/sheet/part-item.c:147
+msgid "Edit the part's properties"
+msgstr "Правка ÑвойÑтв детали"
+
+#: ../src/sheet/part-item.c:616 ../src/sheet/part-item.c:765
+#: ../src/sheet/textbox-item.c:679 ../src/sim-settings.c:775
+#: ../src/settings.c:139 ../src/schematic-view.c:251
+#: ../src/schematic-view.c:317 ../src/schematic-view.c:2431 ../src/plot.c:434
+#: ../src/plot.c:689 ../src/part-browser.c:496 ../src/netlist-editor.c:309
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this."
+msgstr ""
+"Файл %s не найден. ВероÑтно, вам придётÑÑ Ð¿ÐµÑ€ÐµÑƒÑтановить Oregano, чтобы "
+"решить Ñту проблему."
+
+#: ../src/sheet/part-item.c:618 ../src/sheet/part-item.c:626
+#: ../src/sheet/part-item.c:767 ../src/sheet/part-item.c:775
+msgid "Could not create part properties dialog."
+msgstr "Ðе удалоÑÑŒ Ñоздать диалог ÑвойÑтв детали."
+
+#: ../src/sheet/sheet-item.c:307 ../src/schematic-view-ui.h:288
+msgid "Copy"
+msgstr "Копировать"
+
+#: ../src/sheet/sheet-item.c:307
+msgid "Copy the object to the clipboard"
+msgstr "Копировать объект в буфер обмена"
+
+#: ../src/sheet/sheet-item.c:310 ../src/schematic-view-ui.h:285
+msgid "Cut"
+msgstr "Вырезать"
+
+#: ../src/sheet/sheet-item.c:310
+msgid "Cut the object to the clipboard"
+msgstr "Вырезать объект в буфер обмена"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete"
+msgstr "Удалить"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete the object"
+msgstr "Удалить объект"
+
+#: ../src/sheet/sheet-item.c:319
+msgid "Rotate"
+msgstr "Повернуть"
+
+#: ../src/sheet/sheet-item.c:320
+msgid "Rotate the selected objects 90 degrees clockwise"
+msgstr "Повернуть выбранные объекты на 90 градуÑов по чаÑовой"
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit..."
+msgstr "Правка..."
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit the text"
+msgstr "Правка текÑта"
+
+#: ../src/sheet/textbox-item.c:596
+msgid "Label"
+msgstr "Метка"
+
+#: ../src/sheet/textbox-item.c:681 ../src/sheet/textbox-item.c:690
+msgid "Could not create textbox properties dialog"
+msgstr "Ðе удалоÑÑŒ Ñоздать диалог ÑвойÑтв текÑта"
+
+#: ../src/simulation.c:102 ../src/simulation.c:109 ../src/simulation.c:115
+msgid "Could not create simulation dialog"
+msgstr "Ðе удалоÑÑŒ Ñоздать диалог моделированиÑ"
+
+#: ../src/simulation.c:150
+#, fuzzy, c-format
+msgid "Progress: <b>%s</b>"
+msgstr "ПрогреÑÑ:"
+
+#: ../src/simulation.c:201
+msgid ""
+"<span weight=\"bold\" size=\"large\">The simulation was aborted due to an "
+"error.</span>\n"
+"\n"
+"Would you like to view the error log?"
+msgstr ""
+"<span weight=\"bold\" size=\"large\">Моделирование было прервано из-за "
+"ошибки.</span>\n"
+"\n"
+"Хотите проÑмотреть журнал ошибок?"
+
+#: ../src/simulation.c:211
+msgid "The simulation was aborted due to an error"
+msgstr "Моделирование было прервано из-за ошибки"
+
+#: ../src/sim-settings.c:229
+msgid "Add new option"
+msgstr "Добавить новый параметр"
+
+#: ../src/sim-settings.c:777 ../src/sim-settings.c:784
+#: ../src/sim-settings.c:790
+msgid "Could not create simulation settings dialog"
+msgstr "Ðе удалоÑÑŒ Ñоздать диалог наÑтроек моделированиÑ"
+
+#: ../src/sim-settings.c:814
+msgid "Option"
+msgstr "Параметр"
+
+#: ../src/sim-settings.c:816
+msgid "Value"
+msgstr "Значение"
+
+#: ../src/settings.c:141 ../src/settings.c:148 ../src/settings.c:154
+msgid "Could not create settings dialog"
+msgstr "Ðе удалоÑÑŒ Ñоздать диалог наÑтроек"
+
+#: ../src/settings.c:215
+msgid "Engine executable not found"
+msgstr ""
+
+#: ../src/settings.c:216
+msgid "The engine is unable to locate the external program."
+msgstr ""
+
+#: ../src/schematic-view.c:254
+msgid "Could not create properties dialog"
+msgstr "Ðе удалоÑÑŒ Ñоздать диалог ÑвойÑтв"
+
+#: ../src/schematic-view.c:320
+msgid "Could not create the page properties dialog"
+msgstr "Ðе удалоÑÑŒ Ñоздать диалог параметров Ñтраницы"
+
+#: ../src/schematic-view.c:383
+msgid "Could not load file"
+msgstr "Ðе удалоÑÑŒ загрузить файл"
+
+#: ../src/schematic-view.c:410 ../src/schematic-view.c:1304
+#: ../src/schematic-view.c:1312
+msgid "Untitled.oregano"
+msgstr "БезымÑнный.oregano"
+
+#: ../src/schematic-view.c:415
+msgid "Could not save schematic file"
+msgstr "Ðе удалоÑÑŒ Ñохранить файл Ñхемы"
+
+#: ../src/schematic-view.c:765 ../src/netlist-editor.c:225
+#: ../src/netlist-editor.c:436
+msgid "Could not create a netlist"
+msgstr "Ðе удалоÑÑŒ Ñоздать netlist"
+
+#: ../src/schematic-view.c:768 ../src/netlist-editor.c:229
+#: ../src/netlist-editor.c:439
+msgid "An unexpected error has occurred"
+msgstr "Произошла Ð½ÐµÐ¿Ñ€ÐµÐ´Ð²Ð¸Ð´ÐµÐ½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
+
+#: ../src/schematic-view.c:1313
+msgid "Untitled.netlist"
+msgstr "БезымÑнный.netlist"
+
+#: ../src/schematic-view.c:1504
+#, fuzzy, c-format
+msgid ""
+"<span weight=\"bold\" size=\"large\">Save changes to schematic %s before "
+"closing?</span>\n"
+"\n"
+"If you don't save, all changes since you last saved will be permanently lost."
+msgstr ""
+"<span weight=\"bold\" size=\"large\">Файл Ñхемы %s изменён</span>\n"
+"\n"
+"Сохранить?"
+
+#: ../src/schematic-view.c:1516
+msgid "Close _without Saving"
+msgstr ""
+
+#: ../src/schematic-view.c:2434 ../src/schematic-view.c:2445
+msgid "Could not create the log window"
+msgstr "Ðе удалоÑÑŒ Ñоздать окно журнала"
+
+#: ../src/schematic-view-ui.h:38
+msgid "_New"
+msgstr "Ðовый"
+
+#: ../src/schematic-view-ui.h:38 ../src/schematic-view-ui.h:264
+msgid "Create a new schematic"
+msgstr "Создать новую Ñхему"
+
+#: ../src/schematic-view-ui.h:47
+msgid "Page Properties"
+msgstr "Параметры Ñтраницы"
+
+#: ../src/schematic-view-ui.h:48
+msgid "Set print properties"
+msgstr "ÐаÑтройка параметров печати"
+
+#: ../src/schematic-view-ui.h:56 ../src/print.c:367 ../src/plot.c:150
+#: ../src/netlist-editor.c:193
+msgid "Print Preview"
+msgstr "ПроÑмотр перед печатью"
+
+#: ../src/schematic-view-ui.h:57
+msgid "Preview the schematic before printing"
+msgstr "ПроÑмотр Ñхемы перед печатью"
+
+#: ../src/schematic-view-ui.h:65
+msgid "Schematic _Properties..."
+msgstr "СвойÑтва Ñхемы..."
+
+#: ../src/schematic-view-ui.h:66
+msgid "Modify the schematic's properties"
+msgstr "Изменить ÑвойÑтва Ñхемы"
+
+#: ../src/schematic-view-ui.h:95
+msgid "_Delete"
+msgstr "Удалить"
+
+#: ../src/schematic-view-ui.h:96
+msgid "Delete the selection"
+msgstr "Удалить выделение"
+
+#: ../src/schematic-view-ui.h:102
+msgid "_Rotate"
+msgstr "Повернуть"
+
+#: ../src/schematic-view-ui.h:103
+msgid "Rotate the selection clockwise"
+msgstr "Повернуть выделение по чаÑовой Ñтрелке"
+
+#: ../src/schematic-view-ui.h:109
+#, fuzzy
+msgid "Flip _horizontally"
+msgstr "Отразить по горизонтали"
+
+#: ../src/schematic-view-ui.h:110
+#, fuzzy
+msgid "Flip the selection horizontally"
+msgstr "Копировать выделение в буфер обмена"
+
+#: ../src/schematic-view-ui.h:116
+#, fuzzy
+msgid "Flip _vertically"
+msgstr "Отразить по вертикали"
+
+#: ../src/schematic-view-ui.h:117
+#, fuzzy
+msgid "Flip the selection vertically"
+msgstr "Удалить выделение"
+
+#: ../src/schematic-view-ui.h:124
+#, fuzzy
+msgid "Select _all"
+msgstr "СнÑÑ‚ÑŒ выделение Ñо вÑех"
+
+#: ../src/schematic-view-ui.h:125
+msgid "Select all objects on the sheet"
+msgstr "Выбрать вÑе объекты на лиÑте"
+
+#: ../src/schematic-view-ui.h:131
+#, fuzzy
+msgid "Deselect a_ll"
+msgstr "СнÑÑ‚ÑŒ выделение Ñо вÑех"
+
+#: ../src/schematic-view-ui.h:132
+msgid "Deselect the selected objects"
+msgstr "СнÑÑ‚ÑŒ выделение Ñо вÑех объектов"
+
+#: ../src/schematic-view-ui.h:140
+#, fuzzy
+msgid "_Object Properties..."
+msgstr "СвойÑтва объекта..."
+
+#: ../src/schematic-view-ui.h:141
+msgid "Modify the object's properties"
+msgstr "Изменить ÑвойÑтва объекта"
+
+#: ../src/schematic-view-ui.h:146
+msgid "Simulation S_ettings..."
+msgstr "ÐаÑтройки моделированиÑ..."
+
+#: ../src/schematic-view-ui.h:147
+msgid "Edit the simulation settings"
+msgstr "Правка наÑтроек моделированиÑ..."
+
+#: ../src/schematic-view-ui.h:162
+msgid "Run a simulation"
+msgstr "ЗапуÑтить моделирование"
+
+#: ../src/schematic-view-ui.h:169
+msgid "_Generate netlist"
+msgstr "Создать netlist"
+
+#: ../src/schematic-view-ui.h:170
+msgid "Generate a netlist"
+msgstr "Создать netlist"
+
+#: ../src/schematic-view-ui.h:177
+msgid "50%"
+msgstr "50%"
+
+#: ../src/schematic-view-ui.h:178
+msgid "Set the zoom factor to 50%"
+msgstr "УÑтановить маÑштаб в 50%"
+
+#: ../src/schematic-view-ui.h:179
+msgid "75%"
+msgstr "75%"
+
+#: ../src/schematic-view-ui.h:180
+msgid "Set the zoom factor to 75%"
+msgstr "УÑтановить маÑштаб в 75%"
+
+#. GNOMEUIINFO_ITEM_NONE(N_("50%"),
+#. N_("Set the zoom factor to 50%"), plot_zoom_50_cmd),
+#. GNOMEUIINFO_ITEM_NONE(N_("75%"),
+#. N_("Set the zoom factor to 75%"), plot_zoom_75_cmd),
+#: ../src/schematic-view-ui.h:181 ../src/plot.c:167
+msgid "100%"
+msgstr "100%"
+
+#: ../src/schematic-view-ui.h:182 ../src/plot.c:168
+msgid "Set the zoom factor to 100%"
+msgstr "УÑтановить маÑштаб в 100%"
+
+#: ../src/schematic-view-ui.h:184
+msgid "125%"
+msgstr "125%"
+
+#: ../src/schematic-view-ui.h:185
+msgid "Set the zoom factor to 125%"
+msgstr "УÑтановить маÑштаб в 125%"
+
+#: ../src/schematic-view-ui.h:186
+msgid "150%"
+msgstr "150%"
+
+#: ../src/schematic-view-ui.h:187
+msgid "Set the zoom factor to 150%"
+msgstr "УÑтановить маÑштаб в 150%"
+
+#: ../src/schematic-view-ui.h:196
+msgid "Zoom"
+msgstr "МаÑштаб"
+
+#: ../src/schematic-view-ui.h:202
+msgid "_Log"
+msgstr "Журнал"
+
+#: ../src/schematic-view-ui.h:202
+msgid "View the latest simulation log"
+msgstr "ПроÑмотр поÑледнего журнала моделированиÑ"
+
+#: ../src/schematic-view-ui.h:205
+#, fuzzy
+msgid "_Node labels"
+msgstr "Показать метки узлов"
+
+#: ../src/schematic-view-ui.h:205
+msgid "Show or hide node labels"
+msgstr "Показать или Ñкрыть метки узлов"
+
+#: ../src/schematic-view-ui.h:207
+#, fuzzy
+msgid "N_etlist"
+msgstr "Файл netlist"
+
+#: ../src/schematic-view-ui.h:208
+#, fuzzy
+msgid "View the circuit netlist"
+msgstr "ПроÑмотр netlist"
+
+#: ../src/schematic-view-ui.h:240
+msgid "_Contents"
+msgstr "Содержание"
+
+#: ../src/schematic-view-ui.h:240
+msgid "Show program help"
+msgstr "Показать Ñправку о программе"
+
+#: ../src/schematic-view-ui.h:254
+msgid "_Tools"
+msgstr "ИнÑтрументы"
+
+#: ../src/schematic-view-ui.h:264
+msgid "New"
+msgstr "Ðовый"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open"
+msgstr "Открыть"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open an existing schematic"
+msgstr "Открыть ÑущеÑтвующую Ñхему"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save"
+msgstr "Сохранить"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save the schematic"
+msgstr "Сохранить Ñхему"
+
+#: ../src/schematic-view-ui.h:285
+msgid "Cut the selection to the clipboard"
+msgstr "Вырезать выделение в буфер обмена"
+
+#: ../src/schematic-view-ui.h:288
+msgid "Copy the selection to the clipboard"
+msgstr "Копировать выделение в буфер обмена"
+
+#: ../src/schematic-view-ui.h:291 ../src/schematic-view-ui.h:404
+msgid "Paste"
+msgstr "Ð’Ñтавить"
+
+#: ../src/schematic-view-ui.h:291
+msgid "Paste the clipboard"
+msgstr "Ð’Ñтавить из буфера обмена"
+
+#: ../src/schematic-view-ui.h:301
+msgid "Arrow"
+msgstr "Стрелка"
+
+#: ../src/schematic-view-ui.h:302
+msgid "Select, move and modify objects"
+msgstr "Выбрать, передвинуть или изменить объекты"
+
+#: ../src/schematic-view-ui.h:307
+msgid "Text"
+msgstr "ТекÑÑ‚"
+
+#: ../src/schematic-view-ui.h:308
+msgid "Put text on the schematic"
+msgstr "ПомеÑтить текÑÑ‚ на Ñхему"
+
+#: ../src/schematic-view-ui.h:313
+msgid "Wires"
+msgstr "Провода"
+
+#: ../src/schematic-view-ui.h:314
+msgid "Draw wires"
+msgstr "ÐариÑовать провода"
+
+#: ../src/schematic-view-ui.h:330
+msgid "Add Voltage Clamp"
+msgstr "Добавить Voltage Clamp"
+
+#: ../src/schematic-view-ui.h:331
+msgid "Add a Voltage test clamp"
+msgstr "Добавить Voltage test clamp"
+
+#: ../src/schematic-view-ui.h:336
+msgid "Simulate"
+msgstr "Моделировать"
+
+#: ../src/schematic-view-ui.h:337
+msgid "Run a simulation for the current schematic"
+msgstr "ЗапуÑтить моделирование текущей Ñхемы"
+
+#: ../src/schematic-view-ui.h:342 ../src/schematic-view-ui.h:343
+msgid "Simulation settings"
+msgstr "ÐаÑтройки моделированиÑ"
+
+#: ../src/schematic-view-ui.h:361
+msgid "Show or hide the part browser"
+msgstr "Показать или Ñкрыть проÑмотр деталей"
+
+#: ../src/schematic-view-ui.h:366
+msgid "Grid"
+msgstr "Сетка"
+
+#: ../src/schematic-view-ui.h:367
+msgid "Turn on/off the grid"
+msgstr "Вкл/Выкл Ñетку"
+
+#: ../src/schematic-view-ui.h:372 ../src/schematic-view-ui.h:373
+msgid "Zoom in"
+msgstr "МаÑштаб +"
+
+#: ../src/schematic-view-ui.h:378 ../src/schematic-view-ui.h:379
+msgid "Zoom out"
+msgstr "МаÑштаб -"
+
+#: ../src/schematic-view-ui.h:405
+msgid "Paste the contents of the clipboard to the sheet"
+msgstr "Ð’Ñтавить Ñодержимое буфера обмена на лиÑÑ‚"
+
+#: ../src/print.c:297
+msgid "Print"
+msgstr "Печать"
+
+#: ../src/print.c:304
+msgid "Pages"
+msgstr "Страницы"
+
+#: ../src/print.c:339
+msgid "Can't get paper info! .. getting default!"
+msgstr ""
+"Ðе удалоÑÑŒ получить информацию о бумаге! .. иÑпользуютÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ "
+"умолчанию!"
+
+#: ../src/print.c:353
+msgid "Could not create font for printing."
+msgstr "Ðе удалоÑÑŒ Ñоздать шрифт Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸."
+
+#: ../src/print.c:372
+msgid "Printing failed."
+msgstr "Сбой печати."
+
+#: ../src/plot.c:61 ../src/plot.c:62
+msgid "Sans 10"
+msgstr "Sans 10"
+
+#: ../src/plot.c:63
+msgid "Sans 8"
+msgstr "Sans 8"
+
+#: ../src/plot.c:151
+msgid "Preview the plot before printing"
+msgstr "ПроÑмотр диаграммы перед печатью"
+
+#: ../src/plot.c:153
+msgid "Export plot"
+msgstr "ЭкÑпортировать диаграмму"
+
+#: ../src/plot.c:154
+msgid "Show the export menu"
+msgstr "Показать меню ÑкÑпорта"
+
+#: ../src/plot.c:155
+msgid "Add Function"
+msgstr "Добавить функцию"
+
+#: ../src/plot.c:156
+msgid "Add new function to the graph"
+msgstr "Добавить новую функцию на график"
+
+#: ../src/plot.c:180
+msgid "_Preferences..."
+msgstr "ÐаÑтройки..."
+
+#: ../src/plot.c:182
+msgid "Show crosshairs"
+msgstr "Показать перекреÑтиÑ"
+
+#: ../src/plot.c:183
+msgid "_Zoom"
+msgstr "МаÑштаб"
+
+#: ../src/plot.c:190
+msgid "Schematic Plot"
+msgstr "CхематичеÑÐºÐ°Ñ Ð´Ð¸Ð°Ð³Ñ€Ð°Ð¼Ð¼Ð°"
+
+#: ../src/plot.c:196
+msgid "_File"
+msgstr "Файл"
+
+#: ../src/plot.c:197
+msgid "_Plot"
+msgstr "Диаграмма"
+
+#. Simulation failed?
+#: ../src/plot.c:330
+msgid "The simulation produced no data!!\n"
+msgstr "Результат Ð¼Ð¾Ð´ÐµÐ»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑƒÑÑ‚!!\n"
+
+#: ../src/plot.c:340 ../src/plot.c:574
+#, c-format
+msgid "Plot - %s"
+msgstr "Диаграмма - %s"
+
+#: ../src/plot.c:349
+msgid "Nodes"
+msgstr "Узлы"
+
+#: ../src/plot.c:352 ../src/plot.c:636
+msgid "Functions"
+msgstr "Функции"
+
+#: ../src/plot.c:424
+msgid "Oregano - Plot"
+msgstr "Oregano - диаграмма"
+
+#: ../src/plot.c:436 ../src/plot.c:443
+msgid "Could not create plot window."
+msgstr "Ðе удалоÑÑŒ Ñоздать окно диаграммы."
+
+#: ../src/plot.c:659
+msgid "TRANSFER"
+msgstr "ПЕРЕДÐТЬ"
+
+#: ../src/plot.c:691 ../src/plot.c:698
+msgid "Could not create plot export window."
+msgstr "Ðе удалоÑÑŒ Ñоздать окно ÑкÑпорта диаграммы."
+
+#. if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (export_png)))
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PNG;
+#. else
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PS;
+#: ../src/plot.c:719
+msgid "Save PNG"
+msgstr "Сохранить PNG"
+
+#: ../src/part-browser.c:135 ../src/part-browser.c:614
+msgid ""
+"Gtk version 2.2 does not support GtkTreeModelFilter...\n"
+"Filtering disable!"
+msgstr ""
+"Ð’ Gtk верÑии 2.2 нет поддержки GtkTreeModelFilter...\n"
+"Ð¤Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°!"
+
+#: ../src/part-browser.c:187 ../src/part-browser.c:401
+msgid "Unable to load required part"
+msgstr "Ðе удалоÑÑŒ загрузить требуемую деталь"
+
+#: ../src/part-browser.c:499 ../src/part-browser.c:507
+msgid "Could not create part browser"
+msgstr "Ðевозможно Ñоздать программу проÑмотра детали"
+
+#: ../src/oregano-config.c:123
+#, c-format
+msgid "Loading %s ..."
+msgstr "Загрузка %s ..."
+
+#: ../src/oregano-config.c:164
+#, c-format
+msgid "Could not read the parts library: %s "
+msgstr "Ðе удалоÑÑŒ прочитать библиотеку деталей: %s "
+
+#: ../src/oregano-config.c:166
+msgid ""
+"The file is probably corrupt. Please reinstall the parts\n"
+"library or Oregano and try again."
+msgstr ""
+"ВероÑтно, файл повреждён. ПереуÑтановить библиотеку деталей\n"
+"или Oregano и попробуйте Ñнова."
+
+#: ../src/engines/netlist.c:436
+msgid "No ground node. Aborting.\n"
+msgstr "Ðет узла заземлениÑ. Завершение.\n"
+
+#: ../src/engines/netlist.c:441
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have a ground node and try again."
+msgstr ""
+"Возможно из-за ошибок в ÑлектричеÑкой Ñхеме. Проверьте, что\n"
+"имеетÑÑ ÑƒÐ·ÐµÐ» Ð·Ð°Ð·ÐµÐ¼Ð»ÐµÐ½Ð¸Ñ Ð¸ попробуйте ещё раз."
+
+#: ../src/engines/netlist.c:450
+msgid "No test clamps found. Aborting.\n"
+msgstr "Ðет теÑтовых клемм. Завершение.\n"
+
+#: ../src/engines/netlist.c:455
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have one o more test clamps and try again."
+msgstr ""
+"Возможно из-за ошибок в ÑлектричеÑкой Ñхеме. Проверьте, что\n"
+"имеетÑÑ Ð¾Ð´Ð½Ð° и более теÑтовых клемм и попробуйте ещё раз."
+
+#: ../src/engines/gnucap.c:299
+#, fuzzy
+msgid "### Too few or none analysis found ###\n"
+msgstr ""
+"\n"
+"\n"
+"### Сразу неÑколько или ни одного анализа не найдено ###\n"
+"\n"
+
+#: ../src/engines/gnucap.c:366
+msgid "Unable to execute GnuCap."
+msgstr ""
+
+#: ../src/engines/gnucap.c:383
+#, fuzzy
+msgid "None"
+msgstr "Узлы"
+
+#: ../src/engines/gnucap.c:586
+msgid "time"
+msgstr ""
+
+#: ../src/engines/gnucap.c:591 ../src/engines/gnucap.c:601
+#, fuzzy
+msgid "voltage"
+msgstr "ÐапрÑжение"
+
+#: ../src/engines/gnucap.c:596
+#, fuzzy
+msgid "frequency"
+msgstr "ЧаÑтота"
+
+#: ../src/engines/gnucap.c:645
+#, fuzzy
+msgid "Unknown analysis"
+msgstr "ÐеизвеÑтный анализ"
+
+#: ../src/engines/gnucap.c:693
+#, fuzzy
+msgid "abort"
+msgstr "ц╨ц│ц░ц∙ц⌠ц▀"
+
+#: ../src/engines/engine.c:32
+msgid "Operating Point"
+msgstr "Ð Ð°Ð±Ð¾Ñ‡Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ°"
+
+#: ../src/engines/engine.c:33
+msgid "Transient Analysis"
+msgstr "Ðнализ переходных процеÑÑов"
+
+#: ../src/engines/engine.c:34
+msgid "DC transfer characteristic"
+msgstr "ХарактериÑтика передачи поÑтоÑнного тока"
+
+#: ../src/engines/engine.c:35
+msgid "AC Analysis"
+msgstr "Ðнализ по переменному току"
+
+#: ../src/engines/engine.c:36
+msgid "Transfer Function"
+msgstr "ÐŸÐµÑ€ÐµÐ´Ð°Ñ‚Ð¾Ñ‡Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ"
+
+#: ../src/engines/engine.c:37
+msgid "Distortion Analysis"
+msgstr "Ðнализ иÑкажений"
+
+#: ../src/engines/engine.c:38
+msgid "Noise Analysis"
+msgstr "Ðнализ шума"
+
+#: ../src/engines/engine.c:39
+msgid "Pole-Zero Analysis"
+msgstr "Ðнализ Pole-Zero"
+
+#: ../src/engines/engine.c:40
+msgid "Sensitivity Analysis"
+msgstr "Ðнализ чувÑтвительноÑти"
+
+#: ../src/engines/engine.c:41
+msgid "Unknown Analysis"
+msgstr "ÐеизвеÑтный анализ"
+
+#: ../src/netlist-editor.c:172
+#, c-format
+msgid "Netlist for %s"
+msgstr "Netlist Ð´Ð»Ñ %s"
+
+#: ../src/netlist-editor.c:173
+#, c-format
+msgid "Author : %s"
+msgstr "Ðвтор : %s"
+
+#: ../src/netlist-editor.c:186
+msgid "Page %N of %Q"
+msgstr "Страница %N из %Q"
+
+#: ../src/netlist-editor.c:238 ../src/netlist-editor.c:274
+#, c-format
+msgid "The file %s could not be saved"
+msgstr "Ðевозможно Ñохранить файл %s"
+
+#: ../src/netlist-editor.c:239 ../src/netlist-editor.c:275
+msgid "Could not save temporary netlist file"
+msgstr "Ðе удалоÑÑŒ Ñохранить временный netlist файл"
+
+#: ../src/netlist-editor.c:311
+msgid "Could not create the netlist dialog"
+msgstr "Ðе удалоÑÑŒ Ñоздать диалог netlist"
+
+#. gettext support
+#: ../src/netlist-editor.c:390
+#, c-format
+msgid "The file %s could not be found."
+msgstr "Ðе удалоÑÑŒ найти файл %s."
+
+#: ../src/netlist-editor.c:391
+msgid "Could not find the required file"
+msgstr "Ðе удалоÑÑŒ найти требуемый файл"
+
+#: ../src/main.c:107
+msgid "Enables some debugging functions"
+msgstr "Включить некоторые отладочные функции"
+
+#: ../src/main.c:107
+msgid "LEVEL"
+msgstr "УРОВЕÐЬ"
+
+#: ../src/main.c:132
+msgid ""
+"You seem to be running Oregano without\n"
+"having it installed properly on your system.\n"
+"\n"
+"Please install Oregano and try again."
+msgstr ""
+"ВероÑтно Oregano\n"
+"неправильно уÑтановлен.\n"
+"\n"
+"ПереуÑтановите Oregano и попробуйте еще раз."
+
+#: ../src/main.c:155
+msgid ""
+"Could not find a parts library.\n"
+"\n"
+"This is probably due to a faulty installation\n"
+"of Oregano. Please check your installation."
+msgstr ""
+"Ðе удалоÑÑŒ найти библиотеку деталей.\n"
+"\n"
+"Возможно, Ñто результат неправильной уÑтановки\n"
+"Oregano. Проверьте правильноÑÑ‚ÑŒ уÑтановки."
+
+#: ../src/main.c:212
+msgid "Welcome to Oregano"
+msgstr "Рады приветÑтвовать в Oregano"
+
+#: ../src/load-schematic.c:261
+msgid "Bad file format."
+msgstr "Ðеправильный формат файла."
+
+#: ../src/load-schematic.c:271
+msgid "Unknown parser error."
+msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° анализатора."
+
+#: ../src/load-library.c:149
+#, c-format
+msgid "Could not find the requested symbol: %s\n"
+msgstr "Ðе удалоÑÑŒ найти запрошенный Ñимвол: %s\n"
+
+#: ../src/load-library.c:165
+#, c-format
+msgid "Could not find the requested part: %s\n"
+msgstr "Ðе удалоÑÑŒ найти запрошенную деталь: %s\n"
+
+#: ../src/file.c:50 ../src/file.c:90
+msgid "Oregano Files"
+msgstr "Файлы oregano"
+
+#: ../src/file.c:52 ../src/file.c:92
+msgid "All Files"
+msgstr "Ð’Ñе файлы"
+
+#: ../src/file.c:55
+msgid "Open File"
+msgstr "Открыть файл"
+
+#: ../src/file.c:95
+msgid "Save File"
+msgstr "Сохранить файл"
+
+#: ../src/file.c:145
+msgid "Netlist File"
+msgstr "Файл netlist"
+
+#: ../src/file.c:221
+msgid "Open file"
+msgstr "Открыть файл"
+
+#: ../src/file.c:271
+msgid "Save schematic as"
+msgstr "Сохранить Ñхему как"
+
+#: ../src/file.c:336
+msgid "Netlist filename"
+msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° netlist"
+
+#: ../src/dialogs.c:126
+#, fuzzy
+msgid ""
+"(c) 2003-2006 LUGFi\n"
+"(c) 1999-2001 Richard Hult"
+msgstr ""
+"(c) 2003-2005 LUGFi\n"
+"(c) 1999-2001 Richard Hult"
+
+#: ../src/dialogs.c:141
+msgid "Schematic capture and circuit simulation.\n"
+msgstr "Разработка и моделирование Ñхем.\n"
+
+#: ../src/model/schematic.c:584
+#, c-format
+msgid "File %s does not exists."
+msgstr "Файл %s не ÑущеÑтвует."
+
+#: ../src/model/schematic.c:592 ../src/model/schematic.c:630
+#, c-format
+msgid "Unknown file format for %s."
+msgstr "ÐеизвеÑтный формат файла %s."
+
+#: ../src/model/schematic.c:611
+msgid "Load fails!."
+msgstr "Ðе удалоÑÑŒ загрузить!."
+
+#: ../src/plot-add-function.c:48
+#, fuzzy, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this"
+msgstr ""
+"Файл %s не найден. ВероÑтно, вам придётÑÑ Ð¿ÐµÑ€ÐµÑƒÑтановить Oregano, чтобы "
+"решить Ñту проблему."
+
+#: ../src/plot-add-function.c:50 ../src/plot-add-function.c:57
+#, fuzzy
+msgid "Could not create plot window"
+msgstr "Ðе удалоÑÑŒ Ñоздать окно диаграммы."
+
+#~ msgid "_View netlist"
+#~ msgstr "ПроÑмотр netlist"
+
+#~ msgid "View plot"
+#~ msgstr "ПроÑмотр диаграммы"
+
+#~ msgid "View plot "
+#~ msgstr "ПроÑмотр диаграммы "
+
+#~ msgid "Problem in transient analysis"
+#~ msgstr "Проблема в анализе переходных процеÑÑов"
+
+#~ msgid "Start time must be less than stop time."
+#~ msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° должно быть меньше времени окончаниÑ."
+
+#~ msgid "Could not find the simulation executable"
+#~ msgstr "Ðе удалоÑÑŒ найти запуÑкаемый файл моделированиÑ"
+
+#~ msgid "This probably means that you have not configured Oregano properly."
+#~ msgstr "ВероÑтно, из-за неправильной наÑтройки Oregano."
+
+#~ msgid "You have not entered a simulation executable"
+#~ msgstr "Ðе задан запуÑкаемый файл моделированиÑ"
+
+#~ msgid ""
+#~ "Please choose Settings and specify which program to use for simulations."
+#~ msgstr "Зайдите в ÐаÑтройки и выберите программу моделированиÑ."
+
+#~ msgid "Couldn't generate temporary file.\n"
+#~ msgstr "Ðе удалоÑÑŒ Ñгенеривать временный файл.\n"
+
+#~ msgid "Possibly due an I/O error."
+#~ msgstr "ВероÑтно, из-за ошибки ввода-вывода."
+
+#~ msgid "Name: "
+#~ msgstr "Ðазвание: "
+
+#~ msgid "Value: "
+#~ msgstr "Значение: "
+
+#~ msgid "GnuCap"
+#~ msgstr "GnuCap"
+
+#~ msgid "NgSpice"
+#~ msgstr "NgSpice"
+
+#~ msgid "Parser"
+#~ msgstr "Ðнализатор"
+
+#~ msgid "<b>Format</b>"
+#~ msgstr "<b>Формат</b>"
+
+#~ msgid "<b>Size</b>"
+#~ msgstr "<b>Размер</b>"
+
+#~ msgid "Height : "
+#~ msgstr "Ð’Ñ‹Ñота : "
+
+#~ msgid "Plot Export"
+#~ msgstr "ЭкÑпорт диаграммы"
+
+#~ msgid "Portable Network Graphics (png)"
+#~ msgstr "ПереноÑÐ¸Ð¼Ð°Ñ ÑÐµÑ‚ÐµÐ²Ð°Ñ Ð³Ñ€Ð°Ñ„Ð¸ÐºÐ° (png)"
+
+#~ msgid "Postscript (ps)"
+#~ msgstr "Postscript (ps)"
+
+#~ msgid "Width : "
+#~ msgstr "Ширина : "
diff --git a/po/sv.po b/po/sv.po
new file mode 100644
index 0000000..7fc8755
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,1480 @@
+# translation of sv.po to Svenska
+# Oregano
+# Copyright (C) 1999-2001 Richard Hult
+# Richard Hult <rhult@codefactory.se>, 1999-2001.
+# Peter Landgren <peter.talken@telia.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sv\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-11 02:36-0300\n"
+"PO-Revision-Date: 2005-10-22 14:47+0200\n"
+"Last-Translator: Peter Landgren <peter.talken@telia.com>\n"
+"Language-Team: Svenska <sv@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:1
+msgid "<b>AC Analysis Options</b>"
+msgstr "<b>AC-analysalternativ</b>"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:2
+msgid "<b>Type</b>"
+msgstr "<b>Typ</b>"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:3
+msgid "Current"
+msgstr "Aktuell"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:4
+msgid "Edit Clamp properties"
+msgstr "Ändra mätpunktsgenskaper"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:5
+msgid "Imaginary part"
+msgstr "Imaginär del"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:6
+msgid "Magnitude"
+msgstr "Magnitud"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:7
+msgid "Phase"
+msgstr "Fas"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:8
+msgid "Real part"
+msgstr "Realdel"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:9
+msgid "Use decibel scale"
+msgstr "Använd decibelskala"
+
+#: ../data/dialogs/clamp-properties-dialog.glade2.h:10
+msgid "Voltage"
+msgstr "Spänning"
+
+#: ../data/dialogs/log-window.glade2.h:1
+msgid "Clear"
+msgstr "Töm"
+
+#: ../data/dialogs/log-window.glade2.h:2
+msgid "Oregano Log Window"
+msgstr "Oregano Loggfönster"
+
+#: ../data/dialogs/page-properties.glade2.h:1
+msgid "<b>Alignment</b>"
+msgstr "<b>Inrättning</b>"
+
+#: ../data/dialogs/page-properties.glade2.h:2
+msgid "Center Horizontally"
+msgstr "Centrera horisontellt"
+
+#: ../data/dialogs/page-properties.glade2.h:3
+msgid "Center Vertically"
+msgstr "Centrera vertikalt"
+
+#: ../data/dialogs/page-properties.glade2.h:4
+msgid "Fit to page"
+msgstr "Anpassa till sida"
+
+#: ../data/dialogs/page-properties.glade2.h:5
+msgid "Print Properties"
+msgstr "Utskriftsegenskaper"
+
+#: ../data/dialogs/part-browser.glade2.h:1
+msgid "<b>Preview</b>"
+msgstr "<b>Förhandsgranskning</b>"
+
+#: ../data/dialogs/part-browser.glade2.h:2
+msgid "Library:"
+msgstr "Bibliotek:"
+
+#: ../data/dialogs/part-browser.glade2.h:3 ../src/schematic-view-ui.h:360
+msgid "Parts"
+msgstr "Komponenter"
+
+#: ../data/dialogs/part-browser.glade2.h:4
+msgid "Place"
+msgstr "Placera"
+
+#: ../data/dialogs/part-browser.glade2.h:5
+msgid "Press this button to place the selected part"
+msgstr "Tryck denna knapp för att placera ut vald komponent"
+
+#: ../data/dialogs/part-browser.glade2.h:6
+msgid "Search:"
+msgstr "Sök:"
+
+#: ../data/dialogs/part-browser.glade2.h:7
+msgid "Select which library to use"
+msgstr "Välj bibliotek"
+
+#: ../data/dialogs/part-properties-dialog.glade2.h:1
+msgid "Part Properties"
+msgstr "Komponentegenskaper"
+
+#: ../data/dialogs/plot-window.glade2.h:1
+msgid "<b>Plot</b>"
+msgstr "<b>Diagram</b>"
+
+#: ../data/dialogs/plot-window.glade2.h:2
+msgid "<b>Variables</b>"
+msgstr "<b>Variabler</b>"
+
+#: ../data/dialogs/plot-window.glade2.h:3
+msgid "Plot"
+msgstr "Diagram"
+
+#: ../data/dialogs/plot-window.glade2.h:4
+msgid "Region"
+msgstr ""
+
+#: ../data/dialogs/plot-window.glade2.h:5
+msgid "Shift"
+msgstr ""
+
+#: ../data/dialogs/properties.glade2.h:1
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:1
+msgid " "
+msgstr " "
+
+#: ../data/dialogs/properties.glade2.h:2
+msgid "<b>Comments</b>"
+msgstr "<b>Kommentarer</b>"
+
+#: ../data/dialogs/properties.glade2.h:3
+msgid "Author:"
+msgstr "Författare:"
+
+#: ../data/dialogs/properties.glade2.h:4 ../src/sheet/part-item.c:147
+msgid "Properties"
+msgstr "Egenskaper"
+
+#: ../data/dialogs/properties.glade2.h:5
+msgid "Title:"
+msgstr "Titel:"
+
+#: ../data/dialogs/settings.glade2.h:1
+msgid "\n"
+msgstr "\n"
+
+#: ../data/dialogs/settings.glade2.h:3
+msgid "<b>Data Paths</b>"
+msgstr "<b>Datasökvägar</b>"
+
+#: ../data/dialogs/settings.glade2.h:4
+msgid "<b>Engine</b>"
+msgstr "<b>Motor</b>"
+
+#: ../data/dialogs/settings.glade2.h:5
+msgid "<b>Executable Path</b>"
+msgstr "<b>Programsökvägar</b>"
+
+#: ../data/dialogs/settings.glade2.h:6
+msgid "<b>File Format</b>"
+msgstr "<b>Filformat</b>"
+
+#: ../data/dialogs/settings.glade2.h:7
+msgid "<b>User Interface</b>"
+msgstr "<b>Användargränssnitt</b>"
+
+#: ../data/dialogs/settings.glade2.h:8
+msgid "Automatically show log windows after simulation"
+msgstr "Visa loggfönstret automatiskt efter simulering"
+
+#: ../data/dialogs/settings.glade2.h:9
+msgid "Compress saved files"
+msgstr "Komprimera sparade filer"
+
+#: ../data/dialogs/settings.glade2.h:10
+msgid "Grid size[px] "
+msgstr "Rutnätsstorlek [px]: "
+
+#: ../data/dialogs/settings.glade2.h:11
+msgid "Library"
+msgstr "Bibliotek"
+
+#: ../data/dialogs/settings.glade2.h:12
+msgid "Model"
+msgstr "Modell"
+
+#: ../data/dialogs/settings.glade2.h:13
+msgid "Paths"
+msgstr "Sökvägar"
+
+#: ../data/dialogs/settings.glade2.h:14
+msgid "Preferences"
+msgstr "Preferenser"
+
+#: ../data/dialogs/settings.glade2.h:15
+#, fuzzy
+msgid "Realtime update of selection (slow)"
+msgstr "Realtidsuppdatering av markering (långsamt)"
+
+#: ../data/dialogs/settings.glade2.h:16
+msgid "Remove"
+msgstr "Ta bort"
+
+#: ../data/dialogs/settings.glade2.h:17
+#, fuzzy
+msgid "Select A File"
+msgstr "Markera _allt"
+
+#: ../data/dialogs/settings.glade2.h:18
+msgid "Show the splash screen at application startup"
+msgstr "Visa splash-skärm vid tillämpningsstart"
+
+#: ../data/dialogs/settings.glade2.h:19
+msgid "TODO : Add FINDPATH for Engines"
+msgstr ""
+
+#: ../data/dialogs/settings.glade2.h:20
+msgid "User Interface"
+msgstr "Anvädargrässnitt"
+
+#: ../data/dialogs/sim-settings.glade2.h:1
+msgid "<b>AC</b>"
+msgstr "<b>AC</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:2
+msgid "<b>DC Sweep</b>"
+msgstr "<b>DC Svep</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:3
+msgid "<b>Fourier</b>"
+msgstr "<b>Fourier</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:4
+msgid "<b>Transient</b>"
+msgstr "<b>Transient</b>"
+
+#: ../data/dialogs/sim-settings.glade2.h:5
+msgid "Add new options"
+msgstr ""
+
+#: ../data/dialogs/sim-settings.glade2.h:6
+msgid "Add to list"
+msgstr "Lägg till till lista"
+
+#: ../data/dialogs/sim-settings.glade2.h:7
+msgid "Analysis Options"
+msgstr "Analysalternativ"
+
+#: ../data/dialogs/sim-settings.glade2.h:8
+msgid "Analysis Parameters"
+msgstr "Analysparametrar"
+
+#: ../data/dialogs/sim-settings.glade2.h:9
+msgid "DEC"
+msgstr "DEC"
+
+#: ../data/dialogs/sim-settings.glade2.h:10
+msgid "Frequency"
+msgstr "Frekvens"
+
+#: ../data/dialogs/sim-settings.glade2.h:11
+msgid "LIN"
+msgstr "LIN"
+
+#: ../data/dialogs/sim-settings.glade2.h:12
+msgid "List of outputs"
+msgstr "Utdatalista"
+
+#: ../data/dialogs/sim-settings.glade2.h:13
+msgid "OCT"
+msgstr "OCT"
+
+#: ../data/dialogs/sim-settings.glade2.h:14
+msgid "Points"
+msgstr "Punkter"
+
+#: ../data/dialogs/sim-settings.glade2.h:15
+msgid "Simulation Settings"
+msgstr "Simuleringsinställningar"
+
+#: ../data/dialogs/sim-settings.glade2.h:16
+msgid "Source"
+msgstr "Källa"
+
+#: ../data/dialogs/sim-settings.glade2.h:17
+msgid "Start"
+msgstr "Start"
+
+#: ../data/dialogs/sim-settings.glade2.h:18
+msgid "Step"
+msgstr "Steg"
+
+#: ../data/dialogs/sim-settings.glade2.h:19
+msgid "Stop"
+msgstr "Stopp"
+
+#: ../data/dialogs/sim-settings.glade2.h:20
+msgid "Type"
+msgstr "Typ"
+
+#: ../data/dialogs/sim-settings.glade2.h:21
+msgid "Use Initial Conditions"
+msgstr "Använd startförutsättningar"
+
+#: ../data/dialogs/simulation.glade2.h:1
+#, fuzzy
+msgid "Progress: None"
+msgstr "Förlopp:"
+
+#: ../data/dialogs/simulation.glade2.h:2
+msgid "Simulation"
+msgstr "Simulering"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:2
+msgid "<b>Text</b>"
+msgstr "<b>Text</b>"
+
+#: ../data/dialogs/textbox-properties-dialog.glade2.h:3
+msgid "Text Properties"
+msgstr "Textegenskaper"
+
+#: ../data/dialogs/view-netlist.glade2.h:1
+msgid "Netlist View"
+msgstr "Nätlistvy"
+
+#: ../data/dialogs/view-netlist.glade2.h:2 ../src/schematic-view-ui.h:161
+msgid "_Simulate"
+msgstr "_Simulera"
+
+#: ../src/sheet/part-item.c:147
+msgid "Edit the part's properties"
+msgstr "Ändra komponentens egenskaper"
+
+#: ../src/sheet/part-item.c:616 ../src/sheet/part-item.c:765
+#: ../src/sheet/textbox-item.c:679 ../src/sim-settings.c:775
+#: ../src/settings.c:139 ../src/schematic-view.c:251
+#: ../src/schematic-view.c:317 ../src/schematic-view.c:2431 ../src/plot.c:434
+#: ../src/plot.c:689 ../src/part-browser.c:496 ../src/netlist-editor.c:309
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this."
+msgstr ""
+
+#: ../src/sheet/part-item.c:618 ../src/sheet/part-item.c:626
+#: ../src/sheet/part-item.c:767 ../src/sheet/part-item.c:775
+msgid "Could not create part properties dialog."
+msgstr "Kunde inte skapa dialogen för komponentegenskaper."
+
+#: ../src/sheet/sheet-item.c:307 ../src/schematic-view-ui.h:288
+msgid "Copy"
+msgstr "Kopiera"
+
+#: ../src/sheet/sheet-item.c:307
+msgid "Copy the object to the clipboard"
+msgstr "Kopiera objektet till urklipp"
+
+#: ../src/sheet/sheet-item.c:310 ../src/schematic-view-ui.h:285
+msgid "Cut"
+msgstr "Klipp ut"
+
+#: ../src/sheet/sheet-item.c:310
+msgid "Cut the object to the clipboard"
+msgstr "Klipp ut objektet till urklipp"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete"
+msgstr "Ta bort"
+
+#: ../src/sheet/sheet-item.c:313
+msgid "Delete the object"
+msgstr "Ta bort objektet"
+
+#: ../src/sheet/sheet-item.c:319
+msgid "Rotate"
+msgstr "Rotera"
+
+#: ../src/sheet/sheet-item.c:320
+msgid "Rotate the selected objects 90 degrees clockwise"
+msgstr "Rotera markeringen 90 grader medsols"
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit..."
+msgstr "Redigera..."
+
+#: ../src/sheet/textbox-item.c:99
+msgid "Edit the text"
+msgstr "Redigera texten"
+
+#: ../src/sheet/textbox-item.c:596
+msgid "Label"
+msgstr "Etikett"
+
+#: ../src/sheet/textbox-item.c:681 ../src/sheet/textbox-item.c:690
+#, fuzzy
+msgid "Could not create textbox properties dialog"
+msgstr "Kunde inte skapa dialogen för komponentegenskaper."
+
+#: ../src/simulation.c:102 ../src/simulation.c:109 ../src/simulation.c:115
+#, fuzzy
+msgid "Could not create simulation dialog"
+msgstr "Kunde inte skapa dialogen för simulering."
+
+#: ../src/simulation.c:150
+#, fuzzy, c-format
+msgid "Progress: <b>%s</b>"
+msgstr "Förlopp:"
+
+#: ../src/simulation.c:201
+#, fuzzy
+msgid ""
+"<span weight=\"bold\" size=\"large\">The simulation was aborted due to an "
+"error.</span>\n"
+"\n"
+"Would you like to view the error log?"
+msgstr ""
+"<span weight=\"bold\" size=\"x-large\">Simuleringen avbröts pga ett fel.</"
+"span>\n"
+"Vill du visa loggen med felmeddelanden?"
+
+#: ../src/simulation.c:211
+#, fuzzy
+msgid "The simulation was aborted due to an error"
+msgstr ""
+"<span weight=\"bold\" size=\"x-large\">Simuleringen avbröts pga ett fel.</"
+"span>\n"
+
+#: ../src/sim-settings.c:229
+msgid "Add new option"
+msgstr ""
+
+#: ../src/sim-settings.c:777 ../src/sim-settings.c:784
+#: ../src/sim-settings.c:790
+#, fuzzy
+msgid "Could not create simulation settings dialog"
+msgstr "Kunde inte skapa dialogen för simulering."
+
+#: ../src/sim-settings.c:814
+msgid "Option"
+msgstr "Alternativ"
+
+#: ../src/sim-settings.c:816
+msgid "Value"
+msgstr "Värde"
+
+#: ../src/settings.c:141 ../src/settings.c:148 ../src/settings.c:154
+#, fuzzy
+msgid "Could not create settings dialog"
+msgstr "Kunde inte skapa dialogen för simulering."
+
+#: ../src/settings.c:215
+msgid "Engine executable not found"
+msgstr ""
+
+#: ../src/settings.c:216
+msgid "The engine is unable to locate the external program."
+msgstr ""
+
+#: ../src/schematic-view.c:254
+#, fuzzy
+msgid "Could not create properties dialog"
+msgstr "Kunde inte skapa dialogen för komponentegenskaper."
+
+#: ../src/schematic-view.c:320
+#, fuzzy
+msgid "Could not create the page properties dialog"
+msgstr "Kunde inte skapa dialogen för komponentegenskaper."
+
+#: ../src/schematic-view.c:383
+msgid "Could not load file"
+msgstr ""
+
+#: ../src/schematic-view.c:410 ../src/schematic-view.c:1304
+#: ../src/schematic-view.c:1312
+msgid "Untitled.oregano"
+msgstr "Namnlös.oregano"
+
+#: ../src/schematic-view.c:415
+#, fuzzy
+msgid "Could not save schematic file"
+msgstr "Kunde inte skapa dialogen för simulering."
+
+#: ../src/schematic-view.c:765 ../src/netlist-editor.c:225
+#: ../src/netlist-editor.c:436
+#, fuzzy
+msgid "Could not create a netlist"
+msgstr "Kunde inte skapa komponentväljaren."
+
+#: ../src/schematic-view.c:768 ../src/netlist-editor.c:229
+#: ../src/netlist-editor.c:439
+msgid "An unexpected error has occurred"
+msgstr ""
+
+#: ../src/schematic-view.c:1313
+msgid "Untitled.netlist"
+msgstr "Namnlös.netlist"
+
+#: ../src/schematic-view.c:1504
+#, c-format
+msgid ""
+"<span weight=\"bold\" size=\"large\">Save changes to schematic %s before "
+"closing?</span>\n"
+"\n"
+"If you don't save, all changes since you last saved will be permanently lost."
+msgstr ""
+
+#: ../src/schematic-view.c:1516
+msgid "Close _without Saving"
+msgstr ""
+
+#: ../src/schematic-view.c:2434 ../src/schematic-view.c:2445
+#, fuzzy
+msgid "Could not create the log window"
+msgstr "Kunde inte skapa diagramfönster."
+
+#: ../src/schematic-view-ui.h:38
+msgid "_New"
+msgstr "_Nytt"
+
+#: ../src/schematic-view-ui.h:38 ../src/schematic-view-ui.h:264
+msgid "Create a new schematic"
+msgstr "Skapa nytt schema"
+
+#: ../src/schematic-view-ui.h:47
+#, fuzzy
+msgid "Page Properties"
+msgstr "Komponentegenskaper"
+
+#: ../src/schematic-view-ui.h:48
+msgid "Set print properties"
+msgstr "Sätt utskriftsegenskaper"
+
+#: ../src/schematic-view-ui.h:56 ../src/print.c:367 ../src/plot.c:150
+#: ../src/netlist-editor.c:193
+msgid "Print Preview"
+msgstr "Förhandsgranskning"
+
+#: ../src/schematic-view-ui.h:57
+msgid "Preview the schematic before printing"
+msgstr "Granska schemat innan utskrift"
+
+#: ../src/schematic-view-ui.h:65
+msgid "Schematic _Properties..."
+msgstr "Schemats _egenskaper..."
+
+#: ../src/schematic-view-ui.h:66
+msgid "Modify the schematic's properties"
+msgstr "Ändra schemats egenskaper"
+
+#: ../src/schematic-view-ui.h:95
+msgid "_Delete"
+msgstr "_Ta bort"
+
+#: ../src/schematic-view-ui.h:96
+msgid "Delete the selection"
+msgstr "Ta bort de markerade objekten"
+
+#: ../src/schematic-view-ui.h:102
+msgid "_Rotate"
+msgstr "_Rotera"
+
+#: ../src/schematic-view-ui.h:103
+msgid "Rotate the selection clockwise"
+msgstr "Rotera markeringen medsols"
+
+#: ../src/schematic-view-ui.h:109
+#, fuzzy
+msgid "Flip _horizontally"
+msgstr "Centrera horisontellt"
+
+#: ../src/schematic-view-ui.h:110
+#, fuzzy
+msgid "Flip the selection horizontally"
+msgstr "Kopiera markeringen till urklipp"
+
+#: ../src/schematic-view-ui.h:116
+#, fuzzy
+msgid "Flip _vertically"
+msgstr "Centrera vertikalt"
+
+#: ../src/schematic-view-ui.h:117
+#, fuzzy
+msgid "Flip the selection vertically"
+msgstr "Ta bort de markerade objekten"
+
+#: ../src/schematic-view-ui.h:124
+#, fuzzy
+msgid "Select _all"
+msgstr "A_vmarkera"
+
+#: ../src/schematic-view-ui.h:125
+msgid "Select all objects on the sheet"
+msgstr "Markera alla objekt på schemat"
+
+#: ../src/schematic-view-ui.h:131
+#, fuzzy
+msgid "Deselect a_ll"
+msgstr "A_vmarkera"
+
+#: ../src/schematic-view-ui.h:132
+msgid "Deselect the selected objects"
+msgstr "Avmarkera alla objekt"
+
+#: ../src/schematic-view-ui.h:140
+#, fuzzy
+msgid "_Object Properties..."
+msgstr "Objekt_egenskaper..."
+
+#: ../src/schematic-view-ui.h:141
+msgid "Modify the object's properties"
+msgstr "Ändra objektets egenskaper"
+
+#: ../src/schematic-view-ui.h:146
+msgid "Simulation S_ettings..."
+msgstr "Simulerings_inställningar..."
+
+#: ../src/schematic-view-ui.h:147
+msgid "Edit the simulation settings"
+msgstr "Ändra simuleringsinställningarna"
+
+#: ../src/schematic-view-ui.h:162
+msgid "Run a simulation"
+msgstr "_Kör en simulering"
+
+#: ../src/schematic-view-ui.h:169
+msgid "_Generate netlist"
+msgstr "_Generera nätlista"
+
+#: ../src/schematic-view-ui.h:170
+msgid "Generate a netlist"
+msgstr "Generera en nätlista"
+
+#: ../src/schematic-view-ui.h:177
+msgid "50%"
+msgstr "50%"
+
+#: ../src/schematic-view-ui.h:178
+msgid "Set the zoom factor to 50%"
+msgstr "Sätt zoomfaktorn till 50%"
+
+#: ../src/schematic-view-ui.h:179
+msgid "75%"
+msgstr "75%"
+
+#: ../src/schematic-view-ui.h:180
+msgid "Set the zoom factor to 75%"
+msgstr "Sätt zoomfaktorn till 75%"
+
+#. GNOMEUIINFO_ITEM_NONE(N_("50%"),
+#. N_("Set the zoom factor to 50%"), plot_zoom_50_cmd),
+#. GNOMEUIINFO_ITEM_NONE(N_("75%"),
+#. N_("Set the zoom factor to 75%"), plot_zoom_75_cmd),
+#: ../src/schematic-view-ui.h:181 ../src/plot.c:167
+msgid "100%"
+msgstr "100%"
+
+#: ../src/schematic-view-ui.h:182 ../src/plot.c:168
+msgid "Set the zoom factor to 100%"
+msgstr "Sätt zoomfaktorn till 100%"
+
+#: ../src/schematic-view-ui.h:184
+msgid "125%"
+msgstr "125%"
+
+#: ../src/schematic-view-ui.h:185
+msgid "Set the zoom factor to 125%"
+msgstr "Sätt zoomfaktorn till 125%"
+
+#: ../src/schematic-view-ui.h:186
+msgid "150%"
+msgstr "150%"
+
+#: ../src/schematic-view-ui.h:187
+msgid "Set the zoom factor to 150%"
+msgstr "Sätt zoomfaktorn till 150%"
+
+#: ../src/schematic-view-ui.h:196
+msgid "Zoom"
+msgstr "Zoom"
+
+#: ../src/schematic-view-ui.h:202
+msgid "_Log"
+msgstr "_Logg"
+
+#: ../src/schematic-view-ui.h:202
+msgid "View the latest simulation log"
+msgstr "Visa senaste simuleringsloggen"
+
+#: ../src/schematic-view-ui.h:205
+#, fuzzy
+msgid "_Node labels"
+msgstr "_Visa nodetiketter"
+
+#: ../src/schematic-view-ui.h:205
+msgid "Show or hide node labels"
+msgstr "Visa eller göm nodetiketter"
+
+#: ../src/schematic-view-ui.h:207
+#, fuzzy
+msgid "N_etlist"
+msgstr "Nätlistfil"
+
+#: ../src/schematic-view-ui.h:208
+#, fuzzy
+msgid "View the circuit netlist"
+msgstr "Titta på en nätlista"
+
+#: ../src/schematic-view-ui.h:240
+msgid "_Contents"
+msgstr "_Innehåll"
+
+#: ../src/schematic-view-ui.h:240
+msgid "Show program help"
+msgstr "Visa programhjälp"
+
+#: ../src/schematic-view-ui.h:254
+msgid "_Tools"
+msgstr "_Verktyg"
+
+#: ../src/schematic-view-ui.h:264
+msgid "New"
+msgstr "Nytt"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open"
+msgstr "Öppna"
+
+#: ../src/schematic-view-ui.h:267
+msgid "Open an existing schematic"
+msgstr "Öppna ett existerande schema"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save"
+msgstr "Spara"
+
+#: ../src/schematic-view-ui.h:270
+msgid "Save the schematic"
+msgstr "Spara schemat"
+
+#: ../src/schematic-view-ui.h:285
+msgid "Cut the selection to the clipboard"
+msgstr "Klipp ut markeringen till urklipp"
+
+#: ../src/schematic-view-ui.h:288
+msgid "Copy the selection to the clipboard"
+msgstr "Kopiera markeringen till urklipp"
+
+#: ../src/schematic-view-ui.h:291 ../src/schematic-view-ui.h:404
+msgid "Paste"
+msgstr "Klistra in"
+
+#: ../src/schematic-view-ui.h:291
+#, fuzzy
+msgid "Paste the clipboard"
+msgstr "Klistra in från urklipp"
+
+#: ../src/schematic-view-ui.h:301
+msgid "Arrow"
+msgstr "Pekare"
+
+#: ../src/schematic-view-ui.h:302
+msgid "Select, move and modify objects"
+msgstr "Markera, flytta och påverka objekt"
+
+#: ../src/schematic-view-ui.h:307
+msgid "Text"
+msgstr "Text"
+
+#: ../src/schematic-view-ui.h:308
+msgid "Put text on the schematic"
+msgstr "Placera ut text på schemat"
+
+#: ../src/schematic-view-ui.h:313
+msgid "Wires"
+msgstr "Ledningar"
+
+#: ../src/schematic-view-ui.h:314
+msgid "Draw wires"
+msgstr "Rita ledningar"
+
+#: ../src/schematic-view-ui.h:330
+msgid "Add Voltage Clamp"
+msgstr "Lägg till en spänningsmätpunkt"
+
+#: ../src/schematic-view-ui.h:331
+msgid "Add a Voltage test clamp"
+msgstr "Lägg till en spänningsmätpunkt"
+
+#: ../src/schematic-view-ui.h:336
+msgid "Simulate"
+msgstr "Simulera"
+
+#: ../src/schematic-view-ui.h:337
+msgid "Run a simulation for the current schematic"
+msgstr "Kör en simulering för det aktuella schemat"
+
+#: ../src/schematic-view-ui.h:342 ../src/schematic-view-ui.h:343
+msgid "Simulation settings"
+msgstr "Simuleringsinställningar"
+
+#: ../src/schematic-view-ui.h:361
+msgid "Show or hide the part browser"
+msgstr "Visa eller göm komponentväljaren"
+
+#: ../src/schematic-view-ui.h:366
+msgid "Grid"
+msgstr "Rutnät"
+
+#: ../src/schematic-view-ui.h:367
+msgid "Turn on/off the grid"
+msgstr "Stäng av/sätt på rutnätet"
+
+#: ../src/schematic-view-ui.h:372 ../src/schematic-view-ui.h:373
+msgid "Zoom in"
+msgstr "Zooma in"
+
+#: ../src/schematic-view-ui.h:378 ../src/schematic-view-ui.h:379
+msgid "Zoom out"
+msgstr "Zooma ut"
+
+#: ../src/schematic-view-ui.h:405
+msgid "Paste the contents of the clipboard to the sheet"
+msgstr "Klistra in innehållet i urklipp på bladet"
+
+#: ../src/print.c:297
+msgid "Print"
+msgstr "Utskrift"
+
+#: ../src/print.c:304
+msgid "Pages"
+msgstr "Sidor"
+
+#: ../src/print.c:339
+#, fuzzy
+msgid "Can't get paper info! .. getting default!"
+msgstr "Kan ej få pappersinformation .. tar standardvärden!"
+
+#: ../src/print.c:353
+msgid "Could not create font for printing."
+msgstr "Kunde inte skapa typsnitt för utskrift."
+
+#: ../src/print.c:372
+msgid "Printing failed."
+msgstr "Utskrift misslyckades."
+
+#: ../src/plot.c:61 ../src/plot.c:62
+msgid "Sans 10"
+msgstr "Sans 10"
+
+#: ../src/plot.c:63
+msgid "Sans 8"
+msgstr "Sans 8"
+
+#: ../src/plot.c:151
+msgid "Preview the plot before printing"
+msgstr "Granska diagrammet före utskrift"
+
+#: ../src/plot.c:153
+msgid "Export plot"
+msgstr "Exportera diagram"
+
+#: ../src/plot.c:154
+msgid "Show the export menu"
+msgstr ""
+
+#: ../src/plot.c:155
+#, fuzzy
+msgid "Add Function"
+msgstr "Överföringsfunktion"
+
+#: ../src/plot.c:156
+msgid "Add new function to the graph"
+msgstr ""
+
+#: ../src/plot.c:180
+msgid "_Preferences..."
+msgstr "_Inställningar..."
+
+#: ../src/plot.c:182
+msgid "Show crosshairs"
+msgstr "Visa hårkors"
+
+#: ../src/plot.c:183
+msgid "_Zoom"
+msgstr "_Zoom"
+
+#: ../src/plot.c:190
+msgid "Schematic Plot"
+msgstr "Schemautskrift"
+
+#: ../src/plot.c:196
+msgid "_File"
+msgstr "_Arkiv"
+
+#: ../src/plot.c:197
+msgid "_Plot"
+msgstr "_Diagram"
+
+#. Simulation failed?
+#: ../src/plot.c:330
+msgid "The simulation produced no data!!\n"
+msgstr ""
+
+#: ../src/plot.c:340 ../src/plot.c:574
+#, c-format
+msgid "Plot - %s"
+msgstr "Diagram - %s"
+
+#: ../src/plot.c:349
+#, fuzzy
+msgid "Nodes"
+msgstr "Modell"
+
+#: ../src/plot.c:352 ../src/plot.c:636
+#, fuzzy
+msgid "Functions"
+msgstr "Överföringsfunktion"
+
+#: ../src/plot.c:424
+#, fuzzy
+msgid "Oregano - Plot"
+msgstr "Oregano - Diagram"
+
+#: ../src/plot.c:436 ../src/plot.c:443
+msgid "Could not create plot window."
+msgstr "Kunde inte skapa diagramfönster."
+
+#: ../src/plot.c:659
+msgid "TRANSFER"
+msgstr ""
+
+#: ../src/plot.c:691 ../src/plot.c:698
+msgid "Could not create plot export window."
+msgstr "Kunde inte skapa diagramexportfönster."
+
+#. if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (export_png)))
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PNG;
+#. else
+#. format = GTK_CAIRO_PLOT_VIEW_SAVE_PS;
+#: ../src/plot.c:719
+msgid "Save PNG"
+msgstr "Spara PNG"
+
+#: ../src/part-browser.c:135 ../src/part-browser.c:614
+msgid ""
+"Gtk version 2.2 does not support GtkTreeModelFilter...\n"
+"Filtering disable!"
+msgstr ""
+"Gtk version 2.2 stöder ej GtkTreeModelFilter...\n"
+"Filtrering urkopplad!"
+
+#: ../src/part-browser.c:187 ../src/part-browser.c:401
+msgid "Unable to load required part"
+msgstr ""
+
+#: ../src/part-browser.c:499 ../src/part-browser.c:507
+#, fuzzy
+msgid "Could not create part browser"
+msgstr "Kunde inte skapa komponentväljaren."
+
+#: ../src/oregano-config.c:123
+#, c-format
+msgid "Loading %s ..."
+msgstr "Laddar %s ..."
+
+#: ../src/oregano-config.c:164
+#, fuzzy, c-format
+msgid "Could not read the parts library: %s "
+msgstr "Kunde inte skapa komponentväljaren."
+
+#: ../src/oregano-config.c:166
+#, fuzzy
+msgid ""
+"The file is probably corrupt. Please reinstall the parts\n"
+"library or Oregano and try again."
+msgstr ""
+"<span weight=\"bold\" size=\"x-large\">Kunde inte läsa komponentbiblioteket:%"
+"s</span>\n"
+"\n"
+"Filen är troligen korrupt. Var vänlig installera\n"
+"om komponentbiblioteket eller Oregano och försök\n"
+"igen."
+
+#: ../src/engines/netlist.c:436
+msgid "No ground node. Aborting.\n"
+msgstr ""
+
+#: ../src/engines/netlist.c:441
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have a ground node and try again."
+msgstr ""
+
+#: ../src/engines/netlist.c:450
+msgid "No test clamps found. Aborting.\n"
+msgstr ""
+
+#: ../src/engines/netlist.c:455
+msgid ""
+"Possibly due to a faulty circuit schematic. Please check that\n"
+"you have one o more test clamps and try again."
+msgstr ""
+
+#: ../src/engines/gnucap.c:299
+#, fuzzy
+msgid "### Too few or none analysis found ###\n"
+msgstr ""
+"\n"
+"\n"
+"### För få eller ingen analys funnen ###\n"
+"\n"
+
+#: ../src/engines/gnucap.c:366
+msgid "Unable to execute GnuCap."
+msgstr ""
+
+#: ../src/engines/gnucap.c:383
+#, fuzzy
+msgid "None"
+msgstr "Modell"
+
+#: ../src/engines/gnucap.c:586
+msgid "time"
+msgstr ""
+
+#: ../src/engines/gnucap.c:591 ../src/engines/gnucap.c:601
+#, fuzzy
+msgid "voltage"
+msgstr "Spänning"
+
+#: ../src/engines/gnucap.c:596
+#, fuzzy
+msgid "frequency"
+msgstr "Frekvens"
+
+#: ../src/engines/gnucap.c:645
+#, fuzzy
+msgid "Unknown analysis"
+msgstr "Okänd analys"
+
+#: ../src/engines/gnucap.c:693
+#, fuzzy
+msgid "abort"
+msgstr "Start"
+
+#: ../src/engines/engine.c:32
+msgid "Operating Point"
+msgstr "Stationärtillstånd"
+
+#: ../src/engines/engine.c:33
+msgid "Transient Analysis"
+msgstr "Transientanalys"
+
+#: ../src/engines/engine.c:34
+msgid "DC transfer characteristic"
+msgstr "DC-överföringskarakteristik"
+
+#: ../src/engines/engine.c:35
+msgid "AC Analysis"
+msgstr "AC-analys"
+
+#: ../src/engines/engine.c:36
+#, fuzzy
+msgid "Transfer Function"
+msgstr "Överföringsfunktion"
+
+#: ../src/engines/engine.c:37
+msgid "Distortion Analysis"
+msgstr "Distortionsanalys"
+
+#: ../src/engines/engine.c:38
+msgid "Noise Analysis"
+msgstr "Brusanalys"
+
+#: ../src/engines/engine.c:39
+msgid "Pole-Zero Analysis"
+msgstr "Nollpolsanalys"
+
+#: ../src/engines/engine.c:40
+msgid "Sensitivity Analysis"
+msgstr "Känslighetsanalys"
+
+#: ../src/engines/engine.c:41
+msgid "Unknown Analysis"
+msgstr "Okänd analys"
+
+#: ../src/netlist-editor.c:172
+#, c-format
+msgid "Netlist for %s"
+msgstr "Nätlista för %s"
+
+#: ../src/netlist-editor.c:173
+#, c-format
+msgid "Author : %s"
+msgstr "Författare : %s"
+
+#: ../src/netlist-editor.c:186
+msgid "Page %N of %Q"
+msgstr "Sida %N av %Q"
+
+#: ../src/netlist-editor.c:238 ../src/netlist-editor.c:274
+#, c-format
+msgid "The file %s could not be saved"
+msgstr ""
+
+#: ../src/netlist-editor.c:239 ../src/netlist-editor.c:275
+#, fuzzy
+msgid "Could not save temporary netlist file"
+msgstr "Kunde inte skapa dialogen för komponentegenskaper."
+
+#: ../src/netlist-editor.c:311
+#, fuzzy
+msgid "Could not create the netlist dialog"
+msgstr "Kunde inte skapa dialogen för komponentegenskaper."
+
+#. gettext support
+#: ../src/netlist-editor.c:390
+#, c-format
+msgid "The file %s could not be found."
+msgstr ""
+
+#: ../src/netlist-editor.c:391
+#, fuzzy
+msgid "Could not find the required file"
+msgstr ""
+"Hittade inte begärd fil:\n"
+"%s"
+
+#: ../src/main.c:107
+msgid "Enables some debugging functions"
+msgstr "Aktiverar felsökningsfunktioner"
+
+#: ../src/main.c:107
+msgid "LEVEL"
+msgstr "NIVÅ"
+
+#: ../src/main.c:132
+msgid ""
+"You seem to be running Oregano without\n"
+"having it installed properly on your system.\n"
+"\n"
+"Please install Oregano and try again."
+msgstr ""
+"Du verkar köra Oregano utan att ha\n"
+"installerat det korrekt på systemet.\n"
+"\n"
+"Var vänlig installera Oregano och försök igen."
+
+#: ../src/main.c:155
+msgid ""
+"Could not find a parts library.\n"
+"\n"
+"This is probably due to a faulty installation\n"
+"of Oregano. Please check your installation."
+msgstr ""
+"Kunde inte hitta komponentbiblioteket.\n"
+"\n"
+"Detta beror troligen på en felaktig installation\n"
+"av Oregano. Var vänlig kontrollera din installation."
+
+#: ../src/main.c:212
+msgid "Welcome to Oregano"
+msgstr "Välkommen till Oregano"
+
+#: ../src/load-schematic.c:261
+msgid "Bad file format."
+msgstr ""
+
+#: ../src/load-schematic.c:271
+msgid "Unknown parser error."
+msgstr ""
+
+#: ../src/load-library.c:149
+#, c-format
+msgid "Could not find the requested symbol: %s\n"
+msgstr "Kunde inte hitta den efterfrågade symbolen: %s\n"
+
+#: ../src/load-library.c:165
+#, c-format
+msgid "Could not find the requested part: %s\n"
+msgstr "Kunde inte hitta komponenten: %s\n"
+
+#: ../src/file.c:50 ../src/file.c:90
+msgid "Oregano Files"
+msgstr "Oreganofiler"
+
+#: ../src/file.c:52 ../src/file.c:92
+msgid "All Files"
+msgstr "Alla filer"
+
+#: ../src/file.c:55
+msgid "Open File"
+msgstr "Öppna fil"
+
+#: ../src/file.c:95
+msgid "Save File"
+msgstr "Spara fil"
+
+#: ../src/file.c:145
+msgid "Netlist File"
+msgstr "Nätlistfil"
+
+#: ../src/file.c:221
+msgid "Open file"
+msgstr "Öppna fil"
+
+#: ../src/file.c:271
+msgid "Save schematic as"
+msgstr "Spara schemat som"
+
+#: ../src/file.c:336
+msgid "Netlist filename"
+msgstr "Filnamn för nätlista"
+
+#: ../src/dialogs.c:126
+#, fuzzy
+msgid ""
+"(c) 2003-2006 LUGFi\n"
+"(c) 1999-2001 Richard Hult"
+msgstr ""
+"(c) 2003-2004 LUGFi\n"
+"(c) 1999-2001 Richard Hult"
+
+#: ../src/dialogs.c:141
+msgid "Schematic capture and circuit simulation.\n"
+msgstr "Kretsschemadesign och simulering.\n"
+
+#: ../src/model/schematic.c:584
+#, c-format
+msgid "File %s does not exists."
+msgstr ""
+
+#: ../src/model/schematic.c:592 ../src/model/schematic.c:630
+#, c-format
+msgid "Unknown file format for %s."
+msgstr ""
+
+#: ../src/model/schematic.c:611
+msgid "Load fails!."
+msgstr ""
+
+#: ../src/plot-add-function.c:48
+#, c-format
+msgid ""
+"The file %s could not be found. You might need to reinstall Oregano to fix "
+"this"
+msgstr ""
+
+#: ../src/plot-add-function.c:50 ../src/plot-add-function.c:57
+#, fuzzy
+msgid "Could not create plot window"
+msgstr "Kunde inte skapa diagramfönster."
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the required file:\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Hittade inte begärd fil:\n"
+#~ "</span>%s\n"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "s"
+#~ msgstr "s"
+
+#~ msgid "Hz"
+#~ msgstr "Hz"
+
+#~ msgid "A"
+#~ msgstr "A"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the required file:</"
+#~ "span>\n"
+#~ "%s"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Hittade inte den begärda filen:</"
+#~ "span>\n"
+#~ "%s"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not save Schematic file\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Kunde inte spara schemafil\n"
+#~ "</span>%s\n"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create a netlist</span>\n"
+#~ "\n"
+#~ "%s"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Kunde inte skapa en nätlista</"
+#~ "span>\n"
+#~ "\n"
+#~ "%s"
+
+#~ msgid "<span weight=\"bold\" size=\"x-large\">Unspected error!!!</span>"
+#~ msgstr "<span weight=\"bold\" size=\"x-large\">Oväntat fel!!!</span>"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Schematic %s has unsaved changes</"
+#~ "span>\n"
+#~ "\n"
+#~ "Do you want to save them?"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Schemat %s har osparade ändringar</"
+#~ "span>\n"
+#~ "\n"
+#~ "Vill du spara dem?"
+
+#~ msgid "<span weight=\"bold\">Could not create log window.</span>"
+#~ msgstr "<span weight=\"bold\">Kunde inte skapa loggfönster.</span>"
+
+#~ msgid "_View netlist"
+#~ msgstr "_Titta på nätlista"
+
+#~ msgid "View plot"
+#~ msgstr "_Visa diagram"
+
+#~ msgid "View plot "
+#~ msgstr "Visa diagram"
+
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create settings dialog.</"
+#~ "span>"
+#~ msgstr ""
+#~ "<span size=\"x-large\" weight=\"bold\">Kunde inte skapa "
+#~ "inställningsdialog.</span>"
+
+#~ msgid ""
+#~ "<span size=\"x-large\" weigth=\"bold\">Transient analysis</span>\n"
+#~ "\n"
+#~ "Start time must be less than stop time."
+#~ msgstr ""
+#~ "<span size=\"x-large\" weigth=\"bold\">Transientanalys</span>\n"
+#~ "\n"
+#~ "Starttid måste vara mindre än än sluttid."
+
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create simulation "
+#~ "settings dialog.</span>"
+#~ msgstr ""
+#~ "<span size=\"x-large\" weight=\"bold\">Kunde inte skapa "
+#~ "simuleringsinställningsdialog.</span>"
+
+#~ msgid ""
+#~ "<span size=\"x-large\" weight=\"bold\">Could not create simulation "
+#~ "settings dialog.</sapn>"
+#~ msgstr ""
+#~ "<span size=\"x-large\" weight=\"bold\">Kunde inte skapa "
+#~ "simuleringsinställningsdialog.</span>"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not find the simulation "
+#~ "executable</span>\n"
+#~ "\n"
+#~ "This probably means that you have not configured Oregano properly."
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Kunde inte hitta "
+#~ "simulatorprogrammet:</span>\n"
+#~ "%s\n"
+#~ "\n"
+#~ "Detta beror troligen på att du inte har ställt\n"
+#~ "in Oregano korrekt"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">You have not entered a simulation "
+#~ "executable.</span>\n"
+#~ "\n"
+#~ "Please choose Settings and specify whichprogram to use for simulations."
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Du har inte angett ett "
+#~ "simuleringsprogram.</span>\n"
+#~ "Var vänlig välj Inställningar och ange vilket\n"
+#~ "program som ska användas."
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not create simulation dialog."
+#~ "</span>"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Kunde inte skapa dialogen för "
+#~ "simulering.</span>"
+
+#~ msgid ""
+#~ "<span weight=\"bold\">Could not find the required file:\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "<span weight=\"bold\">Kunde inte hitta den begärda filen:\n"
+#~ "</span>%s\n"
+
+#~ msgid ""
+#~ "<span weight=\"bold\">Could not create textbox properties dialog.</span>"
+#~ msgstr ""
+#~ "<span weight=\"bold\">Kunde inte skapa dialogen för textegenskaper.</span>"
+
+#~ msgid ""
+#~ "<span weight=\"bold\" size=\"x-large\">Could not save temporary netlist "
+#~ "file:\n"
+#~ "</span>%s\n"
+#~ msgstr ""
+#~ "<span weight=\"bold\" size=\"x-large\">Kunde inte sparar tillfällig "
+#~ "nätlistfil:\n"
+#~ "</span>%s\n"
+
+#~ msgid " "
+#~ msgstr " "
+
+#~ msgid "*"
+#~ msgstr "*"
+
+#~ msgid "Name: "
+#~ msgstr "Namn: "
+
+#~ msgid "Value: "
+#~ msgstr "Värde: "
+
+#~ msgid "(0, 0)"
+#~ msgstr "(0, 0)"
+
+#~ msgid "window"
+#~ msgstr "fönster"
+
+#~ msgid "./oregano_parser.pl"
+#~ msgstr "./oregano_parser.pl"
+
+#~ msgid "GnuCap"
+#~ msgstr "GnuCap"
+
+#~ msgid "NgSpice"
+#~ msgstr "NgSpice"
+
+#~ msgid "Parser"
+#~ msgstr "Satsanalysera"
+
+#~ msgid "Oregano"
+#~ msgstr "Oregano"
+
+#~ msgid "ABCDEFGHIJK abcdefghi"
+#~ msgstr "ABCDEFGHIJK abcdefghi"
+
+#~ msgid "<b>Format</b>"
+#~ msgstr "<b>Format</b>"
+
+#~ msgid "<b>Size</b>"
+#~ msgstr "<b>Storlek</b>"
+
+#~ msgid "Height : "
+#~ msgstr "Höjd : "
+
+#~ msgid "Plot Export"
+#~ msgstr "Diagramexport"
+
+#~ msgid "Portable Network Graphics (png)"
+#~ msgstr "Portable Network Graphics (png)"
+
+#~ msgid "Postscript (ps)"
+#~ msgstr "Postscript (ps)"
+
+#~ msgid "Width : "
+#~ msgstr "Bredd : "
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..2222e14
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,102 @@
+SUBDIRS = \
+ gplot \
+ engines \
+ model \
+ sheet \
+ stock \
+ pixmaps
+
+oreganodir = $(datadir)/oregano
+
+INCLUDES = \
+ -DVERSION="\"$(VERSION)\"" \
+ -DPACKAGE=\""oregano\"" \
+ -DGETTEXT_PACKAGE=\""oregano\"" \
+ -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
+ -I$(includedir) $(GNOME_INCLUDEDIR) \
+ -DOREGANO_GLADEDIR=\""$(oreganodir)/glade"\" \
+ -DOREGANO_LIBRARYDIR=\""$(oreganodir)/libraries"\" \
+ -DOREGANO_MODELDIR=\""$(oreganodir)/models"\" \
+ -DOREGANO_LANGDIR=\""$(oreganodir)/language-specs"\" \
+ -DDATADIR=\""$(datadir)"\" \
+ -I./sheet \
+ -I./gplot \
+ -I./model \
+ -I./engines \
+ -I$(top_srcdir)/data/glade \
+ -I. \
+ $(OREGANO_CFLAGS)
+
+bin_PROGRAMS = oregano
+
+OREGANO_LIBS += gplot/libgplot.a \
+ engines/libengines.a \
+ model/libmodel.a \
+ sheet/libsheet.a
+
+oregano_PIXMAPS = \
+ plot.xpm \
+ tool_wire.xpm \
+ tool_part.xpm \
+ tool_arrow.xpm \
+ tool_text.xpm \
+ mini_icon.xpm \
+ logo.png
+
+oregano_SOURCES = \
+ clipboard.h \
+ clipboard.c \
+ create-wire.c \
+ create-wire.h \
+ cursors.c \
+ cursors.h \
+ dialogs.c \
+ dialogs.h \
+ errors.c \
+ errors.h \
+ file.c \
+ file.h \
+ file-manager.c \
+ file-manager.h \
+ load-common.h \
+ load-library.c \
+ load-library.h \
+ load-schematic.c \
+ load-schematic.h \
+ main.c \
+ main.h \
+ netlist-editor.c \
+ netlist-editor.h \
+ oregano-config.c \
+ oregano-config.h \
+ oregano-utils.c \
+ oregano-utils.h \
+ part-browser.c \
+ part-browser.h \
+ plot.c \
+ plot.h \
+ plot-add-function.c \
+ plot-add-function.h \
+ save-schematic.c \
+ save-schematic.h \
+ schematic-view.c \
+ schematic-view.h \
+ schematic-view-menu.h \
+ settings.c \
+ settings.h \
+ sim-settings.c \
+ sim-settings.h \
+ simulation.c \
+ simulation.h \
+ smallicon.c \
+ smallicon.h \
+ splash.h \
+ splash.c \
+ stock.c \
+ stock.h \
+ xml-compat.h \
+ xml-helper.c \
+ xml-helper.h
+
+oregano_LDADD = \
+ $(OREGANO_LIBS)
diff --git a/src/clipboard.c b/src/clipboard.c
new file mode 100644
index 0000000..baf815a
--- /dev/null
+++ b/src/clipboard.c
@@ -0,0 +1,130 @@
+/*
+ * clipboard.c
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#include <glib.h>
+#include "main.h"
+#include "sheet-item.h"
+#include "item-data.h"
+#include "clipboard.h"
+
+struct _ClipboardData {
+ ItemData *item_data;
+ SheetItemClass *item_class;
+};
+
+void
+clipboard_empty (void)
+{
+ GSList *list;
+ ClipboardData *cb_data;
+
+ if (oregano.clipboard == NULL)
+ return;
+
+ for (list = oregano.clipboard; list; list = list->next) {
+ cb_data = list->data;
+
+ g_object_unref (G_OBJECT (cb_data->item_data));
+ g_free (cb_data);
+ }
+
+ g_slist_free (oregano.clipboard);
+ oregano.clipboard = NULL;
+}
+
+gboolean
+clipboard_is_empty (void)
+{
+ if (oregano.clipboard == NULL)
+ return TRUE;
+
+ return g_slist_length (oregano.clipboard) > 0 ? FALSE : TRUE;
+}
+
+void
+clipboard_foreach (ClipBoardFunction callback, gpointer user_data)
+{
+ GSList *list;
+ ClipboardData *data;
+
+ if (!oregano.clipboard)
+ return;
+
+ for (list = oregano.clipboard; list; list = list->next) {
+ data = list->data;
+ callback (data, user_data);
+ }
+}
+
+void
+clipboard_add_object (GObject *item)
+{
+ ItemDataClass *id_class;
+ ItemData *item_data, *clone;
+ ClipboardData *cb_data;
+
+ g_return_if_fail (item != NULL);
+
+ /* TODO: FIX sheet global access */
+ g_return_if_fail (IS_SHEET_ITEM (item));
+
+ item_data = sheet_item_get_data (SHEET_ITEM (item));
+
+ id_class = ITEM_DATA_CLASS (G_OBJECT_GET_CLASS (item_data));
+ if (id_class->clone == NULL)
+ return;
+
+ /*
+ * Duplicate the data for the object and add to the clipboard.
+ */
+ clone = id_class->clone (item_data);
+
+ cb_data = g_new0 (ClipboardData, 1);
+ cb_data->item_data = clone;
+ cb_data->item_class = SHEET_ITEM_CLASS (G_OBJECT_GET_CLASS (item));
+
+ oregano.clipboard = g_slist_prepend (oregano.clipboard, cb_data);
+}
+
+GObject *
+clipboard_data_get_item_data (ClipboardData *data)
+{
+ g_return_val_if_fail (data != NULL, NULL);
+
+ return G_OBJECT (data->item_data);
+}
+
+GObjectClass *
+clipboard_data_get_item_class (ClipboardData *data)
+{
+ g_return_val_if_fail (data != NULL, NULL);
+
+ return G_OBJECT_CLASS (data->item_class);
+}
+
diff --git a/src/clipboard.h b/src/clipboard.h
new file mode 100644
index 0000000..54a4f43
--- /dev/null
+++ b/src/clipboard.h
@@ -0,0 +1,45 @@
+/*
+ * clipboard.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __CLIPBOARD_H
+#define __CLIPBOARD_H
+
+typedef struct _ClipboardData ClipboardData;
+
+typedef void (*ClipBoardFunction) (ClipboardData *data, gpointer user_data);
+
+void clipboard_empty (void);
+gboolean clipboard_is_empty (void);
+void clipboard_foreach (ClipBoardFunction callback,
+ gpointer user_data);
+void clipboard_add_object (GObject *item);
+GObjectClass *clipboard_data_get_item_class (ClipboardData *data);
+GObject *clipboard_data_get_item_data (ClipboardData *data);
+
+#endif
diff --git a/src/create-wire.c b/src/create-wire.c
new file mode 100644
index 0000000..03968d7
--- /dev/null
+++ b/src/create-wire.c
@@ -0,0 +1,690 @@
+/*
+ * @file create-wire.c
+ *
+ * @author Richard Hult <rhult@hem.passagen.se>
+ * @author Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * @author Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * @brief Handles the user interaction when creating wires.
+ *
+ * The name is not really right. This part handles creation of wires and
+ * acts as glue between NodeStore/Wire and Sheet/WireItem.
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <gnome.h>
+#include <math.h>
+#include "cursors.h"
+#include "sheet-private.h"
+#include "sheet-pos.h"
+#include "node-store.h"
+#include "item-data.h"
+#include "wire-item.h"
+#include "create-wire.h"
+#include "wire.h"
+#include "schematic-view.h"
+
+struct _CreateWireContext {
+ guint active : 1;
+ guint moved : 1;
+ guint oneshot : 1;
+ gint start_handler_id;
+ gint draw_handler_id;
+ gint sheet_cancel_id;
+
+ gdouble old_x, old_y;
+
+ SchematicView *schematic_view;
+
+ GnomeCanvasItem *dot_item;
+
+ CreateWire *create_wire;
+};
+
+static int create_wire_event (Sheet *sheet, const GdkEvent *event,
+ CreateWireContext *cwc);
+
+static int create_wire_pre_create_event (Sheet *sheet, const GdkEvent *event,
+ CreateWireContext *cwc);
+
+static int sheet_cancel (Sheet *sheet, CreateWireContext *cwc);
+
+static void fixate_wire (CreateWireContext *cwc, gboolean always_fixate_both,
+ int x, int y);
+
+static Wire *create_wire_and_place_item (SchematicView *sv, SheetPos start_pos,
+ SheetPos end_pos);
+
+static void cancel_wire (CreateWireContext *cwc);
+
+static void exit_wire_mode (CreateWireContext *cwc);
+
+/*
+ * Initiates wire creation by disconnecting the signal handler that
+ * starts the wire-drawing and then connecting the drawing handler.
+ * This is an event handler.
+ *
+ * @param sheet a sheet (the canvas)
+ * @param event the event
+ * @param cwc context
+ */
+static int
+create_wire_pre_create_event (Sheet *sheet, const GdkEvent *event,
+ CreateWireContext *cwc)
+{
+ GnomeCanvasPoints *points;
+ CreateWire *wire;
+ double new_x, new_y;
+ int x, y;
+
+ if (cwc->active)
+ return FALSE;
+
+ if (event->button.button == 2 || event->button.button > 3)
+ return FALSE;
+
+ if (event->type == GDK_2BUTTON_PRESS ||
+ event->type == GDK_3BUTTON_PRESS)
+ return FALSE;
+
+ g_signal_stop_emission_by_name (G_OBJECT (sheet), "button_press_event");
+
+ /*
+ * Button 3 resets the sheet mode.
+ */
+ if (event->button.button == 3) {
+ exit_wire_mode (cwc);
+ return TRUE;
+ }
+
+ /*
+ * Button 1 starts a new wire. Start by deselecting all objects.
+ */
+ schematic_view_select_all (cwc->schematic_view, FALSE);
+
+ gnome_canvas_window_to_world (GNOME_CANVAS (sheet),
+ event->button.x, event->button.y,
+ &new_x, &new_y);
+
+ snap_to_grid (sheet->grid, &new_x, &new_y);
+ x = new_x;
+ y = new_y;
+
+ points = gnome_canvas_points_new (3);
+ points->coords[0] = x;
+ points->coords[1] = y;
+ points->coords[2] = x;
+ points->coords[3] = y;
+ points->coords[4] = x;
+ points->coords[5] = y;
+
+ wire = g_new0 (CreateWire, 1);
+ cwc->create_wire = wire;
+ cwc->moved = FALSE;
+ cwc->oneshot = TRUE;
+ cwc->old_x = x;
+ cwc->old_y = y;
+
+ wire->line = GNOME_CANVAS_LINE (
+ gnome_canvas_item_new (
+ sheet->object_group,
+ gnome_canvas_line_get_type (),
+ "points", points,
+ "fill_color", "red",
+ "line_style", GDK_LINE_ON_OFF_DASH,
+ "width_pixels", 1,
+ NULL));
+
+ wire->points = points;
+ wire->direction = WIRE_DIR_NONE;
+
+ cwc->draw_handler_id = g_signal_connect (
+ G_OBJECT (sheet),
+ "event",
+ G_CALLBACK (create_wire_event),
+ cwc);
+
+ cwc->active = TRUE;
+
+ return TRUE;
+}
+
+/*
+ * This needs to be called in order to start a wire creation.
+ * It sets up the initial event handler that basically just
+ * takes care of the first button-1 press that starts the
+ * drawing mode.
+ */
+CreateWireContext *
+create_wire_initiate (SchematicView *sv)
+{
+ CreateWireContext *cwc;
+ Sheet *sheet;
+
+ g_return_val_if_fail (sv != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC_VIEW (sv), NULL);
+
+ sheet = schematic_view_get_sheet (sv);
+
+ cwc = g_new0 (CreateWireContext, 1);
+ cwc->schematic_view = sv;
+ cwc->active = FALSE;
+ cwc->dot_item = NULL;
+
+ cwc->start_handler_id = g_signal_connect (
+ G_OBJECT (sheet),
+ "button_press_event",
+ G_CALLBACK (create_wire_pre_create_event),
+ cwc);
+
+ cwc->sheet_cancel_id = g_signal_connect (
+ G_OBJECT (sheet),
+ "cancel",
+ G_CALLBACK (sheet_cancel),
+ cwc);
+
+ return cwc;
+}
+
+/*
+ * create_wire_event
+ */
+static int
+create_wire_event (Sheet *sheet, const GdkEvent *event, CreateWireContext *cwc)
+{
+ int snapped_x, snapped_y;
+ int x1, y1, x2, y2;
+ double new_x, new_y;
+ gboolean diagonal;
+ CreateWire *wire = cwc->create_wire;
+ Schematic *s;
+ NodeStore *store;
+ SheetPos pos;
+ int i, intersect;
+
+ s = schematic_view_get_schematic (cwc->schematic_view);
+ store = schematic_get_store (s);
+
+ if (event->type == GDK_2BUTTON_PRESS
+ || event->type == GDK_3BUTTON_PRESS) {
+ return FALSE;
+ }
+
+ switch (event->type){
+ case GDK_BUTTON_PRESS:
+
+ switch (event->button.button) {
+ case 2:
+ case 4:
+ case 5:
+ /*
+ * Don't care about middle button or mouse wheel.
+ */
+ return FALSE;
+ break;
+
+ case 1:
+ cwc->oneshot = FALSE;
+
+ /*
+ * Button-1 fixates the first segment of the wire,
+ * letting the user continue drawing wires, with the
+ * former second segment as the first segment of the
+ * new wire. There are a few exceptions though; if the
+ * button press happens at another wire or a pin of a
+ * part, then we fixate the wire and cancel the drawing
+ * mode.
+ */
+ g_signal_stop_emission_by_name (G_OBJECT (sheet),
+ "event");
+ gnome_canvas_window_to_world (GNOME_CANVAS (sheet),
+ event->button.x, event->button.y,
+ &new_x, &new_y);
+
+ snap_to_grid (sheet->grid, &new_x, &new_y);
+ snapped_x = new_x;
+ snapped_y = new_y;
+
+ fixate_wire (cwc, FALSE, snapped_x, snapped_y);
+ break;
+
+ case 3:
+ g_signal_stop_emission_by_name (G_OBJECT (sheet),
+ "event");
+ cancel_wire (cwc);
+ break;
+ }
+ break;
+
+ case GDK_BUTTON_RELEASE:
+ g_signal_stop_emission_by_name (G_OBJECT (sheet), "event");
+
+ switch (event->button.button) {
+ case 2:
+ case 4:
+ case 5:
+ /*
+ * Don't care about middle button or mouse wheel.
+ */
+ return FALSE;
+ break;
+
+ case 1:
+ /*
+ * If the button is released after moving the mouse
+ * pointer, then we finish the wire.
+ */
+ if (cwc->moved && cwc->oneshot) {
+ gnome_canvas_window_to_world (
+ GNOME_CANVAS (sheet),
+ event->button.x, event->button.y,
+ &new_x, &new_y);
+
+ snap_to_grid (sheet->grid, &new_x, &new_y);
+ snapped_x = new_x;
+ snapped_y = new_y;
+
+ fixate_wire (cwc, TRUE, snapped_x, snapped_y);
+ }
+ }
+ return TRUE;
+
+ case GDK_MOTION_NOTIFY:
+ if (!cwc->moved) {
+ double m, dx, dy;
+
+ gnome_canvas_window_to_world (GNOME_CANVAS (sheet),
+ event->motion.x, event->motion.y,
+ &new_x, &new_y);
+
+ snap_to_grid (sheet->grid, &new_x, &new_y);
+ dx = fabs (cwc->old_x - new_x);
+ dy = fabs (cwc->old_y - new_y);
+ m = sqrt (dx*dx + dy*dy);
+
+ if (m > 20)
+ cwc->moved = TRUE;
+ }
+
+ g_signal_stop_emission_by_name (G_OBJECT (sheet), "event");
+
+ diagonal = event->button.state & GDK_SHIFT_MASK;
+ if (!diagonal && wire->direction == WIRE_DIR_DIAG)
+ wire->direction = WIRE_DIR_NONE;
+
+ gnome_canvas_window_to_world (GNOME_CANVAS (sheet),
+ event->motion.x, event->motion.y,
+ &new_x, &new_y);
+
+ snap_to_grid (sheet->grid, &new_x, &new_y);
+ snapped_x = new_x;
+ snapped_y = new_y;
+
+ x1 = wire->points->coords[0];
+ y1 = wire->points->coords[1];
+
+ if (x1 == snapped_x && y1 == snapped_y) {
+ wire->direction = WIRE_DIR_NONE;
+ } else {
+ if (wire->direction == WIRE_DIR_NONE) {
+ if (abs (y1 - snapped_y) < abs (x1 - snapped_x)) {
+ wire->direction = WIRE_DIR_HORIZ;
+ } else {
+ wire->direction = WIRE_DIR_VERT;
+ }
+ }
+ }
+
+ x2 = snapped_x;
+ y2 = snapped_y;
+
+ if (diagonal) {
+ wire->direction = WIRE_DIR_DIAG;
+ x2 = x1;
+ y2 = y1;
+ }
+
+ if (wire->direction == WIRE_DIR_HORIZ) {
+ y2 = y1;
+ } else if (wire->direction == WIRE_DIR_VERT) {
+ x2 = x1;
+ }
+
+ if (wire->direction == WIRE_DIR_HORIZ && x2 == x1) {
+ x2 = snapped_x;
+ y2 = snapped_y;
+ } else if (wire->direction == WIRE_DIR_VERT && y2 == y1) {
+ x2 = snapped_x;
+ y2 = snapped_y;
+ }
+
+ /*
+ * This is a really hackish thing.
+ * The reason for the hack is that when you draw a
+ * straight line consisting of > 2 points, and some
+ * points have the same coordinates, then the line will
+ * be invisible.
+ */
+ if (x2 == snapped_x && y2 == snapped_y) {
+ wire->points->num_points = 2;
+ } else {
+ wire->points->num_points = 3;
+ }
+
+ wire->points->coords[2] = x2;
+ wire->points->coords[3] = y2;
+ wire->points->coords[4] = snapped_x;
+ wire->points->coords[5] = snapped_y;
+
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM (wire->line),
+ "points", wire->points, NULL);
+
+ pos.x = new_x;
+ pos.y = new_y;
+ /* Check if the pre-wire intersect another wire, and
+ * draw a small red circle to indicate the connection
+ */
+ intersect = 0;
+ intersect = node_store_is_wire_at_pos (store, pos);
+ intersect += node_store_is_pin_at_pos (store, pos);
+ if (intersect) {
+ if (cwc->dot_item) {
+ gnome_canvas_item_set (
+ cwc->dot_item,
+ "x1", -3.0+new_x,
+ "y1", -3.0+new_y,
+ "x2", 3.0+new_x,
+ "y2", 3.0+new_y,
+ NULL
+ );
+
+ gnome_canvas_item_show (cwc->dot_item);
+ } else {
+ cwc->dot_item = gnome_canvas_item_new (
+ GNOME_CANVAS_GROUP (sheet->object_group),
+ gnome_canvas_ellipse_get_type (),
+ "x1", -3.0+new_x,
+ "y1", -3.0+new_y,
+ "x2", 3.0+new_x,
+ "y2", 3.0+new_y,
+ "fill_color", "red",
+ NULL
+ );
+ gnome_canvas_item_show (cwc->dot_item);
+ }
+ } else {
+ if (cwc->dot_item) gnome_canvas_item_hide (cwc->dot_item);
+ }
+
+ cwc->old_x = snapped_x;
+ cwc->old_y = snapped_y;
+ break;
+
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static void
+fixate_wire (CreateWireContext *cwc, gboolean always_fixate_both, int x, int y)
+{
+ SchematicView *sv;
+ CreateWire *create_wire = cwc->create_wire;
+ Wire *wire1, *wire2;
+ SheetPos p1, p2, start_pos, end_pos, start_pos2, end_pos2;
+ gboolean cancel = FALSE;
+ NodeStore *store;
+ Schematic *schematic;
+
+ g_return_if_fail (cwc != NULL);
+ g_return_if_fail (create_wire != NULL);
+
+ sv = cwc->schematic_view;
+ schematic = schematic_view_get_schematic (sv);
+
+ store = schematic_get_store (schematic);
+
+ p1.x = create_wire->points->coords[0];
+ p1.y = create_wire->points->coords[1];
+ p2.x = create_wire->points->coords[2];
+ p2.y = create_wire->points->coords[3];
+
+ if (create_wire->direction == WIRE_DIR_DIAG) {
+ p1.x = p2.x;
+ p1.y = p2.y;
+ p2.x = create_wire->points->coords[4];
+ p2.y = create_wire->points->coords[5];
+ create_wire->points->coords[2] = p2.x;
+ create_wire->points->coords[3] = p2.y;
+ create_wire->points->num_points = 2;
+ }
+
+ /*
+ * If the user clicks when wire length is zero, cancel the wire.
+ */
+ if (p1.x == p2.x && p1.y == p2.y) {
+ cancel_wire (cwc);
+ return;
+ }
+
+ if (create_wire->direction != WIRE_DIR_DIAG) {
+ start_pos.x = MIN (p1.x, p2.x);
+ start_pos.y = MIN (p1.y, p2.y);
+ end_pos.x = MAX (p1.x, p2.x);
+ end_pos.y = MAX (p1.y, p2.y);
+ } else {
+ start_pos.x = p1.x;
+ start_pos.y = p1.y;
+ end_pos.x = p2.x;
+ end_pos.y = p2.y;
+ }
+
+ /*
+ * If the wire connects to something, then fixate
+ * the second segment too and exit wire drawing mode.
+ *
+ * Also fixate both segments when explicitly asked to.
+ */
+ p2.x = x;
+ p2.y = y;
+ if (always_fixate_both ||
+ node_store_get_node (store, p2) ||
+ node_store_is_wire_at_pos (store, p2)) {
+ if (create_wire->points->num_points == 3) {
+ p1.x = create_wire->points->coords[2];
+ p1.y = create_wire->points->coords[3];
+
+ if (create_wire->direction != WIRE_DIR_DIAG) {
+ start_pos2.x = MIN (p1.x, p2.x);
+ start_pos2.y = MIN (p1.y, p2.y);
+ end_pos2.x = MAX (p1.x, p2.x);
+ end_pos2.y = MAX (p1.y, p2.y);
+ } else {
+ start_pos2.x = p1.x;
+ start_pos2.y = p1.y;
+ end_pos2.x = p2.x;
+ end_pos2.y = p2.y;
+ }
+
+ wire2 = create_wire_and_place_item (sv,
+ start_pos2, end_pos2);
+ }
+ cancel_wire (cwc);
+ cancel = TRUE;
+ }
+
+ wire1 = create_wire_and_place_item (sv, start_pos, end_pos);
+
+ if (cancel)
+ return;
+
+ /*
+ * Start a new "floating" wire, using the same CreateWire that was used
+ * for the old wire.
+ */
+ create_wire->points->coords[0] = create_wire->points->coords[2];
+ create_wire->points->coords[1] = create_wire->points->coords[3];
+ create_wire->points->coords[2] = x;
+ create_wire->points->coords[3] = y;
+ create_wire->points->num_points = 2;
+
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM (create_wire->line), "points",
+ create_wire->points, NULL);
+
+ /*
+ * If the finished wire's first segment was horizontal, you get the
+ * best "feeling" if the new wire is vertical. Based on the author's
+ * feeling =)
+ */
+ if (create_wire->direction == WIRE_DIR_HORIZ)
+ create_wire->direction = WIRE_DIR_VERT;
+ else
+ create_wire->direction = WIRE_DIR_HORIZ;
+
+ /*
+ * Raise the floting wire so that we can see it when it is overlapping
+ * other wires.
+ */
+ gnome_canvas_item_raise (GNOME_CANVAS_ITEM (create_wire->line), 1);
+}
+
+Wire *
+create_wire_and_place_item (SchematicView *sv, SheetPos start_pos,
+ SheetPos end_pos)
+{
+ Wire *wire;
+ NodeStore *store;
+ Sheet *sheet;
+ Schematic *schematic;
+ SheetPos length;
+
+ g_return_val_if_fail (sv != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC_VIEW (sv), NULL);
+
+ schematic = schematic_view_get_schematic (sv);
+ sheet = schematic_view_get_sheet (sv);
+ store = schematic_get_store (schematic);
+
+ wire = wire_new ();
+ item_data_set_pos (ITEM_DATA (wire), &start_pos);
+
+ length.x = end_pos.x - start_pos.x;
+ length.y = end_pos.y - start_pos.y;
+ wire_set_length (wire, &length);
+
+ schematic_add_item (schematic_view_get_schematic (sv), ITEM_DATA (wire));
+
+ return wire;
+}
+
+static void
+cancel_wire (CreateWireContext *cwc)
+{
+ CreateWire *create_wire;
+ Sheet *sheet;
+
+ create_wire = cwc->create_wire;
+ sheet = schematic_view_get_sheet (cwc->schematic_view);
+
+ g_return_if_fail (create_wire != NULL);
+
+ g_signal_handler_disconnect (G_OBJECT (sheet), cwc->draw_handler_id);
+ cwc->draw_handler_id = 0;
+ cwc->active = FALSE;
+
+ create_wire->points->num_points = 3;
+ gnome_canvas_points_free (create_wire->points);
+
+ if (cwc->dot_item) {
+ gtk_object_destroy (GTK_OBJECT (cwc->dot_item));
+ cwc->dot_item = NULL;
+ }
+ gtk_object_destroy (GTK_OBJECT (create_wire->line));
+
+ g_free (create_wire);
+
+ /* Setup the sheet for a new wire creation process. */
+}
+
+static void
+exit_wire_mode (CreateWireContext *cwc)
+{
+ Sheet *sheet;
+
+ sheet = schematic_view_get_sheet (cwc->schematic_view);
+
+ if (cwc->draw_handler_id != 0)
+ cancel_wire (cwc);
+
+ if (cwc->start_handler_id != 0) {
+ g_signal_handler_disconnect (G_OBJECT (sheet),
+ cwc->start_handler_id);
+ cwc->start_handler_id = 0;
+ }
+
+ if (cwc->sheet_cancel_id != 0) {
+ g_signal_handler_disconnect (G_OBJECT (sheet),
+ cwc->sheet_cancel_id);
+ cwc->sheet_cancel_id = 0;
+ }
+
+ g_signal_emit_by_name (G_OBJECT (sheet), "reset_tool");
+
+ g_free (cwc);
+}
+
+void
+create_wire_exit (CreateWireContext *cwc)
+{
+ Sheet *sheet;
+
+ sheet = schematic_view_get_sheet (cwc->schematic_view);
+
+ if (cwc->draw_handler_id != 0)
+ cancel_wire (cwc);
+
+ if (cwc->start_handler_id != 0) {
+ g_signal_handler_disconnect (G_OBJECT (sheet),
+ cwc->start_handler_id);
+ cwc->start_handler_id = 0;
+ }
+}
+
+/*
+ * Signal handler for the "cancel" signal that the sheet emits
+ * when <escape> is pressed.
+ */
+static int
+sheet_cancel (Sheet *sheet, CreateWireContext *cwc)
+{
+ g_return_val_if_fail (sheet != NULL, FALSE);
+ g_return_val_if_fail (IS_SHEET (sheet), FALSE);
+
+ if (cwc->active)
+ cancel_wire (cwc);
+ else
+ exit_wire_mode (cwc);
+
+ return TRUE;
+}
+
diff --git a/src/create-wire.h b/src/create-wire.h
new file mode 100644
index 0000000..f475396
--- /dev/null
+++ b/src/create-wire.h
@@ -0,0 +1,57 @@
+/*
+ * create-wire.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __CREATE_WIRE_H
+#define __CREATE_WIRE_H
+
+#include <gnome.h>
+
+#include "sheet.h"
+#include "wire.h"
+#include "wire-item.h"
+#include "schematic-view.h"
+
+typedef struct _CreateWireContext CreateWireContext;
+
+typedef struct {
+ GnomeCanvasLine *line;
+ GnomeCanvasPoints *points;
+
+ WireDir direction; /* Direction of the first wire segment. */
+} CreateWire;
+
+CreateWireContext *create_wire_initiate (SchematicView *sv);
+
+void create_wire_from_file (SchematicView *sv, SheetPos start_pos,
+ SheetPos end_pos);
+void create_wire_exit (CreateWireContext *cwc);
+void paste_wire_item_from_wire (SchematicView *schematic_view,
+ Wire *wire);
+
+#endif
diff --git a/src/cursors.c b/src/cursors.c
new file mode 100644
index 0000000..e9d77db
--- /dev/null
+++ b/src/cursors.c
@@ -0,0 +1,67 @@
+/*
+ * cursors.c
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#include <gnome.h>
+#include "cursors.h"
+
+OreganoCursor oregano_cursors[] = {
+ { NULL, GDK_LEFT_PTR },
+ { NULL, GDK_TCROSS },
+ { NULL, GDK_PENCIL },
+ { NULL, GDK_XTERM },
+ { NULL, -1 }
+};
+
+void
+cursors_init (void)
+{
+ int i;
+
+ for (i = 0; oregano_cursors[i].type != -1; i++){
+ oregano_cursors[i].cursor = gdk_cursor_new (oregano_cursors[i].type);
+ }
+}
+
+void
+cursors_shutdown (void)
+{
+ int i;
+
+ for (i = 0; oregano_cursors[i].type != -1; i++)
+ gdk_cursor_unref(oregano_cursors[i].cursor);
+}
+
+void
+cursor_set_widget (GtkWidget *w, int name)
+{
+ if (w->window)
+ gdk_window_set_cursor (w->window, oregano_cursors[name].cursor);
+}
+
+
diff --git a/src/cursors.h b/src/cursors.h
new file mode 100644
index 0000000..6a52b7b
--- /dev/null
+++ b/src/cursors.h
@@ -0,0 +1,51 @@
+/*
+ * cursors.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __CURSORS_H
+#define __CURSORS_H
+
+#include <gtk/gtk.h>
+
+#define OREGANO_CURSOR_LEFT_PTR 0
+#define OREGANO_CURSOR_CROSS 1
+#define OREGANO_CURSOR_PENCIL 2
+#define OREGANO_CURSOR_CARET 3
+
+typedef struct {
+ GdkCursor *cursor;
+ GdkCursorType type;
+} OreganoCursor;
+
+extern OreganoCursor oregano_cursors[];
+
+void cursors_init (void);
+void cursors_shutdown (void);
+void cursor_set_widget (GtkWidget *w, int name);
+
+#endif
diff --git a/src/dialogs.c b/src/dialogs.c
new file mode 100644
index 0000000..5facc0d
--- /dev/null
+++ b/src/dialogs.c
@@ -0,0 +1,183 @@
+/*
+ * Author:
+ * Richard Hult <rhult@codefactory.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#include <gnome.h>
+#include "dialogs.h"
+#include "main.h"
+
+#include "pixmaps/logo.xpm"
+
+static void about_destroy_event (void);
+static GtkWidget *about = NULL;
+
+void
+oregano_error (gchar *msg)
+{
+ oregano_error_with_title(msg, NULL);
+}
+
+void
+oregano_error_with_title (gchar *title, gchar *desc)
+{
+ GtkWidget *dialog;
+ gint result;
+
+ GString* span_msg;
+
+ span_msg = g_string_new("<span weight=\"bold\" size=\"large\">");
+ span_msg = g_string_append(span_msg, title);
+ span_msg = g_string_append(span_msg,"</span>");
+
+ if (desc && desc[0] != '\0') {
+ span_msg = g_string_append(span_msg,"\n\n");
+ span_msg = g_string_append(span_msg, desc);
+ }
+
+ dialog = gtk_message_dialog_new_with_markup (
+ NULL,
+ GTK_DIALOG_MODAL,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_OK,
+ span_msg->str);
+
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
+
+ result = gtk_dialog_run (GTK_DIALOG (dialog));
+
+ g_string_free(span_msg, TRUE);
+ gtk_widget_destroy (dialog);
+}
+
+void
+oregano_warning (gchar *msg)
+{
+ oregano_warning_with_title(msg, NULL);
+}
+
+
+void
+oregano_warning_with_title (gchar *title, gchar *desc)
+{
+ GtkWidget *dialog;
+ gint result;
+
+ GString* span_msg;
+
+ span_msg = g_string_new("<span weight=\"bold\" size=\"large\">");
+ span_msg = g_string_append(span_msg, title);
+ span_msg = g_string_append(span_msg,"</span>");
+
+ if (desc && desc[0] != '\0') {
+ span_msg = g_string_append(span_msg,"\n\n");
+ span_msg = g_string_append(span_msg, desc);
+ }
+
+ dialog = gtk_message_dialog_new_with_markup (
+ NULL,
+ GTK_DIALOG_MODAL,
+ GTK_MESSAGE_WARNING,
+ GTK_BUTTONS_OK,
+ span_msg->str);
+
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
+
+ result = gtk_dialog_run (GTK_DIALOG (dialog));
+
+ g_string_free(span_msg, TRUE);
+ gtk_widget_destroy (dialog);
+}
+gint
+oregano_question (gchar *msg)
+{
+ GtkWidget *dialog;
+ gint ans;
+
+ dialog = gtk_message_dialog_new_with_markup (
+ NULL,
+ GTK_MESSAGE_QUESTION,
+ GTK_BUTTONS_OK,
+ GTK_BUTTONS_CANCEL,
+ msg);
+
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CANCEL);
+
+ ans = gtk_dialog_run (GTK_DIALOG (dialog));
+
+ switch (ans) {
+ case GTK_RESPONSE_ACCEPT:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+
+ gtk_widget_destroy (dialog);
+}
+
+void
+dialog_about (void)
+{
+ GdkPixbuf *logo;
+
+ const gchar *authors[] = {
+ "Richard Hult",
+ "Margarita Manterola",
+ "Andres de Barbara",
+ "Gustavo M. Pereyra",
+ "Maximiliano Curia",
+ "Ricardo Markiewicz",
+ NULL
+ };
+
+ const char *docs[] = {
+ "Ricardo Markiewicz <rmarkie@fi.uba.ar> (es)",
+ "Jordi Mallach <tradgnome@softcatala.net> (ca)",
+ NULL
+ };
+
+ const gchar *copy = _("(c) 2003-2006 LUGFi\n(c) 1999-2001 Richard Hult");
+
+ /* Allow only one about box at a time. */
+ if (about){
+ gdk_window_raise (about->window);
+ return;
+ }
+
+ logo = gdk_pixbuf_new_from_xpm_data ((const char **) logo_xpm);
+
+ about = gtk_about_dialog_new ();
+ gtk_about_dialog_set_name (GTK_ABOUT_DIALOG (about), "Oregano");
+ gtk_about_dialog_set_version (GTK_ABOUT_DIALOG (about), VERSION);
+ gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (about), copy);
+ gtk_about_dialog_set_comments (GTK_ABOUT_DIALOG (about), _("Schematic capture and circuit simulation.\n"));
+ gtk_about_dialog_set_license (GTK_ABOUT_DIALOG (about), "GNU General Public License");
+ gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (about), "http://arrakis.gforge.lug.fi.uba.ar");
+ gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (about), authors);
+ gtk_about_dialog_set_documenters (GTK_ABOUT_DIALOG (about), docs);
+ gtk_about_dialog_set_logo (GTK_ABOUT_DIALOG (about), logo);
+ gtk_dialog_run (GTK_DIALOG (about));
+ gtk_widget_destroy (about);
+
+}
diff --git a/src/dialogs.h b/src/dialogs.h
new file mode 100644
index 0000000..a56ac52
--- /dev/null
+++ b/src/dialogs.h
@@ -0,0 +1,43 @@
+/*
+ * dialogs.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __DIALOGS_H
+#define __DIALOGS_H
+
+#include <libgnome/gnome-i18n.h>
+#include "schematic.h"
+
+void oregano_error (gchar *msg);
+void oregano_error_with_title (gchar *title, gchar *desc);
+void oregano_warning (gchar *msg);
+void oregano_warning_with_title (gchar *title, gchar *desc);
+gint oregano_question (gchar *msg);
+void dialog_about (void);
+
+#endif
diff --git a/src/engines/Makefile.am b/src/engines/Makefile.am
new file mode 100644
index 0000000..ccdf011
--- /dev/null
+++ b/src/engines/Makefile.am
@@ -0,0 +1,20 @@
+oreganodir = $(datadir)/oregano
+INCLUDES = \
+ $(OREGANO_CFLAGS) -I$(top_srcdir)/src \
+ -I$(top_srcdir)/src/model -I$(top_srcdir)/src/sheet \
+ -DOREGANO_XMLDIR=\""$(oreganodir)/xml"\" \
+ -DOREGANO_LIBRARYDIR=\""$(oreganodir)/libraries"\" \
+ -DOREGANO_MODELDIR=\""$(oreganodir)/models"\"
+
+noinst_LIBRARIES = libengines.a
+libengines_a_SOURCES = \
+ engine.c \
+ engine.h \
+ gnucap.c \
+ gnucap.h \
+ netlist.c \
+ netlist.h \
+ ngspice.c \
+ ngspice.h
+
+libengines_a_LIBADD = libengines.a
diff --git a/src/engines/engine.c b/src/engines/engine.c
new file mode 100644
index 0000000..9958608
--- /dev/null
+++ b/src/engines/engine.c
@@ -0,0 +1,178 @@
+/*
+ * engine.c
+ *
+ * Authors:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ *
+ * Web page: http://oregano.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include "engine.h"
+#include "gnucap.h"
+#include "ngspice.h"
+
+static gchar *analysis_names[] = {
+ N_("Operating Point"),
+ N_("Transient Analysis"),
+ N_("DC transfer characteristic"),
+ N_("AC Analysis"),
+ N_("Transfer Function"),
+ N_("Distortion Analysis"),
+ N_("Noise Analysis"),
+ N_("Pole-Zero Analysis"),
+ N_("Sensitivity Analysis"),
+ N_("Unknown Analysis"),
+ NULL
+};
+
+/* Signals */
+enum {
+ DONE,
+ ABORTED,
+ LAST_SIGNAL
+};
+static guint engine_signals[LAST_SIGNAL] = { 0 };
+
+static void
+oregano_engine_base_init (gpointer g_class)
+{
+ static gboolean initialized = FALSE;
+
+ if (!initialized) {
+ /* create interface signals here. */
+ engine_signals[DONE] = g_signal_new ("done", G_TYPE_FROM_CLASS (g_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (OreganoEngineClass, done),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+
+ engine_signals[ABORTED] = g_signal_new ("aborted", G_TYPE_FROM_CLASS (g_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (OreganoEngineClass, abort),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+
+ initialized = TRUE;
+ }
+}
+
+GType
+oregano_engine_get_type (void)
+{
+ static GType type = 0;
+
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof (OreganoEngineClass),
+ oregano_engine_base_init, /* base_init */
+ NULL, /* base_finalize */
+ NULL, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ 0,
+ 0, /* n_preallocs */
+ NULL /* instance_init */
+ };
+ type = g_type_register_static (G_TYPE_INTERFACE, "OreganoEngine", &info, 0);
+ }
+ return type;
+}
+
+void
+oregano_engine_start (OreganoEngine *self)
+{
+ OREGANO_ENGINE_GET_CLASS (self)->start (self);
+}
+
+void
+oregano_engine_stop (OreganoEngine *self)
+{
+ OREGANO_ENGINE_GET_CLASS (self)->stop (self);
+}
+
+gboolean
+oregano_engine_has_warnings (OreganoEngine *self)
+{
+ return OREGANO_ENGINE_GET_CLASS (self)->has_warnings (self);
+}
+
+gboolean
+oregano_engine_is_available (OreganoEngine *self)
+{
+ return OREGANO_ENGINE_GET_CLASS (self)->is_available (self);
+}
+
+void
+oregano_engine_get_progress (OreganoEngine *self, double *p)
+{
+ OREGANO_ENGINE_GET_CLASS (self)->progress (self, p);
+}
+
+void
+oregano_engine_generate_netlist (OreganoEngine *self, const gchar *file, GError **error)
+{
+ OREGANO_ENGINE_GET_CLASS (self)->get_netlist (self, file, error);
+}
+
+GList*
+oregano_engine_get_results (OreganoEngine *self)
+{
+ return OREGANO_ENGINE_GET_CLASS (self)->get_results (self);
+}
+
+gchar*
+oregano_engine_get_current_operation (OreganoEngine *self)
+{
+ return OREGANO_ENGINE_GET_CLASS (self)->get_operation (self);
+}
+OreganoEngine*
+oregano_engine_factory_create_engine (gint type, Schematic *sm)
+{
+ OreganoEngine *engine;
+
+ switch (type) {
+ case OREGANO_ENGINE_GNUCAP:
+ engine = oregano_gnucap_new (sm);
+ break;
+ case OREGANO_ENGINE_NGSPICE:
+ engine = oregano_ngspice_new (sm);
+ break;
+ default:
+ engine = NULL;
+ }
+
+ return engine;
+}
+
+gchar *
+oregano_engine_get_analysis_name (SimulationData *sdat)
+{
+ if (sdat == NULL)
+ return g_strdup (_(analysis_names[ANALYSIS_UNKNOWN]));
+
+ return g_strdup (_(analysis_names[sdat->type]));
+}
diff --git a/src/engines/engine.h b/src/engines/engine.h
new file mode 100644
index 0000000..b5e6a9f
--- /dev/null
+++ b/src/engines/engine.h
@@ -0,0 +1,89 @@
+/*
+ * engine.h
+ *
+ * Authors:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ *
+ * Web page: http://oregano.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __ENGINE_H
+#define __ENGINE_H 1
+
+#include <gtk/gtk.h>
+#include "sim-settings.h"
+#include "schematic.h"
+#include "simulation.h"
+
+#define OREGANO_TYPE_ENGINE (oregano_engine_get_type ())
+#define OREGANO_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), OREGANO_TYPE_ENGINE, OreganoEngine))
+#define OREGANO_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), OREGANO_TYPE_ENGINE, OreganoEngineClass))
+#define OREGANO_IS_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), OREGANO_TYPE_ENGINE))
+#define OREGANO_IS_ENGINE_CLASS(klass) (G_TYPE_CLASS_TYPE((klass), OREGANO_TYPE_ENGINE, OreganoEngineClass))
+#define OREGANO_ENGINE_GET_CLASS(klass) (G_TYPE_INSTANCE_GET_INTERFACE((klass), OREGANO_TYPE_ENGINE, OreganoEngineClass))
+
+typedef struct _OreganoEngine OreganoEngine;
+typedef struct _OreganoEngineClass OreganoEngineClass;
+
+struct _OreganoEngineClass {
+ GTypeInterface parent;
+
+ void (*start) (OreganoEngine *engine);
+ void (*stop) (OreganoEngine *engine);
+ void (*progress) (OreganoEngine *engine, double *p);
+ void (*get_netlist) (OreganoEngine *engine, const gchar *sm, GError **error);
+ GList* (*get_results) (OreganoEngine *engine);
+ gchar* (*get_operation) (OreganoEngine *engine);
+ gboolean (*has_warnings) (OreganoEngine *engine);
+ gboolean (*is_available) (OreganoEngine *engine);
+
+ /* Signals */
+ void (*done) ();
+ void (*abort) ();
+};
+
+/* Engines IDs */
+enum {
+ OREGANO_ENGINE_GNUCAP=0,
+ OREGANO_ENGINE_NGSPICE,
+ OREGANO_ENGINE_COUNT
+};
+
+/* Engines Titles */
+static const gchar*
+engines[] = {
+ "GnuCap",
+ "NgSpice"
+};
+
+OreganoEngine *oregano_engine_factory_create_engine (gint type, Schematic *sm);
+
+GType oregano_engine_get_type (void);
+void oregano_engine_start (OreganoEngine *engine);
+void oregano_engine_stop (OreganoEngine *engine);
+gboolean oregano_engine_has_warnings (OreganoEngine *engine);
+void oregano_engine_get_progress (OreganoEngine *engine, double *p);
+void oregano_engine_generate_netlist (OreganoEngine *engine, const gchar *file, GError **error);
+GList *oregano_engine_get_results (OreganoEngine *engine);
+gchar *oregano_engine_get_current_operation (OreganoEngine *);
+gboolean oregano_engine_is_available (OreganoEngine *);
+gchar *oregano_engine_get_analysis_name (SimulationData *id);
+
+#endif
diff --git a/src/engines/gnucap.c b/src/engines/gnucap.c
new file mode 100644
index 0000000..8e93ec6
--- /dev/null
+++ b/src/engines/gnucap.c
@@ -0,0 +1,767 @@
+/*
+ * gnucap.c
+ *
+ * Authors:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ *
+ * Web page: http://oregano.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <glib.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <ctype.h>
+#include "gnucap.h"
+#include "netlist.h"
+
+// TODO Move analisys data and result to another file
+#include "simulation.h"
+
+typedef enum {
+ STATE_IDLE,
+ IN_VARIABLES,
+ IN_VALUES,
+ STATE_ABORT
+} ParseDataState;
+
+struct analisys_tag {
+ gchar *name;
+ guint len;
+};
+
+static struct analisys_tag analisys_tags[] = {
+ {"#", 1}, /* OP */
+ {"#Time", 5}, /* Transient */
+ {"#DC", 3}, /* DC */
+ {"#Freq", 5}, /* AC */
+};
+
+#define IS_THIS_ITEM(str,item) (!strncmp(str,item.name,item.len))
+#define GNUCAP_TITLE '#'
+#define TAGS_COUNT (sizeof (analisys_tags) / sizeof (struct analisys_tag))
+
+/* Parser STATUS */
+struct _OreganoGnuCapPriv {
+ GPid child_pid;
+ gint child_stdout;
+ GIOChannel *child_iochannel;
+ gint child_iochannel_watch;
+ Schematic *schematic;
+
+ gboolean aborted;
+
+ GList *analysis;
+ gint num_analysis;
+ SimulationData *current;
+ double progress;
+ gboolean char_last_newline;
+ guint status;
+ guint buf_count;
+ gchar buf[256]; // FIXME later
+};
+
+static void gnucap_class_init (OreganoGnuCapClass *klass);
+static void gnucap_finalize (GObject *object);
+static void gnucap_dispose (GObject *object);
+static void gnucap_instance_init (GTypeInstance *instance, gpointer g_class);
+static void gnucap_interface_init (gpointer g_iface, gpointer iface_data);
+static gboolean gnucap_child_stdout_cb (GIOChannel *source, GIOCondition condition, OreganoGnuCap *gnucap);
+static void gnucap_parse (gchar *raw, gint len, OreganoGnuCap *gnucap);
+
+static GObjectClass *parent_class = NULL;
+
+GType
+oregano_gnucap_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof (OreganoGnuCapClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc) gnucap_class_init, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (OreganoGnuCap),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) gnucap_instance_init, /* instance_init */
+ NULL
+ };
+
+ static const GInterfaceInfo gnucap_info = {
+ (GInterfaceInitFunc) gnucap_interface_init, /* interface_init */
+ NULL, /* interface_finalize */
+ NULL /* interface_data */
+ };
+
+ type = g_type_register_static (G_TYPE_OBJECT, "OreganoGnuCap", &info, 0);
+ g_type_add_interface_static (type, OREGANO_TYPE_ENGINE, &gnucap_info);
+ }
+ return type;
+}
+
+static void
+gnucap_class_init (OreganoGnuCapClass *klass)
+{
+ GObjectClass *object_class;
+
+ parent_class = g_type_class_peek_parent (klass);
+
+ object_class = G_OBJECT_CLASS (klass);
+
+ object_class->dispose = gnucap_dispose;
+ object_class->finalize = gnucap_finalize;
+}
+
+static void
+gnucap_finalize (GObject *object)
+{
+ SimulationData *data;
+ OreganoGnuCap *gnucap;
+ GList *lst;
+ int i;
+
+ gnucap = OREGANO_GNUCAP (object);
+
+ lst = gnucap->priv->analysis;
+ while (lst) {
+ data = SIM_DATA (lst->data);
+ for (i=0; i<data->n_variables; i++) {
+ g_free (data->var_names[i]);
+ g_free (data->var_units[i]);
+ }
+ g_free (data->var_names);
+ g_free (data->var_units);
+ for (i=0; i<data->n_points; i++)
+ g_array_free (data->data[i], TRUE);
+ g_free (data->min_data);
+ g_free (data->max_data);
+
+ g_free (lst->data);
+ lst = lst->next;
+ }
+ g_list_free (gnucap->priv->analysis);
+ gnucap->priv->analysis = NULL;
+
+ parent_class->finalize (object);
+}
+
+static void
+gnucap_dispose (GObject *object)
+{
+ parent_class->dispose (object);
+}
+
+static gboolean
+gnucap_has_warnings (OreganoEngine *self)
+{
+ return FALSE;
+}
+
+static gboolean
+gnucap_is_available (OreganoEngine *self)
+{
+ gchar *exe;
+ exe = g_find_program_in_path ("gnucap");
+
+ if (!exe) return FALSE; // gnucap not found
+
+ g_free (exe);
+ return TRUE;
+}
+
+static void
+gnucap_generate_netlist (OreganoEngine *engine, const gchar *filename, GError **error)
+{
+ OreganoGnuCap *gnucap;
+ Netlist output;
+ SimOption *so;
+ GList *list;
+ FILE *file;
+ GError *local_error = NULL;
+
+ gnucap = OREGANO_GNUCAP (engine);
+
+ netlist_helper_create (gnucap->priv->schematic, &output, &local_error);
+ if (local_error != NULL) {
+ g_propagate_error (error, local_error);
+ return;
+ }
+
+ file = fopen (filename, "w");
+ if (!file) {
+ g_print ("No se pudo crear %s\n", filename);
+ return;
+ }
+
+ list = sim_settings_get_options (output.settings);
+
+ /* Prints title */
+ fputs (output.title ? output.title : "Title: <unset>", file);
+ fputs ("\n"
+ "*----------------------------------------------"
+ "\n"
+ "*\tGNUCAP - NETLIST"
+ "\n", file);
+ /* Prints Options */
+ fputs (".options OUT=120 ",file);
+
+ while (list) {
+ so = list->data;
+ /* Prevent send NULL text */
+ if (so->value) {
+ if (strlen(so->value) > 0) {
+ fprintf (file,"%s=%s ",so->name,so->value);
+ }
+ }
+ list = list->next;
+ }
+ fputc ('\n',file);
+
+ /* Include of subckt models */
+ fputs ("*------------- Models -------------------------\n",file);
+ list = output.models;
+ while (list) {
+ gchar *model;
+ model = (gchar *)list->data;
+ fprintf (file,".include %s/%s.model\n", OREGANO_MODELDIR, model);
+ list = list->next;
+ }
+
+ fputs ("*------------- Circuit Description-------------\n",file);
+ fputs (output.template->str,file);
+ fputs ("\n*----------------------------------------------\n",file);
+
+ /* Prints Transient Analisis */
+ if (sim_settings_get_trans (output.settings)) {
+ gchar *tmp_str = netlist_helper_create_analisys_string (output.store, FALSE);
+ fprintf(file, ".print tran %s\n", tmp_str);
+ g_free (tmp_str);
+
+ fprintf (file, ".tran %g %g ",
+ sim_settings_get_trans_start(output.settings),
+ sim_settings_get_trans_stop(output.settings));
+ if (!sim_settings_get_trans_step_enable(output.settings))
+ /* FIXME Do something to get the right resolution */
+ fprintf(file,"%g",
+ (sim_settings_get_trans_stop(output.settings)-
+ sim_settings_get_trans_start(output.settings))/100);
+ else
+ fprintf(file,"%g", sim_settings_get_trans_step(output.settings));
+
+ if (sim_settings_get_trans_init_cond(output.settings)) {
+ fputs(" UIC\n", file);
+ } else {
+ fputs("\n", file);
+ }
+ }
+
+ /* Print dc Analysis */
+ if (sim_settings_get_dc (output.settings)) {
+ fprintf(file, ".print dc %s\n", netlist_helper_create_analisys_string (output.store, FALSE));
+ fputs(".dc ",file);
+
+ /* GNUCAP don t support nesting so the first or the second */
+ /* Maybe a error message must be show if both are on */
+
+ if ( sim_settings_get_dc_vsrc (output.settings,0) ) {
+ fprintf (file,"%s %g %g %g",
+ sim_settings_get_dc_vsrc(output.settings,0),
+ sim_settings_get_dc_start (output.settings,0),
+ sim_settings_get_dc_stop (output.settings,0),
+ sim_settings_get_dc_step (output.settings,0) );
+ }
+
+ else if ( sim_settings_get_dc_vsrc (output.settings,1) ) {
+ fprintf (file,"%s %g %g %g",
+ sim_settings_get_dc_vsrc(output.settings,1),
+ sim_settings_get_dc_start (output.settings,1),
+ sim_settings_get_dc_stop (output.settings,1),
+ sim_settings_get_dc_step (output.settings,1) );
+ };
+
+ fputc ('\n',file);
+ }
+
+ /* Prints ac Analysis*/
+ if ( sim_settings_get_ac (output.settings) ) {
+ double ac_start, ac_stop, ac_step;
+ /* GNUCAP dont support OCT or DEC */
+ /* Maybe a error message must be show if is set in that way */
+ ac_start = sim_settings_get_ac_start(output.settings) ;
+ ac_stop = sim_settings_get_ac_stop(output.settings);
+ ac_step = (ac_stop - ac_start) / sim_settings_get_ac_npoints(output.settings);
+ fprintf(file, ".print ac %s\n", netlist_helper_create_analisys_string (output.store, TRUE));
+ /* AC format : ac start stop step_size */
+ fprintf (file, ".ac %g %g %g\n", ac_start, ac_stop, ac_step);
+ }
+
+ /* Debug op analysis. */
+ fputs(".print op v(nodes)\n", file);
+ fputs(".op\n", file);
+ fputs(".end\n", file);
+ fclose (file);
+}
+
+static void
+gnucap_progress (OreganoEngine *self, double *d)
+{
+ OreganoGnuCap *gnucap = OREGANO_GNUCAP (self);
+
+ gnucap->priv->progress += 0.1;
+ (*d) = gnucap->priv->progress;
+}
+
+static void
+gnucap_stop (OreganoEngine *self)
+{
+ OreganoGnuCap *gnucap = OREGANO_GNUCAP (self);
+ g_io_channel_shutdown (gnucap->priv->child_iochannel, TRUE, NULL);
+ g_source_remove (gnucap->priv->child_iochannel_watch);
+ g_spawn_close_pid (gnucap->priv->child_pid);
+ close (gnucap->priv->child_stdout);
+}
+
+static void
+gnucap_watch_cb (GPid pid, gint status, OreganoGnuCap *gnucap)
+{
+ /* check for status, see man waitpid(2) */
+ if (WIFEXITED (status)) {
+ gchar *line;
+ gint status;
+ gsize len;
+ g_io_channel_read_to_end (gnucap->priv->child_iochannel, &line, &len, NULL);
+ if (len > 0)
+ gnucap_parse (line, len, gnucap);
+ g_free (line);
+
+ /* Free stuff */
+ g_io_channel_shutdown (gnucap->priv->child_iochannel, TRUE, NULL);
+ g_source_remove (gnucap->priv->child_iochannel_watch);
+ g_spawn_close_pid (gnucap->priv->child_pid);
+ close (gnucap->priv->child_stdout);
+
+ gnucap->priv->current = NULL;
+
+ if (gnucap->priv->num_analysis == 0) {
+ schematic_log_append_error (gnucap->priv->schematic, _("### Too few or none analysis found ###\n"));
+ gnucap->priv->aborted = TRUE;
+ g_signal_emit_by_name (G_OBJECT (gnucap), "aborted");
+ } else
+ g_signal_emit_by_name (G_OBJECT (gnucap), "done");
+ }
+}
+
+static gboolean
+gnucap_child_stdout_cb (GIOChannel *source, GIOCondition condition, OreganoGnuCap *gnucap)
+{
+ gchar *line;
+ gsize len, terminator;
+ GIOStatus status;
+ GError *error = NULL;
+
+ status = g_io_channel_read_line (source, &line, &len, &terminator, &error);
+ if ((status & G_IO_STATUS_NORMAL) && (len > 0)) {
+ gnucap_parse (line, len, gnucap);
+ g_free (line);
+ }
+
+ /* Let UI update */
+ g_main_context_iteration (NULL, FALSE);
+ return TRUE;
+}
+
+static void
+gnucap_start (OreganoEngine *self)
+{
+ OreganoGnuCap *gnucap;
+ GError *error = NULL;
+ char *argv[] = {"gnucap", "-b", "/tmp/netlist.tmp", NULL};
+
+ gnucap = OREGANO_GNUCAP (self);
+ oregano_engine_generate_netlist (self, "/tmp/netlist.tmp", &error);
+ if (error != NULL) {
+ gnucap->priv->aborted = TRUE;
+ schematic_log_append_error (gnucap->priv->schematic, error->message);
+ g_signal_emit_by_name (G_OBJECT (gnucap), "aborted");
+ g_error_free (error);
+ return;
+ }
+
+ error = NULL;
+ if (g_spawn_async_with_pipes (
+ NULL, /* Working directory */
+ argv,
+ NULL,
+ G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH,
+ NULL,
+ NULL,
+ &gnucap->priv->child_pid,
+ NULL, /* STDIN */
+ &gnucap->priv->child_stdout, /* STDOUT */
+ NULL, /* STDERR*/
+ &error
+ )) {
+ /* Add a watch for process status */
+ g_child_watch_add (gnucap->priv->child_pid, (GChildWatchFunc)gnucap_watch_cb, gnucap);
+ /* Add a GIOChannel to read from process stdout */
+ gnucap->priv->child_iochannel = g_io_channel_unix_new (gnucap->priv->child_stdout);
+ /* Watch the I/O Channel to read child strout */
+ gnucap->priv->child_iochannel_watch = g_io_add_watch (gnucap->priv->child_iochannel,
+ G_IO_IN|G_IO_PRI|G_IO_HUP|G_IO_NVAL, (GIOFunc)gnucap_child_stdout_cb, gnucap);
+ } else {
+ gnucap->priv->aborted = TRUE;
+ schematic_log_append_error (gnucap->priv->schematic, _("Unable to execute GnuCap."));
+ g_signal_emit_by_name (G_OBJECT (gnucap), "aborted");
+ }
+}
+
+static GList*
+gnucap_get_results (OreganoEngine *self)
+{
+ return OREGANO_GNUCAP (self)->priv->analysis;
+}
+
+const gchar*
+gnucap_get_operation (OreganoEngine *self)
+{
+ OreganoGnuCapPriv *priv = OREGANO_GNUCAP (self)->priv;
+
+ if (priv->current == NULL)
+ return _("None");
+
+ return oregano_engine_get_analysis_name (priv->current);
+}
+
+static void
+gnucap_interface_init (gpointer g_iface, gpointer iface_data)
+{
+ OreganoEngineClass *klass = (OreganoEngineClass *)g_iface;
+ klass->start = gnucap_start;
+ klass->stop = gnucap_stop;
+ klass->progress = gnucap_progress;
+ klass->get_netlist = gnucap_generate_netlist;
+ klass->has_warnings = gnucap_has_warnings;
+ klass->get_results = gnucap_get_results;
+ klass->get_operation = gnucap_get_operation;
+ klass->is_available = gnucap_is_available;
+}
+
+static void
+gnucap_instance_init (GTypeInstance *instance, gpointer g_class)
+{
+ OreganoGnuCap *self = OREGANO_GNUCAP (instance);
+
+ self->priv = g_new0 (OreganoGnuCapPriv, 1);
+ self->priv->progress = 0.0;
+ self->priv->char_last_newline = TRUE;
+ self->priv->status = 0;
+ self->priv->buf_count = 0;
+ self->priv->num_analysis = 0;
+ self->priv->analysis = NULL;
+ self->priv->current = NULL;
+ self->priv->aborted = FALSE;
+}
+
+OreganoEngine*
+oregano_gnucap_new (Schematic *sc)
+{
+ OreganoGnuCap *gnucap;
+
+ gnucap = OREGANO_GNUCAP (g_object_new (OREGANO_TYPE_GNUCAP, NULL));
+ gnucap->priv->schematic = sc;
+
+ return OREGANO_ENGINE (gnucap);
+}
+
+typedef struct {
+ gchar *name;
+ //gchar *unit;
+} GCap_Variable;
+
+GCap_Variable *_get_variables(gchar *str, gint *count)
+{
+ GCap_Variable *out;
+ /* FIXME Improve the code */
+ gchar *tmp[100];
+ gchar *ini, *fin;
+ gint i = 0;
+
+ // Don't USE!. Is not smarty !!
+ // It generate empty strings that really sucks all!!!
+ //arr = g_strsplit_set (str, " ", -1);
+
+ i = 0;
+ ini = str;
+ /* saco espacios adelante */
+ while (isspace(*ini)) ini++;
+ fin = ini;
+ while (*fin != '\0') {
+ if (isspace(*fin)) {
+ *fin = '\0';
+ tmp[i] = g_strdup(ini);
+ *fin = ' ';
+ i++;
+ ini = fin;
+ while (isspace(*ini)) ini++;
+ fin = ini;
+ } else fin++;
+ }
+
+ if (i == 0) {
+ g_warning ("NO COLUMNS FOUND\n");
+ return NULL;
+ }
+
+ out = g_new0 (GCap_Variable, i);
+ (*count) = i;
+ for ( i=0; i<(*count); i++ ) {
+ out[i].name = tmp[i];
+ }
+
+ return out;
+}
+
+void
+_free_variables(GCap_Variable *v, gint count)
+{
+ int i;
+ for(i=0; i<count; i++)
+ g_free(v[i].name);
+ g_free(v);
+}
+
+gdouble
+strtofloat (char *s) {
+ gdouble val;
+ char *error;
+
+ val = strtod(s, &error);
+ /* If the value looks like : 100.u, adjust it */
+ /* We need this because GNU Cap's or ngSpice float notation */
+ switch (error[0]) {
+ case 'u':
+ val /= 1000000;
+ break;
+ case 'n':
+ val /= 1000000;
+ val /= 1000;
+ break;
+ case 'p':
+ val /= 1000000;
+ val /= 1000000;
+ break;
+ case 'f':
+ val /= 100;
+ break;
+ case 'K':
+ val *= 1000;
+ break;
+ default:
+ if (strcmp(error, "Meg") == 0) val *= 1000000;
+ }
+
+ return val;
+}
+
+/* Main method. Here we'll transform GnuCap output
+ * into SimulationResults!
+ */
+static void
+gnucap_parse (gchar *raw, gint len, OreganoGnuCap *gnucap)
+{
+ static SimulationData *sdata;
+ static Analysis *data;
+ GCap_Variable *variables;
+ OreganoGnuCapPriv *priv = gnucap->priv;
+ gint i, j, n;
+ gdouble val;
+ gchar *s;
+
+ for (j=0; j < len; j++) {
+ if (raw[j] != '\n') {
+ priv->buf[priv->buf_count++] = raw[j];
+ continue;
+ }
+ priv->buf[priv->buf_count] = '\0';
+
+ //Got a complete line
+ s = priv->buf;
+ if (s[0] == GNUCAP_TITLE) {
+ SimSettings *sim_settings;
+ gdouble np1, np2;
+
+ sim_settings = (SimSettings *)schematic_get_sim_settings (priv->schematic);
+
+ data = g_new0 (Analysis, 1);
+ priv->current = sdata = SIM_DATA (data);
+ priv->analysis = g_list_append (priv->analysis, sdata);
+ priv->num_analysis++;
+ sdata->state = STATE_IDLE;
+ sdata->type = ANALYSIS_UNKNOWN;
+ sdata->functions = NULL;
+
+ /* Calculates the quantity of variables */
+ variables = _get_variables(s, &n);
+
+ for (i = 0; i < TAGS_COUNT; i++)
+ if (IS_THIS_ITEM (variables[0].name, analisys_tags[i]))
+ sdata->type = i;
+
+ sdata->state = IN_VALUES;
+ sdata->n_variables = n;
+ sdata->got_points = 0;
+ sdata->got_var = 0;
+ sdata->var_names = (char**) g_new0 (gpointer, n);
+ sdata->var_units = (char**) g_new0 (gpointer, n);
+ sdata->data = (GArray**) g_new0 (gpointer, n);
+
+ for (i = 0; i < n; i++)
+ sdata->data[i] = g_array_new (TRUE, TRUE, sizeof (double));
+ sdata->min_data = g_new (double, n);
+ sdata->max_data = g_new (double, n);
+
+ for (i = 0; i < n; i++) {
+ sdata->min_data[i] = G_MAXDOUBLE;
+ sdata->max_data[i] = -G_MAXDOUBLE;
+ }
+ for (i = 0; i < n; i++) {
+ sdata->var_names[i] = g_strdup (variables[i].name);
+ switch (sdata->type) {
+ case TRANSIENT:
+ if (i==0)
+ sdata->var_units[i] = g_strdup (_("time"));
+ else {
+ if (strstr (sdata->var_names[i], "db") != NULL) {
+ sdata->var_units[i] = g_strdup ("db");
+ } else
+ sdata->var_units[i] = g_strdup (_("voltage"));
+ }
+ break;
+ case AC:
+ if (i == 0)
+ sdata->var_units[i] = g_strdup (_("frequency"));
+ else {
+ if (strstr (sdata->var_names[i], "db") != NULL) {
+ sdata->var_units[i] = g_strdup ("db");
+ } else
+ sdata->var_units[i] = g_strdup (_("voltage"));
+ }
+ break;
+ default:
+ sdata->var_units[i] = g_strdup ("");
+ }
+ }
+ sdata->n_variables = n;
+
+ switch (sdata->type) {
+ case TRANSIENT:
+ data->transient.sim_length =
+ sim_settings_get_trans_stop (sim_settings) -
+ sim_settings_get_trans_start (sim_settings);
+ data->transient.step_size =
+ sim_settings_get_trans_step (sim_settings);
+ break;
+ case AC:
+ data->ac.start = sim_settings_get_ac_start (sim_settings);
+ data->ac.stop = sim_settings_get_ac_stop (sim_settings);
+ data->ac.sim_length = sim_settings_get_ac_npoints (sim_settings);
+ break;
+ case OP_POINT:
+ case DC_TRANSFER:
+ np1 = np2 = 1.;
+ data->dc.start1 = sim_settings_get_dc_start (sim_settings,0);
+ data->dc.stop1 = sim_settings_get_dc_stop (sim_settings,0);
+ data->dc.step1 = sim_settings_get_dc_step (sim_settings,0);
+ data->dc.start2 = sim_settings_get_dc_start (sim_settings,1);
+ data->dc.stop2 = sim_settings_get_dc_stop (sim_settings,1);
+ data->dc.step2 = sim_settings_get_dc_step (sim_settings,1);
+ np1 = (data->dc.stop1 - data->dc.start1) / data->dc.step1;
+ if (data->dc.step2 != 0.0) {
+ np2 = (data->dc.stop2 - data->dc.start2) / data->dc.step2;
+ }
+ data->dc.sim_length = np1 * np2;
+ break;
+ case TRANSFER:
+ case DISTORTION:
+ case NOISE:
+ case POLE_ZERO:
+ case SENSITIVITY:
+ break;
+ case ANALYSIS_UNKNOWN:
+ g_error (_("Unknown analysis"));
+ break;
+ }
+ } else {
+ if ((priv->analysis == NULL) || (isalpha (s[0]))) {
+ if (priv->buf_count > 1) {
+ schematic_log_append (priv->schematic, s);
+ schematic_log_append (priv->schematic, "\n");
+ }
+ priv->buf_count = 0;
+ continue;
+ }
+
+ switch (sdata->state) {
+ case IN_VALUES:
+ val = strtofloat (s);
+ switch (sdata->type) {
+ case TRANSIENT:
+ priv->progress = val / data->transient.sim_length;
+ break;
+ case AC:
+ priv->progress = (val - data->ac.start) / data->ac.sim_length;
+ break;
+ case DC_TRANSFER:
+ priv->progress = val / data->ac.sim_length;
+ }
+ if (priv->progress > 1.0)
+ priv->progress = 1.0;
+
+ variables = _get_variables (s, &n);
+ for (i = 0; i < n; i++) {
+ val = strtofloat (variables[i].name);
+
+ sdata->data[i] = g_array_append_val (sdata->data[i], val);
+
+ /* Update the minimal and maximal values so far. */
+ if (val < sdata->min_data[i])
+ sdata->min_data[i] = val;
+ if (val > sdata->max_data[i])
+ sdata->max_data[i] = val;
+ }
+
+ _free_variables(variables, n);
+ sdata->got_points++;
+ sdata->got_var = n;
+ break;
+ default:
+ if (priv->buf_count > 1) {
+ if (strstr (s, _("abort")))
+ sdata->state = STATE_ABORT;
+ schematic_log_append_error (priv->schematic, s);
+ }
+ }
+ }
+ priv->buf_count = 0;
+ }
+}
+
diff --git a/src/engines/gnucap.h b/src/engines/gnucap.h
new file mode 100644
index 0000000..d65a33b
--- /dev/null
+++ b/src/engines/gnucap.h
@@ -0,0 +1,59 @@
+/*
+ * engine.c
+ *
+ * Authors:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ *
+ * Web page: http://oregano.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#ifndef __GNUCAP_ENGINE
+#define __GNUCAP_ENGINE
+
+#include <gtk/gtk.h>
+#include "engine.h"
+
+#define OREGANO_TYPE_GNUCAP (oregano_gnucap_get_type ())
+#define OREGANO_GNUCAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), OREGANO_TYPE_GNUCAP, OreganoGnuCap))
+#define OREGANO_GNUCAP_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), OREGANO_TYPE_GNUCAP, OreganoGnuCapClass))
+#define OREGANO_IS_GNUCAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), OREGANO_TYPE_GNUCAP))
+#define OREGANO_IS_GNUCAP_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), OREGANO_TYPE_GNUCAP))
+#define OREGANO_GNUCAP_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), OREGANO_TYPE_GNUCAP, OreganoGnuCapClass))
+
+typedef struct _OreganoGnuCap OreganoGnuCap;
+typedef struct _OreganoGnuCapPriv OreganoGnuCapPriv;
+typedef struct _OreganoGnuCapClass OreganoGnuCapClass;
+
+struct _OreganoGnuCap {
+ GObject parent;
+
+ OreganoGnuCapPriv *priv;
+};
+
+struct _OreganoGnuCapClass {
+ GObjectClass parent;
+};
+
+GType oregano_gnucap_get_type (void);
+OreganoEngine *oregano_gnucap_new (Schematic *sm);
+
+#endif
+
diff --git a/src/engines/netlist.c b/src/engines/netlist.c
new file mode 100644
index 0000000..05c370f
--- /dev/null
+++ b/src/engines/netlist.c
@@ -0,0 +1,689 @@
+/*
+ * netlist.c
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <gnome.h>
+#include <stdio.h>
+#include <string.h>
+#include <string.h>
+#include "main.h"
+#include "schematic.h"
+#include "node-store.h"
+#include "node.h"
+#include "wire.h"
+#include "part-private.h"
+#include "part-property.h"
+#include "netlist.h"
+#include "errors.h"
+
+static void netlist_helper_node_foreach_reset (gpointer key, gpointer value, gpointer user_data);
+static void netlist_helper_wire_traverse (Wire *wire, NetlistData *data);
+static void netlist_helper_node_traverse (Node *node, NetlistData *data);
+static void netlist_helper_node_foreach_traverse (gpointer key, gpointer value, NetlistData *data);
+static gboolean foreach_model_free (gpointer key, gpointer model, gpointer user_data);
+static gboolean foreach_model_save (gpointer key, gpointer model, gpointer user_data);
+static char *linebreak (char *str);
+static void nl_node_traverse (Node *node, GSList **lst);
+
+static void
+nl_wire_traverse (Wire *wire, GSList **lst)
+{
+ GSList *nodes;
+
+ g_return_if_fail (wire != NULL);
+ g_return_if_fail (IS_WIRE (wire));
+
+ if (wire_is_visited (wire))
+ return;
+
+ wire_set_visited (wire, TRUE);
+
+ for (nodes = wire_get_nodes (wire); nodes; nodes = nodes->next) {
+ GSList *pins;
+ Part *part;
+ Node *node = nodes->data;
+
+ for(pins=node->pins; pins; pins=pins->next) {
+ char *template, *tmp;
+ char **template_split;
+
+ part = PART (((Pin *)pins->data)->part);
+
+ tmp = part_get_property (part, "template");
+
+ if (!tmp) continue;
+
+ template = part_property_expand_macros (part, tmp);
+
+ template_split = g_strsplit (template, " ", 0);
+
+ (*lst) = g_slist_prepend (*lst, g_strdup (template_split[0]));
+
+ g_strfreev (template_split);
+ g_free (tmp);
+ g_free (template);
+ }
+
+ nl_node_traverse (node, lst);
+ }
+}
+
+static void
+nl_node_traverse (Node *node, GSList **lst)
+{
+ GSList *wires;
+
+ g_return_if_fail (node != NULL);
+ g_return_if_fail (IS_NODE (node));
+
+ if (node_is_visited (node))
+ return;
+
+ node_set_visited (node, TRUE);
+
+ for (wires = node->wires; wires; wires = wires->next) {
+ Wire *wire = wires->data;
+ nl_wire_traverse (wire, lst);
+ }
+}
+
+static GSList *
+netlist_helper_get_clamp_parts (NodeStore *store, Node *node)
+{
+ GList *wires;
+ GSList *lst;
+ Wire *wire;
+ GSList *ret=NULL;
+
+ if (!node) return NULL;
+
+ node_store_node_foreach (store, (GHFunc *)netlist_helper_node_foreach_reset, NULL);
+ for (wires = store->wires; wires; wires = wires->next) {
+ wire = wires->data;
+ wire_set_visited (wire, FALSE);
+ }
+
+ lst = node->wires;
+ while (lst) {
+ nl_wire_traverse (lst->data, &ret);
+ lst = lst->next;
+ }
+
+ return ret;
+}
+
+void
+netlist_helper_init_data (NetlistData *data)
+{
+ data->pins = g_hash_table_new (g_direct_hash, g_direct_equal);
+ data->models = g_hash_table_new (g_str_hash, g_str_equal);
+ data->node_nr = 1;
+ data->gnd_list = NULL;
+ data->clamp_list = NULL;
+ data->mark_list = NULL;
+ data->node_and_number_list = NULL;
+}
+
+void
+netlist_helper_node_foreach_reset (gpointer key, gpointer value, gpointer user_data)
+{
+ Node *node = value;
+
+ node_set_visited (node, FALSE);
+}
+
+void
+netlist_helper_wire_traverse (Wire *wire, NetlistData *data)
+{
+ GSList *nodes;
+
+ g_return_if_fail (wire != NULL);
+ g_return_if_fail (IS_WIRE (wire));
+
+ if (wire_is_visited (wire))
+ return;
+
+ wire_set_visited (wire, TRUE);
+
+ for (nodes = wire_get_nodes (wire); nodes; nodes = nodes->next) {
+ Node *node = nodes->data;
+
+ netlist_helper_node_traverse (node, data);
+ }
+}
+
+void
+netlist_helper_node_traverse (Node *node, NetlistData *data)
+{
+ GSList *wires, *pins;
+ gchar *prop;
+ NodeAndNumber *nan;
+
+ g_return_if_fail (node != NULL);
+ g_return_if_fail (IS_NODE (node));
+
+ if (node_is_visited (node))
+ return;
+
+ node_set_visited (node, TRUE);
+
+ /* Keep track of netlist nr <---> Node. */
+ nan = g_new0 (NodeAndNumber, 1);
+ nan->node_nr = data->node_nr;
+ nan->node = node;
+ data->node_and_number_list = g_list_prepend (data->node_and_number_list,
+ nan);
+
+ /* Traverse the pins at this node. */
+ for (pins = node->pins; pins; pins = pins->next) {
+ Pin *pin = pins->data;
+
+ /* First see if the pin belongs to an "internal", special part. */
+ prop = part_get_property (pin->part, "internal");
+ if (prop) {
+ if (!g_strcasecmp (prop, "marker")) {
+ Marker *marker;
+ gchar *name, *value;
+
+ name = part_get_property (pin->part, "name");
+
+ if (!name) {
+ g_free (prop);
+ continue;
+ }
+
+ value = part_property_expand_macros (pin->part, name);
+ g_free (name);
+
+ if (!value)
+ continue;
+
+ marker = g_new0 (Marker, 1);
+ marker->node_nr = data->node_nr;
+ marker->name = value;
+ data->mark_list = g_slist_prepend (data->mark_list, marker);
+ } else if (!g_strcasecmp (prop, "ground")) {
+ data->gnd_list = g_slist_prepend (data->gnd_list, GINT_TO_POINTER (data->node_nr));
+ } else if (!g_strcasecmp (prop, "point")) {
+ data->clamp_list = g_slist_prepend (data->clamp_list, GINT_TO_POINTER (data->node_nr));
+ } else if (!g_strncasecmp (prop, "jumper", 5)) {
+ /* Either jumper2 or jumper4. */
+ Node *opposite_node;
+ Pin opposite_pin;
+ gint pin_nr, opposite_pin_nr;
+ SheetPos pos;
+ Pin *jumper_pins;
+ gint num_pins;
+
+ opposite_pin_nr = -1;
+ num_pins = part_get_num_pins (pin->part);
+ jumper_pins = part_get_pins (pin->part);
+ for (pin_nr = 0; pin_nr < num_pins; pin_nr++) {
+ if (&jumper_pins[pin_nr] == pin) {
+ opposite_pin_nr = pin_nr;
+ break;
+ }
+ }
+
+ switch (opposite_pin_nr) {
+ case 0:
+ opposite_pin_nr = 1;
+ break;
+ case 1:
+ opposite_pin_nr = 0;
+ break;
+ case 2:
+ opposite_pin_nr = 3;
+ break;
+ case 3:
+ opposite_pin_nr = 2;
+ break;
+ default:
+ g_assert (TRUE);
+ break;
+ }
+
+ opposite_pin = jumper_pins[opposite_pin_nr];
+
+ item_data_get_pos (ITEM_DATA (pin->part), &pos);
+ pos.x += opposite_pin.offset.x;
+ pos.y += opposite_pin.offset.y;
+
+ opposite_node = node_store_get_node (data->store, pos);
+
+#if 0
+ if (node_is_visited (opposite_node)) {
+ GList *list;
+
+ /* Set the node name on the current node to the same as the
+ already visited node. */
+ for (list = data->node_and_number_list; list; list = list->next) {
+ NodeAndNumber *opposite_nan = list->data;
+
+ if (opposite_nan->node == opposite_node)
+ nan->node_nr = opposite_nan->node_nr;
+ }
+ }
+#endif
+ netlist_helper_node_traverse (opposite_node, data);
+ }
+
+ if (g_strcasecmp (prop, "point")) {
+ g_free (prop);
+ continue;
+ }
+ g_free(prop);
+ }
+
+ /* Keep track of models to include. Needs to be freed when the
+ * hash table is no longer needed.
+ */
+ prop = part_get_property (pin->part, "model");
+ if (prop) {
+ if (!g_hash_table_lookup (data->models, prop))
+ g_hash_table_insert (data->models, prop, NULL);
+ }
+
+ g_hash_table_insert (data->pins, pin, GINT_TO_POINTER (data->node_nr));
+ }
+
+ /* Traverse the wires at this node. */
+ for (wires = node->wires; wires; wires = wires->next) {
+ Wire *wire = wires->data;
+ netlist_helper_wire_traverse (wire, data);
+ }
+}
+
+void
+netlist_helper_node_foreach_traverse (gpointer key, gpointer value, NetlistData *data)
+{
+ Node *node = value;
+
+ /* Only visit nodes that are not already visited. */
+ if (node_is_visited (node))
+ return;
+
+ netlist_helper_node_traverse (node, data);
+
+ data->node_nr++;
+}
+
+gint
+compare_marker (gconstpointer a, gconstpointer b)
+{
+ const Marker *ma;
+ gint node_nr;
+
+ ma = a;
+ node_nr = GPOINTER_TO_INT (b);
+
+ if (ma->node_nr == node_nr)
+ return 0;
+ else
+ return 1;
+}
+
+gboolean
+foreach_model_save (gpointer key, gpointer model, gpointer user_data)
+{
+ GList **l = (GList **)user_data;
+
+ (*l) = g_list_prepend (*l, g_strdup ((gchar *)key));
+
+ return TRUE;
+}
+
+gboolean
+foreach_model_free (gpointer key, gpointer model, gpointer user_data)
+{
+ g_free (key);
+
+ return FALSE;
+}
+
+char *
+linebreak (char *str)
+{
+ char **split, *tmp;
+ GString *out;
+ int i;
+
+ split = g_strsplit (str, "\\", 0);
+
+ out = g_string_new ("");
+
+ i = 0;
+ while (split[i] != NULL) {
+ if (split[i][0] == 'n') {
+ if (strlen (split[i]) > 1) {
+ out = g_string_append_c (out, '\n');
+ out = g_string_append (out, split[i] + 1);
+ }
+ } else {
+ out = g_string_append (out, split[i]);
+ }
+
+ i++;
+ }
+
+ g_strfreev (split);
+ tmp = out->str;
+ g_string_free (out, FALSE); /* Don't free the string data. */
+ return tmp;
+}
+
+void
+netlist_helper_create (Schematic *sm, Netlist *out, GError **error)
+{
+ NetlistData data;
+ GList *parts, *wires, *list;
+ Part *part;
+ gint pin_nr, num_pins, num_nodes, num_gnd_nodes, i, j, num_clamps;
+ Pin *pins;
+ gchar *template, **template_split;
+ NodeStore *store;
+ gchar **node2real;
+
+ schematic_log_clear (sm);
+
+ out->models = NULL;
+ out->title = schematic_get_filename (sm);
+ out->settings = schematic_get_sim_settings (sm);
+ store = schematic_get_store (sm);
+ out->store = store;
+ node_store_node_foreach (store, (GHFunc *)netlist_helper_node_foreach_reset, NULL);
+ for (wires = store->wires; wires; wires = wires->next) {
+ Wire *wire = wires->data;
+ wire_set_visited (wire, FALSE);
+ }
+
+ netlist_helper_init_data (&data);
+ data.store = store;
+
+ node_store_node_foreach (store, (GHFunc *)netlist_helper_node_foreach_traverse, &data);
+
+ num_gnd_nodes = g_slist_length (data.gnd_list);
+ num_clamps = g_slist_length (data.clamp_list);
+
+ /* Check if there is a Ground node */
+ if (num_gnd_nodes == 0) {
+ schematic_log_append (sm, _("No ground node. Aborting.\n"));
+ schematic_log_show (sm);
+ g_set_error (error,
+ OREGANO_ERROR,
+ OREGANO_SIMULATE_ERROR_NO_GND,
+ _("Possibly due to a faulty circuit schematic. Please check that\n"
+ "you have a ground node and try again.")
+ );
+
+ /* FIXME!!! */
+ goto bail_out;
+ }
+
+ if (num_clamps == 0) {
+ schematic_log_append (sm, _("No test clamps found. Aborting.\n"));
+ schematic_log_show (sm);
+ g_set_error (error,
+ OREGANO_ERROR,
+ OREGANO_SIMULATE_ERROR_NO_CLAMP,
+ _("Possibly due to a faulty circuit schematic. Please check that\n"
+ "you have one o more test clamps and try again.")
+ );
+
+ goto bail_out;
+ }
+
+ num_nodes = data.node_nr - 1;
+
+ /*
+ * Build an array for going from node nr to "real node nr",
+ * where gnd nodes are nr 0 and the rest of the nodes are
+ * 1, 2, 3, ...
+ */
+ node2real = g_new0 (gchar*, num_nodes + 1);
+
+ for (i = 1, j = 1; i <= num_nodes; i++) {
+ GSList *mlist;
+
+ if (g_slist_find (data.gnd_list, GINT_TO_POINTER (i)))
+ node2real[i] = g_strdup ("0");
+ else if ((mlist = g_slist_find_custom (data.mark_list,
+ GINT_TO_POINTER (i),
+ compare_marker))) {
+ Marker *marker = mlist->data;
+ node2real[i] = g_strdup (marker->name);
+ }
+ else node2real[i] = g_strdup_printf ("%d", j++);
+ }
+
+
+ /*
+ * Fill in the netlist node names for all the used nodes.
+ */
+ for (list = data.node_and_number_list; list; list = list->next) {
+ NodeAndNumber *nan = list->data;
+ if (nan->node->netlist_node_name != NULL)
+ g_free (nan->node->netlist_node_name);
+ if (nan->node_nr != 0)
+ nan->node->netlist_node_name = g_strdup (node2real[nan->node_nr]);
+ }
+
+ /* Initialize out->template */
+ out->template = g_string_new("");
+ for (parts = store->parts; parts; parts = parts->next) {
+ gchar *tmp, *internal;
+ GString *str;
+
+ part = parts->data;
+ internal = part_get_property (part, "internal");
+ if (internal != NULL) {
+ gint node_nr;
+ Pin *pins;
+ if (g_strcasecmp (internal, "point") != 0) {
+ g_free (internal);
+ continue;
+ }
+
+ /* Got a clamp!, set node number */
+ pins = part_get_pins (part);
+ node_nr = GPOINTER_TO_INT (g_hash_table_lookup (data.pins, &pins[0]));
+ if (!node_nr) {
+ g_warning ("Couln't find part, pin_nr %d.", 0);
+ } else {
+ gchar *tmp;
+ tmp = node2real[node_nr];
+
+ /* need to substrac 1, netlist starts in 0, and node_nr in 1 */
+ pins[0].node_nr = atoi(node2real[node_nr]);
+ }
+ g_free (internal);
+ continue;
+ }
+
+ tmp = part_get_property (part, "template");
+ if (!tmp) {
+ continue;
+ }
+
+ template = part_property_expand_macros (part, tmp);
+ //g_print ("Template: '%s'\n" "macro : '%s'\n", tmp, template);
+ if (tmp != NULL) g_free (tmp);
+
+ tmp = linebreak (template);
+
+ if (template != NULL) g_free (template);
+ template = tmp;
+
+ num_pins = part_get_num_pins (part);
+ pins = part_get_pins (part);
+
+ template_split = g_strsplit (template, " ", 0);
+ if (template != NULL) g_free (template);
+ template = NULL;
+
+ str = g_string_new ("");
+
+ i = 0;
+ while (template_split[i] != NULL && template_split[i][0] != '%') {
+ g_string_append (str, template_split[i++]);
+ g_string_append_c (str , ' ');
+ //g_print ("str: %s\n", str->str);
+ }
+
+ //g_print ("Reading %d pins.\n)", num_pins);
+
+ for (pin_nr = 0; pin_nr < num_pins; pin_nr++) {
+ gint node_nr;
+ node_nr = GPOINTER_TO_INT (g_hash_table_lookup (data.pins, &pins[pin_nr]));
+ if (!node_nr) {
+ g_warning ("Couldn't find part, pin_nr %d.", pin_nr);
+ } else {
+ gchar *tmp;
+ tmp = node2real[node_nr];
+
+ /* need to substrac 1, netlist starts in 0, and node_nr in 1 */
+ pins[pin_nr].node_nr = atoi(node2real[node_nr]);
+ g_string_append (str, tmp);
+ g_string_append_c (str, ' ');
+ /*g_print ("str: %s\n", str->str);*/
+ i++;
+ }
+
+ while (template_split[i] != NULL) {
+ if (template_split[i][0] == '%')
+ break;
+
+ g_string_append (str, template_split[i]);
+ g_string_append_c (str, ' ');
+ //g_print ("str: %s\n", str->str);
+ i++;
+ }
+ }
+
+ //g_print ("Done with pins, i = %d\n", i);
+
+ while (template_split[i] != NULL) {
+ g_string_append (str, template_split[i]);
+ g_string_append_c (str, ' ');
+ //g_print ("str: %s\n", str->str);
+ i++;
+ }
+
+ g_strfreev (template_split);
+ //g_print ("str: %s\n", str->str);
+ out->template = g_string_append(out->template, str->str);
+ out->template = g_string_append_c(out->template, '\n');
+ g_string_free (str, TRUE);
+ }
+
+ for (i = 0; i < num_nodes + 1; i++) {
+ g_free (node2real[i]);
+ }
+ g_free (node2real);
+
+ g_hash_table_foreach (data.models, (GHFunc)foreach_model_save, &out->models);
+
+ return;
+
+bail_out:
+ g_hash_table_foreach (data.models, (GHFunc)foreach_model_free, NULL);
+ g_hash_table_destroy (data.models);
+ g_hash_table_destroy (data.pins);
+ for (list = data.node_and_number_list; list; list = list->next) {
+ NodeAndNumber *nan = list->data;
+ if (nan != NULL) g_free (nan);
+ }
+ g_list_free (data.node_and_number_list);
+}
+
+char *
+netlist_helper_create_analisys_string (NodeStore *store, gboolean do_ac)
+{
+ GList *parts;
+ GList *p;
+ gchar *prop, *type, *ac;
+ parts = node_store_get_parts (store);
+ GString *out;
+ gchar *ret;
+
+ out = g_string_new ("");
+
+ for(p=parts; p; p = p->next) {
+ prop = part_get_property (p->data, "internal");
+ if (prop) {
+ if (!g_strcasecmp (prop, "point")) {
+ Pin *pins = part_get_pins (p->data);
+ g_free (prop);
+
+ prop = part_get_property (p->data, "type");
+
+ if (!g_strcasecmp (prop, "v")) {
+ if (!do_ac) {
+ g_string_append_printf (out, " %s(%d)", prop, pins[0].node_nr);
+ } else {
+ gchar *ac_type, *ac_db;
+ ac_type = part_get_property (p->data, "ac_type");
+ ac_db = part_get_property (p->data, "ac_db");
+
+ if (!g_strcasecmp (ac_db, "true"))
+ g_string_append_printf (out, " %s%sdb(%d)", prop, ac_type, pins[0].node_nr);
+ else
+ g_string_append_printf (out, " %s%s(%d)", prop, ac_type, pins[0].node_nr);
+ }
+ } else {
+ Node *node;
+ SheetPos lookup_key;
+ SheetPos part_pos;
+
+ item_data_get_pos (ITEM_DATA (p->data), &part_pos);
+
+ lookup_key.x = part_pos.x + pins[0].offset.x;
+ lookup_key.y = part_pos.y + pins[0].offset.y;
+
+ node = node_store_get_or_create_node (store, lookup_key);
+
+ if (node) {
+ GSList *lst, *it;
+ it = lst = netlist_helper_get_clamp_parts (store, node);
+ while (it) {
+ g_string_append_printf (out, " i(%s)", (char *)it->data);
+ it = it->next;
+ }
+ g_slist_free (lst);
+ }
+ }
+ }
+ }
+ }
+
+ ret = out->str;
+ g_string_free (out, FALSE);
+ return ret;
+}
+
diff --git a/src/engines/netlist.h b/src/engines/netlist.h
new file mode 100644
index 0000000..9d9ca0f
--- /dev/null
+++ b/src/engines/netlist.h
@@ -0,0 +1,71 @@
+/*
+ * netlist.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __NETLIST_H
+#define __NETLIST_H
+
+#include <glib.h>
+#include "schematic.h"
+#include "sim-settings.h"
+
+typedef struct {
+ gint node_nr; ///< Node number
+ GHashTable *pins;
+ GHashTable *models;
+ GSList *gnd_list; ///< Ground parts on the schematic
+ GSList *clamp_list; ///< Test clamps on the schematic
+ GSList *mark_list;
+ GList *node_and_number_list;
+ NodeStore *store;
+} NetlistData;
+
+typedef struct {
+ gchar *cmd;
+ gchar *title;
+ GString *template;
+ SimSettings *settings;
+ NodeStore *store;
+ GList *models;
+} Netlist;
+
+typedef struct {
+ gint node_nr;
+ gchar *name;
+} Marker;
+
+typedef struct {
+ gint node_nr;
+ Node *node;
+} NodeAndNumber;
+
+void netlist_helper_init_data (NetlistData *data);
+void netlist_helper_create (Schematic *sm, Netlist *out, GError **error);
+char *netlist_helper_create_analisys_string (NodeStore *store, gboolean do_ac);
+
+#endif
diff --git a/src/engines/ngspice.c b/src/engines/ngspice.c
new file mode 100644
index 0000000..98c2372
--- /dev/null
+++ b/src/engines/ngspice.c
@@ -0,0 +1,633 @@
+/*
+ * ngspice.c
+ *
+ * Authors:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ *
+ * Web page: http://oregano.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <glib.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <ctype.h>
+#include "ngspice.h"
+#include "netlist.h"
+
+// TODO Move analisys data and result to another file
+#include "simulation.h"
+
+/* Parser STATUS */
+struct _OreganoNgSpicePriv {
+ GPid child_pid;
+ Schematic *schematic;
+
+ gboolean aborted;
+
+ GList *analysis;
+ gint num_analysis;
+ SimulationData *current;
+ double progress;
+ gboolean char_last_newline;
+ guint status;
+ guint buf_count;
+ gchar buf[256]; // FIXME later
+};
+
+static void ngspice_instance_init (GTypeInstance *instance, gpointer g_class);
+static void ngspice_interface_init (gpointer g_iface, gpointer iface_data);
+static gboolean ngspice_child_stdout_cb (GIOChannel *source, GIOCondition condition, OreganoNgSpice *ngspice);
+static void ngspice_parse (FILE *, OreganoNgSpice *ngspice);
+
+GType
+oregano_ngspice_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof (OreganoNgSpiceClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ NULL, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (OreganoNgSpice),
+ 0, /* n_preallocs */
+ ngspice_instance_init /* instance_init */
+ };
+
+ static const GInterfaceInfo ngspice_info = {
+ (GInterfaceInitFunc) ngspice_interface_init, /* interface_init */
+ NULL, /* interface_finalize */
+ NULL /* interface_data */
+ };
+
+ type = g_type_register_static (G_TYPE_OBJECT, "OreganoNgSpice", &info, 0);
+ g_type_add_interface_static (type, OREGANO_TYPE_ENGINE, &ngspice_info);
+ }
+ return type;
+}
+
+static gboolean
+ngspice_has_warnings (OreganoEngine *self)
+{
+ return FALSE;
+}
+
+static gboolean
+ngspice_is_available (OreganoEngine *self)
+{
+ gchar *exe;
+ exe = g_find_program_in_path ("ngspice");
+
+ if (!exe) return FALSE; // ngspice not found
+
+ g_free (exe);
+ return TRUE;
+}
+
+static void
+ngspice_generate_netlist (OreganoEngine *engine, const gchar *filename, GError **error)
+{
+ OreganoNgSpice *ngspice;
+ Netlist output;
+ GList *list;
+ SimOption *so;
+ GError *local_error = NULL;
+ FILE *file;
+
+ ngspice = OREGANO_NGSPICE (engine);
+
+ netlist_helper_create (ngspice->priv->schematic, &output, &local_error);
+ if (local_error != NULL) {
+ g_propagate_error (error, local_error);
+ return;
+ }
+
+ file = fopen (filename, "w");
+ if (!file) {
+ g_print ("Cannot create file %s\n", filename);
+ return;
+ }
+
+ /* Prints title */
+ fputs ("* ",file);
+ fputs (output.title ? output.title : "Title: <unset>", file);
+ fputs ("\n"
+ "*----------------------------------------------"
+ "\n"
+ "*\tSPICE 3 - NETLIST"
+ "\n", file);
+
+ /* Prints Options */
+ fputs (".options\n", file);
+
+ list = sim_settings_get_options (output.settings);
+ while (list) {
+ so = list->data;
+ if (so->value)
+ if (strlen(so->value) > 0)
+ fprintf (file,"+ %s=%s\n", so->name, so->value);
+ list = list->next;
+ }
+ fputc ('\n',file);
+
+ /* Include of subckt models */
+ fputs ("*------------- Models -------------------------\n",file);
+ list = output.models;
+ while (list) {
+ gchar *model;
+ model = (gchar *)list->data;
+ fprintf (file,".include %s/%s.model\n", OREGANO_MODELDIR, model);
+ list = list->next;
+ }
+
+ /* Prints template parts */
+ fputs ("\n*----------------------------------------------\n\n",file);
+ fputs (output.template->str, file);
+ fputs ("\n*----------------------------------------------\n\n",file);
+
+ /* Prints Transient Analisis */
+ if (sim_settings_get_trans (output.settings)) {
+ gdouble st = 0;
+ if (sim_settings_get_trans_step_enable (output.settings))
+ st = sim_settings_get_trans_step (output.settings);
+ else
+ st = (sim_settings_get_trans_stop (output.settings) -
+ sim_settings_get_trans_start (output.settings)) / 50;
+
+ fprintf (file, ".tran %g %g %g", st,
+ sim_settings_get_trans_stop (output.settings),
+ sim_settings_get_trans_start (output.settings));
+ if (sim_settings_get_trans_init_cond (output.settings)) {
+ fputs(" UIC\n", file);
+ } else {
+ fputs("\n", file);
+ }
+ }
+
+ /* Print dc Analysis */
+ if (sim_settings_get_dc (output.settings)) {
+ fputs(".dc ",file);
+ if (sim_settings_get_dc_vsrc (output.settings, 0)) {
+ fprintf (file, "%s %g %g %g",
+ sim_settings_get_dc_vsrc (output.settings, 0),
+ sim_settings_get_dc_start (output.settings, 0),
+ sim_settings_get_dc_stop (output.settings, 0),
+ sim_settings_get_dc_step (output.settings, 0));
+ }
+ if (sim_settings_get_dc_vsrc (output.settings, 1)) {
+ fprintf (file, "%s %g %g %g",
+ sim_settings_get_dc_vsrc (output.settings, 1),
+ sim_settings_get_dc_start (output.settings, 1),
+ sim_settings_get_dc_stop (output.settings, 1),
+ sim_settings_get_dc_step (output.settings, 1));
+ }
+ }
+
+ /* Prints ac Analysis*/
+ if (sim_settings_get_ac (output.settings)) {
+ fprintf (file, ".ac %s %d %g %g\n",
+ sim_settings_get_ac_type (output.settings),
+ sim_settings_get_ac_npoints (output.settings),
+ sim_settings_get_ac_start (output.settings),
+ sim_settings_get_ac_stop (output.settings));
+ }
+
+ /* Debug op analysis. */
+ fputs (".op\n", file);
+ fputs ("\n.END\n", file);
+ fclose (file);
+}
+
+static void
+ngspice_progress (OreganoEngine *self, double *d)
+{
+ (*d) = OREGANO_NGSPICE (self)->priv->progress;
+}
+
+static void
+ngspice_stop (OreganoEngine *self)
+{
+ OreganoNgSpice *ngspice = OREGANO_NGSPICE (self);
+ g_spawn_close_pid (ngspice->priv->child_pid);
+}
+
+static void
+ngspice_watch_cb (GPid pid, gint status, OreganoNgSpice *ngspice)
+{
+ /* check for status, see man waitpid(2) */
+ if (WIFEXITED (status)) {
+ FILE *fp;
+
+ g_spawn_close_pid (ngspice->priv->child_pid);
+
+ /* Parse data */
+ if ((fp = fopen ("/tmp/netlist.raw", "r")) != NULL) {
+ g_print ("File Open\n");
+ while (!feof (fp))
+ ngspice_parse (fp, ngspice);
+ }
+
+ ngspice->priv->current = NULL;
+
+ if (ngspice->priv->num_analysis == 0) {
+ schematic_log_append_error (ngspice->priv->schematic, _("### Too few or none analysis found ###\n"));
+ ngspice->priv->aborted = TRUE;
+ g_signal_emit_by_name (G_OBJECT (ngspice), "aborted");
+ } else
+ g_signal_emit_by_name (G_OBJECT (ngspice), "done");
+ }
+}
+
+static void
+ngspice_start (OreganoEngine *self)
+{
+ OreganoNgSpice *ngspice;
+ GError *error = NULL;
+ char *argv[] = {"ngspice", "-r", "/tmp/netlist.raw", "-b", "/tmp/netlist.tmp", NULL};
+
+ ngspice = OREGANO_NGSPICE (self);
+ oregano_engine_generate_netlist (self, "/tmp/netlist.tmp", &error);
+ if (error != NULL) {
+ ngspice->priv->aborted = TRUE;
+ schematic_log_append_error (ngspice->priv->schematic, error->message);
+ g_signal_emit_by_name (G_OBJECT (ngspice), "aborted");
+ g_error_free (error);
+ return;
+ }
+
+ error = NULL;
+ if (g_spawn_async_with_pipes (
+ NULL, /* Working directory */
+ argv,
+ NULL,
+ G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH,
+ NULL,
+ NULL,
+ &ngspice->priv->child_pid,
+ NULL, /* STDIN */
+ NULL, /* STDOUT */
+ NULL, /* STDERR*/
+ &error
+ )) {
+ /* Add a watch for process status */
+ g_child_watch_add (ngspice->priv->child_pid, (GChildWatchFunc)ngspice_watch_cb, ngspice);
+ } else {
+ ngspice->priv->aborted = TRUE;
+ schematic_log_append_error (ngspice->priv->schematic, _("Unable to execute NgSpice."));
+ g_signal_emit_by_name (G_OBJECT (ngspice), "aborted");
+ }
+}
+
+static GList*
+ngspice_get_results (OreganoEngine *self)
+{
+ return OREGANO_NGSPICE (self)->priv->analysis;
+}
+
+const gchar*
+ngspice_get_operation (OreganoEngine *self)
+{
+ OreganoNgSpicePriv *priv = OREGANO_NGSPICE (self)->priv;
+
+ if (priv->current == NULL)
+ return _("Waiting NgSpice backend");
+
+ return oregano_engine_get_analysis_name (priv->current);
+}
+
+static void
+ngspice_interface_init (gpointer g_iface, gpointer iface_data)
+{
+ OreganoEngineClass *klass = (OreganoEngineClass *)g_iface;
+ klass->start = ngspice_start;
+ klass->stop = ngspice_stop;
+ klass->progress = ngspice_progress;
+ klass->get_netlist = ngspice_generate_netlist;
+ klass->has_warnings = ngspice_has_warnings;
+ klass->get_results = ngspice_get_results;
+ klass->get_operation = ngspice_get_operation;
+ klass->is_available = ngspice_is_available;
+}
+
+static void
+ngspice_instance_init (GTypeInstance *instance, gpointer g_class)
+{
+ OreganoNgSpice *self = OREGANO_NGSPICE (instance);
+
+ self->priv = g_new0 (OreganoNgSpicePriv, 1);
+}
+
+OreganoEngine*
+oregano_ngspice_new (Schematic *sc)
+{
+ OreganoNgSpice *ngspice;
+
+ ngspice = OREGANO_NGSPICE (g_object_new (OREGANO_TYPE_NGSPICE, NULL));
+ ngspice->priv->schematic = sc;
+
+ return OREGANO_ENGINE (ngspice);
+}
+
+/* Parser stuff */
+
+/* By now, the parser read the STDOUt just like in GnuCap. In a near future I'll
+ * to use the raw outout feature of NgSpice wich will improve the parser
+ */
+
+typedef enum {
+ STATE_IDLE,
+ IN_VARIABLES,
+ IN_VALUES,
+ STATE_ABORT
+} ParseDataState;
+
+#define SP_TITLE "Title"
+#define SP_DATE "Date:"
+#define SP_PLOT_NAME "Plotname:"
+#define SP_FLAGS "Flags:"
+#define SP_N_VAR "No. Variables:"
+#define SP_N_POINTS "No. Points:"
+#define SP_COMMAND "Command:"
+#define SP_VARIABLES "Variables:"
+#define SP_BINARY "Binary:"
+#define SP_VALUES "Values:"
+#define IS_THIS_ITEM(str,item) (!strncmp(str,item,strlen(item)))
+
+static gchar *analysis_names[] = {
+ N_("Operating Point") ,
+ N_("Transient Analysis") ,
+ N_("DC transfer characteristic") ,
+ N_("AC Analysis") ,
+ N_("Transfer Function") ,
+ N_("Distortion Analysis") ,
+ N_("Noise Analysis") ,
+ N_("Pole-Zero Analysis") ,
+ N_("Sensitivity Analysis") ,
+ N_("Unknown Analysis") ,
+ NULL
+};
+
+#define NG_DEBUG(s) if (0) g_print ("%s\n", s)
+
+static void
+ngspice_parse (FILE *fp, OreganoNgSpice *ngspice)
+{
+ static SimulationData *sdata = NULL;
+ static char buf[1024];
+ static int len;
+ static is_complex = FALSE;
+ SimSettings *sim_settings;
+ gint status, iter;
+ gdouble val, np1, np2;
+ gchar **tmp = NULL;
+ gchar *send;
+ int i, c;
+
+ sim_settings = (SimSettings *)schematic_get_sim_settings (ngspice->priv->schematic);
+
+ if (!sdata || sdata->state != IN_VALUES) {
+ /* Read a line */
+ len = fscanf (fp, "%[^\n]", buf);
+ fgetc (fp);
+ if (len == 0) return;
+ NG_DEBUG (g_strdup_printf ("(%s)", buf));
+ } else {
+ buf[0] = '\0';
+ len = 0;
+ }
+
+ /* We are getting the simulation title */
+ if (IS_THIS_ITEM (buf, SP_TITLE)) {
+ sdata = SIM_DATA (g_new0 (Analysis, 1));
+ ngspice->priv->analysis = g_list_append (ngspice->priv->analysis, sdata);
+ ngspice->priv->num_analysis++;
+ NG_DEBUG ("Nuevo Analisis");
+ } else if (IS_THIS_ITEM (buf, SP_DATE)) {
+ sdata->state = STATE_IDLE;
+ } else if (IS_THIS_ITEM (buf,SP_PLOT_NAME)) {
+ gint i;
+ gchar *analysis = buf+strlen(SP_PLOT_NAME)+1;
+
+ NG_DEBUG ("Analisis Type");
+ sdata->state = STATE_IDLE;
+ sdata->type = ANALYSIS_UNKNOWN;
+ for (i = 0; analysis_names[i]; i++)
+ if (IS_THIS_ITEM (analysis, analysis_names[i])) {
+ sdata->type = i;
+ break;
+ }
+
+ switch ( sdata->type ) {
+ case TRANSIENT:
+ ANALYSIS(sdata)->transient.sim_length =
+ sim_settings_get_trans_stop (sim_settings) -
+ sim_settings_get_trans_start (sim_settings);
+ ANALYSIS(sdata)->transient.step_size =
+ sim_settings_get_trans_step (sim_settings);
+ break;
+ case AC:
+ ANALYSIS(sdata)->ac.start = sim_settings_get_ac_start (sim_settings);
+ ANALYSIS(sdata)->ac.stop = sim_settings_get_ac_stop (sim_settings);
+ ANALYSIS(sdata)->ac.sim_length = sim_settings_get_ac_npoints (sim_settings);
+ break;
+ case OP_POINT:
+ case DC_TRANSFER:
+ np1 = np2 = 1.;
+ ANALYSIS(sdata)->dc.start1 = sim_settings_get_dc_start (sim_settings, 0);
+ ANALYSIS(sdata)->dc.stop1 = sim_settings_get_dc_stop (sim_settings, 0);
+ ANALYSIS(sdata)->dc.step1 = sim_settings_get_dc_step (sim_settings, 0);
+ ANALYSIS(sdata)->dc.start2 = sim_settings_get_dc_start (sim_settings, 1);
+ ANALYSIS(sdata)->dc.stop2 = sim_settings_get_dc_stop (sim_settings, 1);
+ ANALYSIS(sdata)->dc.step2 = sim_settings_get_dc_step (sim_settings, 1);
+
+ np1 = (ANALYSIS(sdata)->dc.stop1-ANALYSIS(sdata)->dc.start1) / ANALYSIS(sdata)->dc.step1;
+ if (ANALYSIS(sdata)->dc.step2 != 0.) {
+ np2 = (ANALYSIS(sdata)->dc.stop2-ANALYSIS(sdata)->dc.start2) / ANALYSIS(sdata)->dc.step2;
+ }
+ ANALYSIS(sdata)->dc.sim_length = np1 * np2;
+ break;
+ case TRANSFER:
+ case DISTORTION:
+ case NOISE:
+ case POLE_ZERO:
+ case SENSITIVITY:
+ break;
+ case ANALYSIS_UNKNOWN:
+ g_error ("Unknown analysis: %s", analysis);
+ break;
+ }
+ ngspice->priv->current = sdata;
+ } else if (IS_THIS_ITEM(buf, SP_FLAGS) ) {
+ char *f = buf + strlen (SP_FLAGS) + 1;
+ if (strncmp (f, "complex", 7) == 0)
+ is_complex = TRUE;
+ else
+ is_complex = FALSE;
+ } else if (IS_THIS_ITEM (buf, SP_COMMAND)) {
+ /* pass */
+ } else if (IS_THIS_ITEM (buf, SP_N_VAR)) {
+ gint i, n = atoi (buf + strlen (SP_N_VAR));
+
+ NG_DEBUG (g_strdup_printf ("NVAR %d", n));
+ sdata->state = STATE_IDLE;
+ sdata->n_variables = n;
+ sdata->got_points = 0;
+ sdata->got_var = 0;
+ sdata->var_names = (char**) g_new0 (gpointer, n);
+ sdata->var_units = (char**) g_new0 (gpointer, n);
+ sdata->data = (GArray**) g_new0 (gpointer, n);
+ for (i = 0; i < n; i++)
+ sdata->data[i] = g_array_new (TRUE, TRUE, sizeof (double));
+ sdata->min_data = g_new (double, n);
+ sdata->max_data = g_new (double, n);
+ for (i = 0; i < n; i++) {
+ sdata->min_data[i] = G_MAXDOUBLE;
+ sdata->max_data[i] = -G_MAXDOUBLE;
+ }
+ } else if (IS_THIS_ITEM (buf, SP_N_POINTS)) {
+ sdata->state = STATE_IDLE;
+ sdata->n_points = atoi (buf + strlen (SP_N_POINTS));
+ NG_DEBUG (g_strdup_printf ("NPOINTS %d", sdata->n_points));
+ } else if (IS_THIS_ITEM (buf, SP_VARIABLES)) {
+ NG_DEBUG ("In variables");
+ sdata->state = IN_VARIABLES;
+ } else if (IS_THIS_ITEM (buf, SP_BINARY)) {
+ NG_DEBUG ("Data Bynari");
+ sdata->state = IN_VALUES;
+ sdata->binary = TRUE;
+ sdata->got_var = 0;
+ sdata->got_points = 0;
+ } else if (IS_THIS_ITEM (buf, SP_VALUES)) {
+ sdata->state = IN_VALUES;
+ sdata->binary = FALSE;
+ sdata->got_var = 0;
+ sdata->got_points = 0;
+ } else {
+ if (ngspice->priv->analysis == NULL) {
+ if (len > 1)
+ schematic_log_append (ngspice->priv->schematic, buf);
+ return;
+ }
+
+ switch (sdata->state) {
+ case IN_VARIABLES:
+ tmp = g_strsplit (buf, "\t", 0);
+ sdata->var_names[sdata->got_var] = g_strdup (tmp[2]);
+ sdata->var_units[sdata->got_var] = g_strdup (tmp[3]);
+ send = strchr (sdata->var_units[sdata->got_var], '\n');
+ if (send)
+ *send = 0;
+ g_strfreev (tmp);
+
+ if ((sdata->got_var + 1) < sdata->n_variables)
+ sdata->got_var++;
+ break;
+ case IN_VALUES:
+ if (sdata->binary) {
+ int i, j;
+ double d, dimg;
+ NG_DEBUG ("Reading Binary");
+ for (i=0; i<sdata->n_points; i++) {
+ for (j=0; j<sdata->n_variables; j++) {
+ /* TODO : This show always the real part only. We need to detect
+ * the probe settings for this node, and show the correct
+ * value : real, imaginary, module or phase, of the complex number.
+ */
+ fread (&d, sizeof (double), 1, fp);
+ if (is_complex)
+ fread (&dimg, sizeof (double), 1, fp);
+ if (j == 0) {
+ switch (sdata->type) {
+ case TRANSIENT:
+ ngspice->priv->progress = d / ANALYSIS(sdata)->transient.sim_length;
+ break;
+ case AC:
+ ngspice->priv->progress = (d - ANALYSIS(sdata)->ac.start) / ANALYSIS(sdata)->ac.sim_length;
+ break;
+ case DC_TRANSFER:
+ ngspice->priv->progress = ((gdouble) iter) / ANALYSIS(sdata)->ac.sim_length;
+ }
+ if (ngspice->priv->progress > 1.0)
+ ngspice->priv->progress = 1.0;
+ if (ngspice->priv->progress < 0.0)
+ ngspice->priv->progress = 0.0;
+ g_main_context_iteration (NULL, FALSE);
+ }
+ sdata->data[j] = g_array_append_val (sdata->data[j], d);
+
+ /* Update the minimal and maximal values so far. */
+ if (d < sdata->min_data[j])
+ sdata->min_data[j] = d;
+ if (d > sdata->max_data[j])
+ sdata->max_data[j] = d;
+ }
+ }
+ sdata->state = STATE_IDLE;
+ NG_DEBUG ("Reading Binary Done");
+ } else {
+ if (sdata->got_var)
+ sscanf(buf, "\t%lf", &val);
+ else
+ sscanf(buf, "%d\t\t%lf", &iter, &val);
+ if (sdata->got_var == 0) {
+ switch (sdata->type) {
+ case TRANSIENT:
+ ngspice->priv->progress = val / ANALYSIS(sdata)->transient.sim_length;
+ break;
+ case AC:
+ ngspice->priv->progress = (val - ANALYSIS(sdata)->ac.start) / ANALYSIS(sdata)->ac.sim_length;
+ break;
+ case DC_TRANSFER:
+ ngspice->priv->progress = ((gdouble) iter) / ANALYSIS(sdata)->ac.sim_length;
+ }
+ if (ngspice->priv->progress > 1.0)
+ ngspice->priv->progress = 1.0;
+ }
+
+ sdata->data[sdata->got_var] = g_array_append_val (sdata->data[sdata->got_var], val);
+
+ /* Update the minimal and maximal values so far. */
+ if (val < sdata->min_data[sdata->got_var])
+ sdata->min_data[sdata->got_var] = val;
+ if (val > sdata->max_data[sdata->got_var])
+ sdata->max_data[sdata->got_var] = val;
+
+ /* Check for the end of the point. */
+ if (sdata->got_var + 1 == sdata->n_variables) {
+ sdata->got_var = 0;
+ sdata->got_points++;
+ } else
+ sdata->got_var++;
+ }
+ break;
+ default:
+ if (len > 1) {
+ if (strstr (buf,"abort"))
+ sdata->state = STATE_ABORT;
+ schematic_log_append (ngspice->priv->schematic, buf);
+ }
+ break;
+ }
+ }
+}
+
diff --git a/src/engines/ngspice.h b/src/engines/ngspice.h
new file mode 100644
index 0000000..b422c15
--- /dev/null
+++ b/src/engines/ngspice.h
@@ -0,0 +1,59 @@
+/*
+ * ngspice.c
+ *
+ * Authors:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ *
+ * Web page: http://oregano.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#ifndef __NGSPICE_ENGINE
+#define __NGSPICE_ENGINE
+
+#include <gtk/gtk.h>
+#include "engine.h"
+
+#define OREGANO_TYPE_NGSPICE (oregano_ngspice_get_type ())
+#define OREGANO_NGSPICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), OREGANO_TYPE_NGSPICE, OreganoNgSpice))
+#define OREGANO_NGSPICE_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), OREGANO_TYPE_NGSPICE, OreganoNgSpiceClass))
+#define OREGANO_IS_NGSPICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), OREGANO_TYPE_NGSPICE))
+#define OREGANO_IS_NGSPICE_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), OREGANO_TYPE_NGSPICE))
+#define OREGANO_NGSPICE_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), OREGANO_TYPE_NGSPICE, OreganoNgSpiceClass))
+
+typedef struct _OreganoNgSpice OreganoNgSpice;
+typedef struct _OreganoNgSpicePriv OreganoNgSpicePriv;
+typedef struct _OreganoNgSpiceClass OreganoNgSpiceClass;
+
+struct _OreganoNgSpice {
+ GObject parent;
+
+ OreganoNgSpicePriv *priv;
+};
+
+struct _OreganoNgSpiceClass {
+ GObjectClass parent;
+};
+
+GType oregano_ngspice_get_type (void);
+OreganoEngine *oregano_ngspice_new (Schematic *sm);
+
+#endif
+
diff --git a/src/errors.c b/src/errors.c
new file mode 100644
index 0000000..df2d40b
--- /dev/null
+++ b/src/errors.c
@@ -0,0 +1,37 @@
+/*
+ * errors.c
+ *
+ *
+ * Author:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ *
+ * Copyright (C) 2003-2008 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include "errors.h"
+
+GQuark
+oregano_error_quark (void)
+{
+ static GQuark err = 0;
+ if (!err) {
+ err = g_quark_from_static_string ("oregano-error");
+ }
+ return err;
+}
+
diff --git a/src/errors.h b/src/errors.h
new file mode 100644
index 0000000..ffff6bc
--- /dev/null
+++ b/src/errors.h
@@ -0,0 +1,44 @@
+/*
+ * errors.h
+ *
+ *
+ * Author:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ *
+ * Copyright (C) 2003-2008 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#ifndef __ERRORS_H
+#define __ERRORS_H
+
+#include <glib.h>
+
+#define OREGANO_ERROR (oregano_error_quark())
+
+GQuark oregano_error_quark (void);
+
+typedef enum {
+ OREGANO_SIMULATE_ERROR_NO_GND,
+ OREGANO_SIMULATE_ERROR_NO_CLAMP,
+ OREGANO_SIMULATE_ERROR_IO_ERROR,
+ OREGANO_SCHEMATIC_BAD_FILE_FORMAT,
+ OREGANO_SCHEMATIC_FILE_NOT_FOUND,
+} OREGANO_ERRORS;
+
+#endif
+
diff --git a/src/file-manager.c b/src/file-manager.c
new file mode 100644
index 0000000..6a46698
--- /dev/null
+++ b/src/file-manager.c
@@ -0,0 +1,64 @@
+/*
+ * file-manager.c
+ *
+ *
+ * Authors:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include "file-manager.h"
+
+FileType file_types[] = {
+ FILE_TYPE("oregano", "Oregano Schematic File", schematic_parse_xml_file, schematic_write_xml)
+};
+
+#define FILE_TYPES_COUNT (sizeof(file_types)/sizeof(FileType))
+
+
+FileType *file_manager_get_handler (const gchar *fname)
+{
+ int i;
+ gchar *ext, *ptr;
+ FileType *ft = NULL;
+
+ g_return_val_if_fail (fname != NULL, NULL);
+
+ ptr = ext = (gchar *)fname;
+
+ /* Search for file extension */
+ while (*ptr != '\0') {
+ if (*ptr == '.') {
+ ext = ptr + 1;
+ }
+ ptr++;
+ }
+
+ for (i=0; i<FILE_TYPES_COUNT; i++)
+ if (!strcmp (file_types[i].extension, ext)) {
+ ft = &file_types[i];
+ break;
+ }
+
+ return ft;
+}
+
diff --git a/src/file-manager.h b/src/file-manager.h
new file mode 100644
index 0000000..d5cb087
--- /dev/null
+++ b/src/file-manager.h
@@ -0,0 +1,51 @@
+/*
+ * file-manager.h
+ *
+ *
+ * Authors:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#ifndef _FILE_MANAGER_H_
+#define _FILE_MANAGER_H_ 1
+
+#include <gtk/gtk.h>
+#include "schematic.h"
+
+/* Oregano Files */
+#include "load-schematic.h"
+#include "save-schematic.h"
+
+#define FILE_TYPE(a,b,c,d) {a, b, c, d}
+
+typedef struct _file_manager_ext_ {
+ gchar *extension;
+ gchar *description;
+ int (*load_func)(Schematic *schematic, const gchar *filename, GError **error);
+ int (*save_func)(Schematic *schematic, GError **error);
+} FileType;
+
+FileType *file_manager_get_handler (const gchar *fname);
+
+#endif
+
diff --git a/src/file.c b/src/file.c
new file mode 100644
index 0000000..89dd6fd
--- /dev/null
+++ b/src/file.c
@@ -0,0 +1,415 @@
+/*
+ * file.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#include <gnome.h>
+#include <string.h>
+#include "file.h"
+#include "schematic.h"
+#include "schematic-view.h"
+#include "dialogs.h"
+#include "save-schematic.h"
+
+#if (GTK_MINOR_VERSION >= 4)
+
+char *
+dialog_open_file (SchematicView *sv)
+{
+ GtkWidget *dialog;
+ GtkFileFilter *allfilter, *orefilter;
+ char *name;
+
+ allfilter = gtk_file_filter_new ();
+ orefilter = gtk_file_filter_new ();
+
+ gtk_file_filter_set_name (orefilter, _("Oregano Files"));
+ gtk_file_filter_add_pattern (orefilter, "*.oregano");
+ gtk_file_filter_set_name (allfilter, _("All Files"));
+ gtk_file_filter_add_pattern (allfilter, "*");
+
+ dialog = gtk_file_chooser_dialog_new (_("Open File"),
+ NULL,
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+ NULL);
+
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), orefilter);
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), allfilter);
+
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
+ name = gtk_file_chooser_get_filename (
+ GTK_FILE_CHOOSER (dialog));
+ if (name[strlen (name)-1] == '/')
+ name = NULL;
+ else
+ name = g_strdup (name);
+ } else
+ name = NULL;
+
+ gtk_widget_destroy (dialog);
+ return name;
+}
+
+void
+dialog_save_as (SchematicView *sv)
+{
+ GtkWidget *dialog;
+ GtkFileFilter *orefilter, *allfilter;
+ char *name;
+ Schematic *sm;
+ GError *error = NULL;
+
+ orefilter = gtk_file_filter_new ();
+ allfilter = gtk_file_filter_new ();
+ gtk_file_filter_set_name (orefilter, _("Oregano Files"));
+ gtk_file_filter_add_pattern (orefilter, "*.oregano");
+ gtk_file_filter_set_name (allfilter, _("All Files"));
+ gtk_file_filter_add_pattern (allfilter, "*");
+
+ dialog = gtk_file_chooser_dialog_new (_("Save File"),
+ NULL,
+ GTK_FILE_CHOOSER_ACTION_SAVE,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
+ NULL);
+
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), orefilter);
+ gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), allfilter);
+
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
+
+ name = gtk_file_chooser_get_filename (
+ GTK_FILE_CHOOSER (dialog));
+ if (name [strlen (name) - 1] != '/') {
+ gchar *tmp;
+ const gchar *base = g_path_get_basename (name);
+
+ if (strchr (base, '.') == NULL){
+ tmp = g_strconcat (name, ".oregano", NULL);
+ } else {
+ tmp = g_strdup (name);
+ }
+
+ sm = schematic_view_get_schematic (sv);
+
+ schematic_set_filename (sm, tmp);
+ // schematic_set_title (sm, (gchar *) g_basename (tmp));
+
+ if (!schematic_save_file (sm, &error)){
+ char *msg = g_strdup_printf (
+ "Could not save Schematic file %s\n",
+ tmp);
+ oregano_error (msg);
+ g_free (msg);
+ g_free (name);
+ }
+ g_free (tmp);
+ }
+ }
+
+ gtk_widget_destroy (dialog);
+}
+
+char *
+dialog_netlist_file (SchematicView *sv)
+{
+ GtkWidget *dialog;
+ char *name = NULL;
+
+ dialog = gtk_file_chooser_dialog_new (_("Netlist File"),
+ NULL,
+ GTK_FILE_CHOOSER_ACTION_SAVE,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
+ NULL);
+
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
+ name = gtk_file_chooser_get_filename (
+ GTK_FILE_CHOOSER (dialog));
+
+ if (name[strlen (name) - 1] == '/') {
+ g_free (name);
+ name = NULL;
+ } else
+ name = g_strdup (name);
+ } else
+ name = NULL;
+
+ gtk_widget_destroy (dialog);
+ return name;
+}
+
+char *
+dialog_file_open (const gchar *title)
+{
+ GtkWidget *dialog;
+ char *name = NULL;
+
+ dialog = gtk_file_chooser_dialog_new (title,
+ NULL,
+ GTK_FILE_CHOOSER_ACTION_SAVE,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
+ NULL);
+
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
+ name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+
+ if (name[strlen (name) - 1] == '/') {
+ g_free (name);
+ name = NULL;
+ } else
+ name = g_strdup (name);
+ } else
+ name = NULL;
+
+ gtk_widget_destroy (dialog);
+ return name;
+}
+
+#else
+static void
+set_ok (GtkWidget *widget, gboolean *dialog_result)
+{
+ *dialog_result = TRUE;
+ gtk_main_quit ();
+}
+
+static guint
+file_dialog_delete_event (GtkWidget *widget, GdkEventAny *event)
+{
+ gtk_main_quit ();
+ return TRUE;
+}
+
+char *
+dialog_open_file (SchematicView *sv)
+{
+ GtkFileSelection *fsel;
+ gboolean accepted = FALSE;
+ char *result;
+
+ g_return_val_if_fail (sv != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC_VIEW (sv), NULL);
+
+ fsel = GTK_FILE_SELECTION (gtk_file_selection_new (_("Open file")));
+ gtk_window_set_modal (GTK_WINDOW (fsel), TRUE);
+
+ gtk_window_set_transient_for (GTK_WINDOW (fsel),
+ GTK_WINDOW (sv->toplevel));
+
+ /* Connect the signals for Ok and Cancel. */
+ g_signal_connect (G_OBJECT (fsel->ok_button), "clicked",
+ GTK_SIGNAL_FUNC (set_ok), &accepted);
+ g_signal_connect (G_OBJECT (fsel->cancel_button), "clicked",
+ GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
+ gtk_window_set_position (GTK_WINDOW (fsel), GTK_WIN_POS_MOUSE);
+
+ /* Make sure that we quit the main loop if the window is destroyed. */
+ g_signal_connect (G_OBJECT (fsel), "delete_event",
+ GTK_SIGNAL_FUNC (file_dialog_delete_event), NULL);
+
+ gtk_widget_show (GTK_WIDGET (fsel));
+ gtk_grab_add (GTK_WIDGET (fsel));
+ gtk_main ();
+
+ if (accepted){
+ const gchar *name = gtk_file_selection_get_filename (fsel);
+
+ if (name[strlen (name)-1] == '/')
+ result = NULL;
+ else
+ result = g_strdup (name);
+ } else
+ result = NULL;
+
+ gtk_widget_destroy (GTK_WIDGET (fsel));
+
+ return result;
+}
+
+void
+dialog_save_as (SchematicView *sv)
+{
+ Schematic *sm;
+ GtkFileSelection *fsel;
+ gboolean accepted = FALSE;
+ char *filename;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ sm = schematic_view_get_schematic (sv);
+
+ fsel = GTK_FILE_SELECTION (
+ gtk_file_selection_new (_("Save schematic as")));
+
+ gtk_window_set_modal (GTK_WINDOW (fsel), TRUE);
+ filename = schematic_get_filename (sm);
+ if (filename)
+ gtk_file_selection_set_filename (fsel, filename);
+
+ /* Connect the signals for Ok and Cancel. */
+ g_signal_connect (G_OBJECT (fsel->ok_button), "clicked",
+ GTK_SIGNAL_FUNC (set_ok), &accepted);
+ g_signal_connect (G_OBJECT (fsel->cancel_button), "clicked",
+ GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
+ gtk_window_set_position (GTK_WINDOW (fsel), GTK_WIN_POS_MOUSE);
+
+ /* Make sure that we quit the main loop if the window is destroyed. */
+ g_signal_connect (G_OBJECT (fsel), "delete_event",
+ GTK_SIGNAL_FUNC (file_dialog_delete_event), NULL);
+
+ gtk_widget_show (GTK_WIDGET (fsel));
+ gtk_grab_add (GTK_WIDGET (fsel));
+ gtk_main ();
+
+ if (accepted){
+ const gchar *name = gtk_file_selection_get_filename (fsel);
+
+ if (name [strlen (name) - 1] != '/') {
+ gchar *tmp;
+ const gchar *base = g_basename (name);
+
+ if (strchr (base, '.') == NULL){
+ tmp = g_strconcat (name, ".oregano", NULL);
+ } else
+ tmp = g_strdup (name);
+
+ schematic_set_filename (sm, tmp);
+ // schematic_set_title (sm, (gchar *) g_basename (tmp));
+
+ if (!schematic_save_file (sm)){
+ char *msg = g_strdup_printf (
+ "Could not save Schematic file %s\n",
+ tmp);
+
+ oregano_error (msg);
+ g_free (msg);
+ } else {
+ schematic_set_dirty (schematic_view_get_schematic (sv), FALSE);
+ }
+ g_free (tmp);
+ }
+ }
+
+ gtk_widget_destroy (GTK_WIDGET (fsel));
+}
+
+char *
+dialog_netlist_file (SchematicView *sv)
+{
+ GtkFileSelection *fsel;
+ gboolean accepted = FALSE;
+ char *result = NULL;
+
+ g_return_val_if_fail (sv != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC_VIEW (sv), NULL);
+
+ fsel = GTK_FILE_SELECTION (
+ gtk_file_selection_new (_("Netlist filename")));
+ gtk_window_set_modal (GTK_WINDOW (fsel), TRUE);
+
+ gtk_window_set_transient_for (GTK_WINDOW (fsel),
+ GTK_WINDOW (sv->toplevel));
+
+ /* Connect the signals for Ok and Cancel. */
+ g_signal_connect (G_OBJECT (fsel->ok_button), "clicked",
+ GTK_SIGNAL_FUNC (set_ok), &accepted);
+ g_signal_connect (G_OBJECT (fsel->cancel_button), "clicked",
+ GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
+ gtk_window_set_position (GTK_WINDOW (fsel), GTK_WIN_POS_MOUSE);
+
+ /* Make sure that we quit the main loop if the window is destroyed. */
+ g_signal_connect (G_OBJECT (fsel), "delete_event",
+ GTK_SIGNAL_FUNC (file_dialog_delete_event), NULL);
+
+ gtk_widget_show (GTK_WIDGET (fsel));
+ gtk_grab_add (GTK_WIDGET (fsel));
+ gtk_main ();
+
+ if (accepted) {
+ const gchar *name = gtk_file_selection_get_filename (fsel);
+
+ if (name[strlen (name) - 1] == '/')
+ result = NULL;
+ else
+ result = g_strdup (name);
+ } else
+ result = NULL;
+
+ gtk_widget_destroy (GTK_WIDGET (fsel));
+
+ return result;
+}
+
+char *
+dialog_file_open (const gchar *title)
+{
+ GtkFileSelection *fsel;
+ gboolean accepted = FALSE;
+ char *result = NULL;
+
+ fsel = GTK_FILE_SELECTION (
+ gtk_file_selection_new (title));
+ gtk_window_set_modal (GTK_WINDOW (fsel), TRUE);
+
+ gtk_window_set_transient_for (GTK_WINDOW (fsel),
+ GTK_WINDOW (sv->toplevel));
+
+ /* Connect the signals for Ok and Cancel. */
+ g_signal_connect (G_OBJECT (fsel->ok_button), "clicked",
+ GTK_SIGNAL_FUNC (set_ok), &accepted);
+ g_signal_connect (G_OBJECT (fsel->cancel_button), "clicked",
+ GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
+ gtk_window_set_position (GTK_WINDOW (fsel), GTK_WIN_POS_MOUSE);
+
+ /* Make sure that we quit the main loop if the window is destroyed. */
+ g_signal_connect (G_OBJECT (fsel), "delete_event",
+ GTK_SIGNAL_FUNC (file_dialog_delete_event), NULL);
+
+ gtk_widget_show (GTK_WIDGET (fsel));
+ gtk_grab_add (GTK_WIDGET (fsel));
+ gtk_main ();
+
+ if (accepted) {
+ const gchar *name = gtk_file_selection_get_filename (fsel);
+
+ if (name[strlen (name) - 1] == '/')
+ result = NULL;
+ else
+ result = g_strdup (name);
+ } else
+ result = NULL;
+
+ gtk_widget_destroy (GTK_WIDGET (fsel));
+
+ return result;
+}
+#endif
diff --git a/src/file.h b/src/file.h
new file mode 100644
index 0000000..e47aea5
--- /dev/null
+++ b/src/file.h
@@ -0,0 +1,42 @@
+/*
+ * file.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __FILE_H
+#define __FILE_H
+
+#include <libgnome/gnome-i18n.h>
+#include "schematic-view.h"
+
+/* FIXME : unificar API!! */
+char *dialog_open_file (SchematicView *sv);
+void dialog_save_as (SchematicView *sv);
+char *dialog_netlist_file (SchematicView *sv);
+char *dialog_file_open (const gchar *file);
+
+#endif
diff --git a/src/gplot/Makefile.am b/src/gplot/Makefile.am
new file mode 100644
index 0000000..85665ee
--- /dev/null
+++ b/src/gplot/Makefile.am
@@ -0,0 +1,14 @@
+oreganodir = $(datadir)/oregano
+INCLUDES = \
+ $(OREGANO_CFLAGS)
+
+noinst_LIBRARIES = libgplot.a
+libgplot_a_SOURCES = \
+ gplot.c \
+ gplotfunction.c \
+ gplotfunction.h \
+ gplot.h \
+ gplotlines.c \
+ gplotlines.h
+
+libgplot_a_LIBADD = libgplot.a
diff --git a/src/gplot/gplot.c b/src/gplot/gplot.c
new file mode 100644
index 0000000..b41408d
--- /dev/null
+++ b/src/gplot/gplot.c
@@ -0,0 +1,839 @@
+/*
+ * gplot.c
+ *
+ * Authors:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * This library 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 library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <math.h>
+#include "gplot.h"
+
+#define BORDER_SIZE 50
+
+static void g_plot_class_init (GPlotClass* class);
+static void g_plot_init (GPlot* plot);
+static gint g_plot_expose (GtkWidget* widget, GdkEventExpose* event);
+static cairo_t* g_plot_create_cairo (GPlot *);
+static gboolean g_plot_motion_cb (GtkWidget *, GdkEventMotion *, GPlot *);
+static gboolean g_plot_button_press_cb (GtkWidget *, GdkEventButton *, GPlot *);
+static gboolean g_plot_button_release_cb (GtkWidget *, GdkEventButton *, GPlot *);
+static void g_plot_update_bbox (GPlot *);
+static void g_plot_finalize (GObject *object);
+static void g_plot_dispose (GObject *object);
+
+static void get_order_of_magnitude (gdouble val, gdouble *man, gdouble *pw);
+
+enum {
+ ACTION_NONE,
+ ACTION_STARTING_PAN,
+ ACTION_PAN,
+ ACTION_STARTING_REGION,
+ ACTION_REGION
+};
+
+static GtkLayoutClass* parent_class = NULL;
+
+struct _GPlotPriv {
+ GList *functions;
+
+ gchar *xlabel;
+ gchar *xlabel_unit;
+ gchar *ylabel;
+ gchar *ylabel_unit;
+
+ gdouble left_border;
+ gdouble right_border;
+ gdouble top_border;
+ gdouble bottom_border;
+
+ guint zoom_mode;
+ guint action;
+ gdouble zoom;
+ gdouble offset_x;
+ gdouble offset_y;
+ gdouble last_x;
+ gdouble last_y;
+
+ /* Window->Viewport * Transformation Matrix */
+ cairo_matrix_t matrix;
+
+ gboolean window_valid;
+ GPlotFunctionBBox window_bbox;
+ GPlotFunctionBBox viewport_bbox;
+
+ GPlotFunctionBBox rubberband;
+};
+
+GType
+g_plot_get_type ()
+{
+ static GType g_plot_type = 0;
+
+ if (!g_plot_type) {
+ static const GTypeInfo g_plot_info = {
+ sizeof (GPlotClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) g_plot_class_init,
+ NULL,
+ NULL,
+ sizeof (GPlot),
+ 0,
+ (GInstanceInitFunc) g_plot_init,
+ NULL
+ };
+ g_plot_type = g_type_register_static (GTK_TYPE_LAYOUT, "GPlot", &g_plot_info, 0);
+ }
+ return g_plot_type;
+}
+
+static void
+g_plot_class_init (GPlotClass* class)
+{
+ GObjectClass* object_class;
+ GtkWidgetClass* widget_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ widget_class = GTK_WIDGET_CLASS (class);
+ parent_class = g_type_class_peek_parent (class);
+
+ widget_class->expose_event = g_plot_expose;
+
+ object_class->dispose = g_plot_dispose;
+ object_class->finalize = g_plot_finalize;
+}
+
+static cairo_t*
+g_plot_create_cairo (GPlot *p)
+{
+ cairo_t *cr;
+
+ cr = gdk_cairo_create (GTK_LAYOUT (p)->bin_window);
+
+ return cr;
+}
+
+static void
+g_plot_finalize (GObject *object)
+{
+ GPlot *p = GPLOT (object);
+
+ if (p->priv->xlabel)
+ g_free (p->priv->xlabel);
+
+ if (p->priv->ylabel)
+ g_free (p->priv->ylabel);
+
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+g_plot_dispose (GObject *object)
+{
+ GList *lst;
+ GPlot *plot;
+
+ plot = GPLOT (object);
+
+ lst = plot->priv->functions;
+ while (lst) {
+ GPlotFunction *f = (GPlotFunction *)lst->data;
+ g_object_unref (G_OBJECT (f));
+ lst = lst->next;
+ }
+ g_list_free (plot->priv->functions);
+ plot->priv->functions = NULL;
+
+ G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static int
+get_best_exponent (int div)
+{
+ /* http://en.wikipedia.org/wiki/Micro */
+ switch (div) {
+ case -24:
+ case -21:
+ case -18:
+ case -15:
+ case -12:
+ case -9:
+ case -6:
+ case -3:
+ case 0:
+ case 3:
+ case 6:
+ case 9:
+ case 12:
+ case 15:
+ case 18:
+ case 21:
+ case 24:
+ return div;
+ }
+ if (div == -1) return -3;
+
+ if ((div - 1) % 3 == 0)
+ return div - 1;
+ return div + 1;
+}
+
+void
+draw_axis (cairo_t *cr, GPlotFunctionBBox *bbox, gdouble min, gdouble max, gboolean vertical, gint *div)
+{
+ gchar *label;
+ cairo_text_extents_t extents;
+ gdouble i, j;
+ gdouble x1, y1, x2, y2, x3, y3;
+ gdouble step = (max - min) / 10.0;
+ gdouble s;
+ gdouble divisor;
+ gdouble man1, pw1, man2, pw2;
+
+ get_order_of_magnitude (min, &man1, &pw1);
+ get_order_of_magnitude (max, &man2, &pw2);
+ (*div) = get_best_exponent ((pw2+pw1) / 2.0 + 0.5);
+ if ((*div) == 0)
+ divisor = 1;
+ else
+ divisor = pow (10, *div);
+
+ if (vertical)
+ s = (bbox->ymax - bbox->ymin) / 10.0;
+ else
+ s = (bbox->xmax - bbox->xmin) / 10.0;
+
+ for (i = (vertical?bbox->ymin:bbox->xmin), j = max; i <= (vertical?bbox->ymax:bbox->xmax) + 0.5; i += s, j -= step) {
+ label = g_strdup_printf ("%.2f", j / divisor);
+ cairo_text_extents (cr, label, &extents);
+
+ if (vertical) {
+ x1 = bbox->xmin - 4;
+ y1 = i;
+ x2 = bbox->xmin + 4;
+ y2 = i;
+ x3 = bbox->xmin - extents.width * 1.5;
+ y3 = i + extents.height / 2.0;
+ } else {
+ x1 = i;
+ y1 = bbox->ymax - 4;
+ x2 = i;
+ y2 = bbox->ymax + 4;
+ x3 = i;
+ y3 = bbox->ymax + extents.height * 1.5;
+ }
+
+ cairo_move_to (cr, x1, y1);
+ cairo_line_to (cr, x2, y2);
+ cairo_move_to (cr, x3, y3);
+ cairo_show_text (cr, label);
+ g_free (label);
+ }
+ cairo_stroke (cr);
+}
+
+static gchar*
+get_unit_text (int div)
+{
+ /* http://en.wikipedia.org/wiki/Micro */
+ switch (div) {
+ case -24: return g_strdup ("y");
+ case -21: return g_strdup ("z");
+ case -18: return g_strdup ("a");
+ case -15: return g_strdup ("f");
+ case -12: return g_strdup ("p");
+ case -9: return g_strdup ("n");
+ case -6: return g_strdup ("\302\265");
+ case -3: return g_strdup ("m");
+ case 0: return g_strdup ("");
+ case 3: return g_strdup ("k");
+ case 6: return g_strdup ("M");
+ case 9: return g_strdup ("G");
+ case 12: return g_strdup ("T");
+ case 15: return g_strdup ("P");
+ case 18: return g_strdup ("E");
+ case 21: return g_strdup ("Z");
+ case 24: return g_strdup ("Y");
+ }
+
+ return g_strdup_printf ("10e%02d", div);
+}
+
+static gint
+g_plot_expose (GtkWidget* widget, GdkEventExpose* event)
+{
+ static double dashes[] = {3, /* ink */
+ 3, /* skip */
+ 3, /* ink */
+ 3 /* skip*/ };
+ static int ndash = sizeof (dashes)/sizeof(dashes[0]);
+ static double offset = -0.2;
+
+ GPlot *plot;
+ GPlotPriv *priv;
+ cairo_t* cr;
+ guint width;
+ guint height;
+ guint graph_width;
+ guint graph_height;
+ GPlotFunction *f;
+ GList *lst;
+ GPlotFunctionBBox bbox;
+ gdouble aX, bX, aY, bY;
+ gint div;
+ int i = 0;
+ cairo_text_extents_t extents;
+
+ plot = GPLOT (widget);
+ priv = plot->priv;
+
+ if (!priv->window_valid) {
+ g_plot_update_bbox (plot);
+ }
+
+ width = widget->allocation.width;
+ height = widget->allocation.height;
+
+ graph_width = width - priv->left_border - priv->right_border;
+ graph_height = height - priv->top_border - priv->bottom_border;
+
+ cr = g_plot_create_cairo (plot);
+
+ /* Set a clip region for the expose event */
+ /* TODO :This is useful if we use gtk_widget_queue_draw_area */
+ cairo_rectangle (cr, event->area.x, event->area.y, event->area.width, event->area.height);
+ cairo_clip (cr);
+
+ /* Paint background */
+ cairo_save (cr);
+ cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
+ cairo_rectangle (cr, 0, 0, width, height);
+ cairo_fill (cr);
+ cairo_restore (cr);
+
+ /* Plot Border */
+ cairo_save (cr);
+ cairo_set_line_width (cr, 0.5);
+ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
+ cairo_rectangle (cr, priv->left_border, priv->right_border, graph_width, graph_height);
+ cairo_stroke (cr);
+ cairo_restore (cr);
+
+ /* TODO : Move this to SizeAllocation functions */
+ priv->viewport_bbox.xmax = widget->allocation.width - priv->right_border;
+ priv->viewport_bbox.xmin = priv->left_border;
+ priv->viewport_bbox.ymax = widget->allocation.height - priv->bottom_border;
+ priv->viewport_bbox.ymin = priv->top_border;
+
+ /* Save real bbox */
+ bbox = priv->window_bbox;
+
+ /* Calculating Window to Viewport matrix */
+ aX = (priv->viewport_bbox.xmax - priv->viewport_bbox.xmin)
+ / (priv->window_bbox.xmax - priv->window_bbox.xmin);
+ bX = -aX * priv->window_bbox.xmin + priv->viewport_bbox.xmin;
+ aY = (priv->viewport_bbox.ymax - priv->viewport_bbox.ymin)
+ / (priv->window_bbox.ymin - priv->window_bbox.ymax);
+ bY = -aY * priv->window_bbox.ymax + priv->viewport_bbox.ymin;
+
+ cairo_matrix_init (&priv->matrix, aX, 0, 0, aY, bX, bY);
+
+ cairo_save (cr);
+ cairo_rectangle (cr, priv->left_border, priv->right_border, graph_width, graph_height);
+ cairo_clip (cr);
+
+ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
+ cairo_set_matrix (cr, &priv->matrix);
+ lst = plot->priv->functions;
+ while (lst) {
+ f = (GPlotFunction *)lst->data;
+ g_plot_function_draw (f, cr, &priv->window_bbox);
+ lst = lst->next;
+ }
+ cairo_restore (cr);
+
+ cairo_save (cr);
+ cairo_rectangle (cr, priv->left_border, priv->right_border, graph_width, graph_height);
+ cairo_clip (cr);
+ cairo_save (cr);
+ cairo_set_matrix (cr, &priv->matrix);
+ cairo_move_to (cr, priv->window_bbox.xmin, 0.0);
+ cairo_line_to (cr, priv->window_bbox.xmax, 0.0);
+ cairo_restore (cr);
+ cairo_save (cr);
+ cairo_set_source_rgb (cr, 1.0, 0.0, 0.0);
+ cairo_set_line_width (cr, 2);
+ cairo_stroke (cr);
+ cairo_restore (cr);
+
+ cairo_save (cr);
+ cairo_set_matrix (cr, &priv->matrix);
+ cairo_move_to (cr, 0.0, priv->window_bbox.ymin);
+ cairo_line_to (cr, 0.0, priv->window_bbox.ymax);
+ cairo_restore (cr);
+ cairo_save (cr);
+ cairo_set_source_rgb (cr, 1.0, 0.0, 0.0);
+ cairo_set_line_width (cr, 2);
+ cairo_stroke (cr);
+ cairo_restore (cr);
+ cairo_restore (cr);
+
+ cairo_save (cr);
+ i = 0;
+ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
+ cairo_set_line_width (cr, 1);
+
+ draw_axis (cr, &priv->viewport_bbox, priv->window_bbox.ymin, priv->window_bbox.ymax, TRUE, &div);
+ if (priv->ylabel_unit) {
+ g_free (priv->ylabel_unit);
+ priv->ylabel_unit = NULL;
+ }
+ if (div != 1)
+ priv->ylabel_unit = get_unit_text (div);
+ draw_axis (cr, &priv->viewport_bbox, priv->window_bbox.xmax, priv->window_bbox.xmin, FALSE, &div);
+ if (priv->xlabel_unit) {
+ g_free (priv->xlabel_unit);
+ priv->xlabel_unit = NULL;
+ }
+ if (div != 1)
+ priv->xlabel_unit = get_unit_text (div);
+ cairo_restore (cr);
+
+ /* Axis Labels */
+ if (priv->xlabel) {
+ char *txt;
+ if (priv->xlabel_unit == NULL)
+ txt = g_strdup (priv->xlabel);
+ else
+ txt = g_strdup_printf ("%s %s", priv->xlabel_unit, priv->xlabel);
+
+ cairo_save (cr);
+ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
+ cairo_set_font_size (cr, 14);
+ cairo_text_extents (cr, txt, &extents);
+ cairo_move_to (cr, width/2.0 - extents.width/2.0, height-extents.height/2.0);
+ cairo_show_text (cr, txt);
+ cairo_stroke (cr);
+ cairo_restore (cr);
+ g_free (txt);
+ }
+
+ if (priv->ylabel) {
+ char *txt;
+ if (priv->ylabel_unit == NULL)
+ txt = g_strdup (priv->ylabel);
+ else
+ txt = g_strdup_printf ("%s %s", priv->ylabel_unit, priv->ylabel);
+
+ cairo_save (cr);
+ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
+ cairo_set_font_size (cr, 14);
+ cairo_text_extents (cr, txt, &extents);
+ cairo_move_to (cr, extents.height, height/2.0 + extents.width/2.0);
+ cairo_rotate (cr, 4.7124);
+ cairo_show_text (cr, txt);
+ cairo_stroke (cr);
+ cairo_restore (cr);
+ }
+
+ if (priv->action == ACTION_REGION) {
+ gdouble x, y, w, h;
+ x = priv->rubberband.xmin;
+ y = priv->rubberband.ymin;
+ w = priv->rubberband.xmax;
+ h = priv->rubberband.ymax;
+ cairo_save (cr);
+ cairo_identity_matrix (cr);
+ cairo_set_dash (cr, dashes, ndash, offset);
+
+ cairo_set_line_width (cr, 2);
+ cairo_set_source_rgb (cr, 0.0, 1.0, 0.0);
+ cairo_rectangle (cr, x, y, w-x, h-y);
+ cairo_stroke (cr);
+ cairo_restore (cr);
+ }
+
+ cairo_destroy (cr);
+
+ return FALSE;
+}
+
+static void
+g_plot_init (GPlot* plot)
+{
+ plot->priv = g_new0 (GPlotPriv, 1);
+
+ plot->priv->zoom_mode = GPLOT_ZOOM_REGION;
+ plot->priv->functions = NULL;
+ plot->priv->action = ACTION_NONE;
+ plot->priv->zoom = 1.0;
+ plot->priv->offset_x = 0.0;
+ plot->priv->offset_y = 0.0;
+ plot->priv->left_border = BORDER_SIZE;
+ plot->priv->right_border = BORDER_SIZE;
+ plot->priv->top_border = BORDER_SIZE;
+ plot->priv->bottom_border = BORDER_SIZE;
+ plot->priv->xlabel = NULL;
+ plot->priv->xlabel_unit = NULL;
+ plot->priv->ylabel = NULL;
+ plot->priv->ylabel_unit = NULL;
+}
+
+GtkWidget*
+g_plot_new ()
+{
+ GPlot *plot;
+
+ plot = GPLOT (g_object_new (TYPE_GPLOT, NULL));
+
+ gtk_widget_add_events (GTK_WIDGET (plot),
+ GDK_POINTER_MOTION_MASK|GDK_BUTTON_PRESS_MASK|
+ GDK_BUTTON_RELEASE_MASK|GDK_BUTTON_MOTION_MASK|
+ GDK_BUTTON1_MOTION_MASK|GDK_BUTTON2_MOTION_MASK|
+ GDK_BUTTON3_MOTION_MASK);
+
+ g_signal_connect (G_OBJECT (plot), "motion-notify-event", G_CALLBACK(g_plot_motion_cb), plot);
+ g_signal_connect (G_OBJECT (plot), "button-press-event", G_CALLBACK(g_plot_button_press_cb), plot);
+ g_signal_connect (G_OBJECT (plot), "button-release-event", G_CALLBACK(g_plot_button_release_cb), plot);
+
+ return GTK_WIDGET (plot);
+}
+
+int
+g_plot_add_function (GPlot *plot, GPlotFunction *func)
+{
+ g_return_val_if_fail (IS_GPLOT (plot), -1);
+
+ plot->priv->functions = g_list_append (plot->priv->functions, func);
+ plot->priv->window_valid = FALSE;
+ return 0;
+}
+
+static gboolean
+g_plot_motion_cb (GtkWidget *w, GdkEventMotion *e, GPlot *p)
+{
+ switch (p->priv->zoom_mode) {
+ case GPLOT_ZOOM_INOUT:
+ if ((p->priv->action == ACTION_STARTING_PAN) || (p->priv->action == ACTION_PAN)) {
+ gdouble dx, dy;
+ cairo_matrix_t t = p->priv->matrix;
+ GdkCursor *cursor = gdk_cursor_new (GDK_FLEUR);
+ gdk_window_set_cursor (w->window, cursor);
+ gdk_cursor_destroy (cursor);
+ gdk_flush ();
+
+ dx = p->priv->last_x - e->x;
+ dy = p->priv->last_y - e->y;
+
+ cairo_matrix_invert (&t);
+ cairo_matrix_transform_distance (&t, &dx, &dy);
+
+ p->priv->window_bbox.xmin -= dx;
+ p->priv->window_bbox.xmax -= dx;
+ p->priv->window_bbox.ymin -= dy;
+ p->priv->window_bbox.ymax -= dy;
+
+ p->priv->last_x = e->x;
+ p->priv->last_y = e->y;
+ p->priv->action = ACTION_PAN;
+ gtk_widget_queue_draw (w);
+ }
+ break;
+ case GPLOT_ZOOM_REGION:
+ if ((p->priv->action == ACTION_STARTING_REGION) || (p->priv->action == ACTION_REGION)) {
+ gdouble dx, dy;
+ GdkCursor *cursor = gdk_cursor_new (GDK_CROSS);
+ gdk_window_set_cursor (w->window, cursor);
+ gdk_cursor_destroy (cursor);
+ gdk_flush ();
+
+ /* dx < 0 == moving to the left */
+ dx = e->x - p->priv->last_x;
+ dy = e->y - p->priv->last_y;
+
+ if (dx < 0) {
+ p->priv->rubberband.xmin = e->x;
+ } else {
+ p->priv->rubberband.xmax = e->x;
+ }
+ if (dy < 0) {
+ p->priv->rubberband.ymin = e->y;
+ } else {
+ p->priv->rubberband.ymax = e->y;
+ }
+
+ p->priv->action = ACTION_REGION;
+ gtk_widget_queue_draw (w);
+ }
+ }
+
+ return FALSE;
+}
+
+static gboolean
+g_plot_button_press_cb (GtkWidget *w, GdkEventButton *e, GPlot *p)
+{
+ g_return_val_if_fail (IS_GPLOT (p), TRUE);
+
+ if (e->type == GDK_2BUTTON_PRESS) {
+ /* TODO : Chekck function below cursor and open a property dialog :) */
+ } else {
+ switch (p->priv->zoom_mode) {
+ case GPLOT_ZOOM_INOUT:
+ if (e->button == 1) {
+ p->priv->action = ACTION_STARTING_PAN;
+ p->priv->last_x = e->x;
+ p->priv->last_y = e->y;
+ }
+ break;
+ case GPLOT_ZOOM_REGION:
+ if ((e->button == 1)) {
+ p->priv->action = ACTION_STARTING_REGION;
+ p->priv->rubberband.xmin = e->x;
+ p->priv->rubberband.ymin = e->y;
+ p->priv->rubberband.xmax = e->x;
+ p->priv->rubberband.ymax = e->y;
+ p->priv->last_x = e->x;
+ p->priv->last_y = e->y;
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+static gboolean
+g_plot_button_release_cb (GtkWidget *w, GdkEventButton *e, GPlot *p)
+{
+ gdouble zoom;
+
+ g_return_val_if_fail (IS_GPLOT (p), TRUE);
+
+ switch (p->priv->zoom_mode) {
+ case GPLOT_ZOOM_INOUT:
+ if (p->priv->action != ACTION_PAN) {
+ switch (e->button) {
+ case 1:
+ p->priv->zoom += 0.1;
+ zoom = 1.1;
+ break;
+ case 3:
+ p->priv->zoom -= 0.1;
+ zoom = 0.9;
+ }
+ p->priv->window_bbox.xmin /= zoom;
+ p->priv->window_bbox.xmax /= zoom;
+ p->priv->window_bbox.ymin /= zoom;
+ p->priv->window_bbox.ymax /= zoom;
+ gtk_widget_queue_draw (w);
+ } else {
+ gdk_window_set_cursor (w->window, NULL);
+ gdk_flush ();
+ }
+ break;
+ case GPLOT_ZOOM_REGION:
+ if ((e->button == 1) && (p->priv->action == ACTION_REGION)) {
+ gdk_window_set_cursor (w->window, NULL);
+ gdk_flush ();
+ {
+ gdouble x1, y1, x2, y2;
+ cairo_matrix_t t = p->priv->matrix;
+ cairo_matrix_invert (&t);
+
+ x1 = p->priv->rubberband.xmin;
+ y1 = p->priv->rubberband.ymin;
+ x2 = p->priv->rubberband.xmax;
+ y2 = p->priv->rubberband.ymax;
+
+ cairo_matrix_transform_point (&t, &x1, &y1);
+ cairo_matrix_transform_point (&t, &x2, &y2);
+
+ p->priv->window_bbox.xmin = x1;
+ p->priv->window_bbox.xmax = x2;
+ p->priv->window_bbox.ymin = y2;
+ p->priv->window_bbox.ymax = y1;
+ }
+ } else if (e->button == 3) {
+ gdk_window_set_cursor (w->window, NULL);
+ gdk_flush ();
+ }
+ gtk_widget_queue_draw (w);
+ }
+
+ p->priv->action = ACTION_NONE;
+ return TRUE;
+}
+
+void
+g_plot_set_zoom_mode (GPlot *p, guint mode)
+{
+ g_return_if_fail (IS_GPLOT (p));
+
+ p->priv->zoom_mode = mode;
+}
+
+guint
+g_plot_get_zoom_mode (GPlot *p)
+{
+ g_return_val_if_fail (IS_GPLOT (p), 0);
+
+ return p->priv->zoom_mode;
+}
+
+static void
+g_plot_update_bbox (GPlot *p)
+{
+ GPlotFunction *f;
+ GPlotFunctionBBox bbox;
+ GPlotPriv *priv;
+ GList *lst;
+
+ priv = p->priv;
+
+ /* Get functions bbox */
+ priv->window_bbox.xmax = -9999999;
+ priv->window_bbox.xmin = 9999999;
+ priv->window_bbox.ymax = -9999999;
+ priv->window_bbox.ymin = 9999999;
+ lst = priv->functions;
+ while (lst) {
+ f = (GPlotFunction *)lst->data;
+ g_plot_function_get_bbox (f, &bbox);
+ priv->window_bbox.xmax = MAX (priv->window_bbox.xmax, bbox.xmax);
+ priv->window_bbox.xmin = MIN (priv->window_bbox.xmin, bbox.xmin);
+ priv->window_bbox.ymax = MAX (priv->window_bbox.ymax, bbox.ymax);
+ priv->window_bbox.ymin = MIN (priv->window_bbox.ymin, bbox.ymin);
+ lst = lst->next;
+ }
+
+ if (priv->window_bbox.xmin == priv->window_bbox.xmax)
+ priv->window_bbox.xmax += 1;
+
+ if (priv->window_bbox.ymin == priv->window_bbox.ymax)
+ priv->window_bbox.ymax += 1;
+
+ priv->window_bbox.ymin *= 1.1;
+ priv->window_bbox.ymax *= 1.1;
+
+ priv->window_valid = TRUE;
+}
+
+void
+g_plot_reset_zoom (GPlot *p)
+{
+ g_return_if_fail (IS_GPLOT (p));
+
+ p->priv->window_valid = FALSE;
+ p->priv->zoom = 1.0;
+ gtk_widget_queue_draw (GTK_WIDGET (p));
+}
+
+void
+g_plot_set_axis_labels (GPlot *p, gchar *x, gchar *y)
+{
+ cairo_text_extents_t extents;
+
+ g_return_if_fail (IS_GPLOT (p));
+
+ if (x) {
+ cairo_t *cr = g_plot_create_cairo (p);
+ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
+ cairo_set_font_size (cr, 14);
+ cairo_text_extents (cr, x, &extents);
+ cairo_destroy (cr);
+
+ p->priv->xlabel = g_strdup (x);
+ p->priv->bottom_border = BORDER_SIZE + extents.height;
+ } else {
+ p->priv->bottom_border = BORDER_SIZE;
+ if (p->priv->xlabel) {
+ g_free (p->priv->xlabel);
+ p->priv->xlabel = NULL;
+ }
+ }
+
+ if (y) {
+ cairo_t *cr = g_plot_create_cairo (p);
+ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
+ cairo_set_font_size (cr, 14);
+ cairo_text_extents (cr, y, &extents);
+ cairo_destroy (cr);
+
+ p->priv->xlabel = g_strdup (x);
+ p->priv->left_border = BORDER_SIZE + extents.height;
+
+ p->priv->ylabel = g_strdup (y);
+ } else {
+ p->priv->left_border = BORDER_SIZE;
+ if (p->priv->ylabel) {
+ g_free (p->priv->ylabel);
+ p->priv->ylabel = NULL;
+ }
+ }
+}
+
+void
+g_plot_clear (GPlot *plot)
+{
+ GList *lst;
+
+ g_return_if_fail (plot != NULL);
+ g_return_if_fail (IS_GPLOT (plot));
+
+ lst = plot->priv->functions;
+
+ while (lst) {
+ g_object_unref (G_OBJECT (lst->data));
+ lst = lst->next;
+ }
+ g_list_free (plot->priv->functions);
+ plot->priv->functions = NULL;
+ plot->priv->window_valid = FALSE;
+}
+
+void
+g_plot_window_to_device (GPlot *plot, double *x, double *y)
+{
+ cairo_t *cr;
+
+ g_return_if_fail (plot != NULL);
+ g_return_if_fail (IS_GPLOT (plot));
+
+ cr = g_plot_create_cairo (plot);
+ cairo_set_matrix (cr, &plot->priv->matrix);
+ cairo_device_to_user (cr, x, y);
+ cairo_destroy (cr);
+}
+
+static void
+get_order_of_magnitude (gdouble val, gdouble *man, gdouble *pw)
+{
+ gdouble b;
+ gdouble sx;
+
+ b = (val != 0.0 ? log10 (fabs (val)) / 3.0 : 0.0);
+ b = 3.0 * rint (b);
+ sx = (b != 0.0 ? pow (10.0, b) : 1.0);
+ *man = val / sx;
+ *pw = b;
+}
+
+
diff --git a/src/gplot/gplot.h b/src/gplot/gplot.h
new file mode 100644
index 0000000..041a597
--- /dev/null
+++ b/src/gplot/gplot.h
@@ -0,0 +1,70 @@
+/*
+ * gplot.h
+ *
+ * Authors:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * This library 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 library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef _GPLOT_H_
+#define _GPLOT_H_
+
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
+#include <glib.h>
+
+#include "gplotfunction.h"
+
+#define TYPE_GPLOT (g_plot_get_type())
+#define GPLOT(obj) G_TYPE_CHECK_INSTANCE_CAST(obj, TYPE_GPLOT, GPlot)
+#define GPLOT_CLASS(klass) G_TYPE_CHECK_CLASS_CAST(klass, TYPE_GPLOT, GPlotClass)
+#define IS_GPLOT(obj) G_TYPE_CHECK_INSTANCE_TYPE(obj, TYPE_GPLOT)
+
+typedef struct _GPlot GPlot;
+typedef struct _GPlotClass GPlotClass;
+typedef struct _GPlotPriv GPlotPriv;
+
+enum {
+ GPLOT_ZOOM_INOUT,
+ GPLOT_ZOOM_REGION
+};
+
+struct _GPlot {
+ GtkLayout parent;
+
+ GPlotPriv *priv;
+};
+
+struct _GPlotClass {
+ GtkLayoutClass parent_class;
+};
+
+GType g_plot_get_type ();
+GtkWidget* g_plot_new ();
+void g_plot_clear (GPlot *);
+int g_plot_add_function (GPlot *, GPlotFunction *);
+void g_plot_set_zoom_mode (GPlot *, guint);
+guint g_plot_get_zoom_mode (GPlot *);
+void g_plot_reset_zoom (GPlot *);
+void g_plot_set_axis_labels (GPlot *, gchar *, gchar *);
+void g_plot_window_to_device (GPlot *, double *x, double *y);
+
+#endif
+
diff --git a/src/gplot/gplotfunction.c b/src/gplot/gplotfunction.c
new file mode 100644
index 0000000..576aa85
--- /dev/null
+++ b/src/gplot/gplotfunction.c
@@ -0,0 +1,80 @@
+/*
+ * gplotfunction.c
+ *
+ * Authors:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * This library 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 library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "gplotfunction.h"
+
+
+static void
+g_plot_function_base_init (gpointer g_class)
+{
+ static gboolean initialized = FALSE;
+ if (!initialized) {
+ /* create interface signals here. */
+ initialized = TRUE;
+
+ g_object_interface_install_property (g_class,
+ g_param_spec_boolean ("visible",
+ "gplot_function_visible",
+ "Get/Set if function is visible",
+ TRUE,
+ G_PARAM_READWRITE));
+ }
+}
+
+GType
+g_plot_function_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0) {
+ static const GTypeInfo info = {
+ sizeof (GPlotFunctionClass),
+ g_plot_function_base_init, /* base_init */
+ NULL, /* base_finalize */
+ NULL, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ 0,
+ 0, /* n_preallocs */
+ NULL /* instance_init */
+ };
+ type = g_type_register_static (G_TYPE_INTERFACE, "GPlotFunction", &info, 0);
+ }
+ return type;
+}
+
+void
+g_plot_function_draw (GPlotFunction *self, cairo_t * cr, GPlotFunctionBBox *bbox)
+{
+ if (GPLOT_FUNCTION_GET_CLASS (self)->draw)
+ GPLOT_FUNCTION_GET_CLASS (self)->draw (self, cr, bbox);
+}
+
+void
+g_plot_function_get_bbox (GPlotFunction *self, GPlotFunctionBBox *bbox)
+{
+ if (GPLOT_FUNCTION_GET_CLASS (self)->get_bbox)
+ GPLOT_FUNCTION_GET_CLASS (self)->get_bbox (self, bbox);
+}
+
diff --git a/src/gplot/gplotfunction.h b/src/gplot/gplotfunction.h
new file mode 100644
index 0000000..8cbc523
--- /dev/null
+++ b/src/gplot/gplotfunction.h
@@ -0,0 +1,69 @@
+/*
+ * gplotfunction.h
+ *
+ * Authors:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * This library 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 library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef _GPLOT_FUNCTION_H_
+#define _GPLOT_FUNCTION_H_
+
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
+#include <glib.h>
+
+#define TYPE_GPLOT_FUNCTION (g_plot_function_get_type())
+#define GPLOT_FUNCTION(obj) G_TYPE_CHECK_INSTANCE_CAST(obj, TYPE_GPLOT_FUNCTION, GPlotFunction)
+#define GPLOT_FUNCTION_CLASS(klass) G_TYPE_CHECK_CLASS_CAST(klass, TYPE_GPLOT_FUNCTION, GPlotFunctionClass)
+#define IS_GPLOT_FUNCTION (obj) G_TYPE_CHECK_INSTANCE_TYPE(obj, TYPE_GPLOT_FUNCTION)
+#define GPLOT_FUNCTION_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), TYPE_GPLOT_FUNCTION, GPlotFunctionClass))
+/*
+#define MAX(a,b) ((a)>(b)?(a):(b))
+#define MIN(a,b) ((a)<(b)?(a):(b))
+*/
+
+typedef struct _GPlotFunctionBBox {
+ gdouble xmin;
+ gdouble ymin;
+ gdouble xmax;
+ gdouble ymax;
+} GPlotFunctionBBox;
+
+typedef struct _GPlotFunction {} GPlotFunction;
+typedef struct _GPlotFunctionClass GPlotFunctionClass;
+
+struct _GPlotFunctionClass {
+ GTypeInterface parent;
+
+ void (*draw)(GPlotFunction *, cairo_t *, GPlotFunctionBBox *);
+ void (*get_bbox)(GPlotFunction *, GPlotFunctionBBox *);
+};
+
+
+GType g_plot_function_get_type ();
+void g_plot_function_draw (GPlotFunction *, cairo_t *, GPlotFunctionBBox *);
+void g_plot_function_get_bbox (GPlotFunction *, GPlotFunctionBBox *);
+void g_plot_function_set_visible (GPlotFunction *, gboolean);
+gboolean g_plot_function_get_visible (GPlotFunction *);
+
+#endif
+
+
diff --git a/src/gplot/gplotlines.c b/src/gplot/gplotlines.c
new file mode 100644
index 0000000..5e9743e
--- /dev/null
+++ b/src/gplot/gplotlines.c
@@ -0,0 +1,294 @@
+/*
+ * gplotlines.c
+ *
+ * Authors:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * This library 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 library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "gplotlines.h"
+#include <string.h>
+
+static void g_plot_lines_class_init (GPlotLinesClass* class);
+static void g_plot_lines_init (GPlotLines* plot);
+static void g_plot_lines_draw (GPlotFunction *, cairo_t *, GPlotFunctionBBox *);
+static void g_plot_lines_get_bbox (GPlotFunction *, GPlotFunctionBBox *);
+static void g_plot_lines_function_init (GPlotFunctionClass *iface);
+static void g_plot_lines_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *spec);
+static void g_plot_lines_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *spec);
+
+static GObjectClass* parent_class = NULL;
+
+enum {
+ ARG_0,
+ ARG_WIDTH,
+ ARG_COLOR,
+ ARG_COLOR_GDKCOLOR,
+ ARG_VISIBLE,
+};
+
+struct _GPlotLinesPriv {
+ gboolean bbox_valid;
+ GPlotFunctionBBox bbox;
+ gdouble *x;
+ gdouble *y;
+ gdouble points;
+ gboolean visible;
+
+ /** Line width */
+ gdouble width;
+
+ /** Line Color */
+ gchar *color_string;
+ GdkColor color;
+};
+
+G_DEFINE_TYPE_WITH_CODE (GPlotLines, g_plot_lines, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (TYPE_GPLOT_FUNCTION,
+ g_plot_lines_function_init));
+
+static void
+g_plot_lines_function_init (GPlotFunctionClass *iface)
+{
+ iface->draw = g_plot_lines_draw;
+ iface->get_bbox = g_plot_lines_get_bbox;
+}
+
+static void
+g_plot_lines_dispose(GObject *object)
+{
+ G_OBJECT_CLASS(parent_class)->dispose(object);
+}
+
+static void
+g_plot_lines_finalize(GObject *object)
+{
+ GPlotLines *lines;
+
+ lines = GPLOT_LINES (object);
+
+ if (lines->priv) {
+ g_free (lines->priv->x);
+ g_free (lines->priv->y);
+ g_free (lines->priv->color_string);
+ g_free (lines->priv);
+ }
+
+ G_OBJECT_CLASS(parent_class)->finalize(object);
+}
+
+static void
+g_plot_lines_class_init (GPlotLinesClass* class)
+{
+ GObjectClass* object_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ parent_class = g_type_class_peek_parent (class);
+
+ object_class->set_property = g_plot_lines_set_property;
+ object_class->get_property = g_plot_lines_get_property;
+ object_class->dispose = g_plot_lines_dispose;
+ object_class->finalize = g_plot_lines_finalize;
+
+ g_object_class_override_property (object_class, ARG_VISIBLE, "visible");
+
+ g_object_class_install_property(
+ object_class,
+ ARG_WIDTH,
+ g_param_spec_double ("width", "GPlotLines::width",
+ "the line width", 0.1, 5.0, 1.0, G_PARAM_READWRITE));
+
+ g_object_class_install_property(
+ object_class,
+ ARG_COLOR,
+ g_param_spec_string ("color", "GPlotLines::color",
+ "the string color line", "white", G_PARAM_READWRITE));
+
+ g_object_class_install_property(
+ object_class,
+ ARG_COLOR_GDKCOLOR,
+ g_param_spec_pointer ("color-rgb", "GPlotLines::color-rgb",
+ "the GdkColor of the line", G_PARAM_READWRITE));
+}
+
+static void
+g_plot_lines_init (GPlotLines* plot)
+{
+ GPlotLinesPriv* priv = g_new0 (GPlotLinesPriv, 1);
+
+ priv->bbox_valid = FALSE;
+
+ plot->priv = priv;
+
+ priv->width = 1.0;
+ priv->visible = TRUE;
+ priv->color_string = g_strdup ("white");
+ memset (&priv->color, 0xFF, sizeof (GdkColor));
+}
+
+static void
+g_plot_lines_set_property(GObject *object, guint prop_id, const GValue *value,
+ GParamSpec *spec)
+{
+ GPlotLines *plot = GPLOT_LINES (object);
+
+ switch (prop_id) {
+ case ARG_VISIBLE:
+ plot->priv->visible = g_value_get_boolean (value);
+ break;
+ case ARG_WIDTH:
+ plot->priv->width = g_value_get_double (value);
+ break;
+ case ARG_COLOR:
+ g_free (plot->priv->color_string);
+ plot->priv->color_string = g_strdup (g_value_get_string (value));
+ gdk_color_parse (plot->priv->color_string, &plot->priv->color);
+ break;
+ case ARG_COLOR_GDKCOLOR:
+ //s = g_value_get_string (value)
+ //gdk_color_parse (s, &plot->priv->color);
+ break;
+ default:
+ break;
+ }
+}
+
+
+static void
+g_plot_lines_get_property(GObject *object, guint prop_id, GValue *value,
+ GParamSpec *spec)
+{
+ GPlotLines *plot = GPLOT_LINES (object);
+
+ switch (prop_id) {
+ case ARG_WIDTH:
+ g_value_set_double (value, plot->priv->width);
+ break;
+ case ARG_VISIBLE:
+ g_value_set_boolean (value, plot->priv->visible);
+ break;
+ case ARG_COLOR:
+ g_value_set_string (value, plot->priv->color_string);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (plot, prop_id, spec);
+ }
+}
+
+GPlotFunction*
+g_plot_lines_new (gdouble *x, gdouble *y, guint points)
+{
+ GPlotLines *plot;
+
+ plot = GPLOT_LINES (g_object_new (TYPE_GPLOT_LINES, NULL));
+ plot->priv->x = x;
+ plot->priv->y = y;
+ plot->priv->points = points;
+
+ return GPLOT_FUNCTION (plot);
+}
+
+static void
+g_plot_lines_get_bbox (GPlotFunction *f, GPlotFunctionBBox *bbox)
+{
+ GPlotLines *plot;
+
+ g_return_if_fail (IS_GPLOT_LINES (f));
+
+ plot = GPLOT_LINES (f);
+ if (!plot->priv->bbox_valid) {
+ /* Update bbox */
+ guint point;
+ gdouble *x;
+ gdouble *y;
+ guint points;
+
+ points = plot->priv->points;
+ x = plot->priv->x;
+ y = plot->priv->y;
+ plot->priv->bbox.xmin = 99999999;
+ plot->priv->bbox.xmax = -99999999;
+ plot->priv->bbox.ymin = 99999999;
+ plot->priv->bbox.ymax = -99999999;
+ for (point = 0; point < points; point++) {
+ plot->priv->bbox.xmin = MIN(plot->priv->bbox.xmin, x[point]);
+ plot->priv->bbox.ymin = MIN(plot->priv->bbox.ymin, y[point]);
+ plot->priv->bbox.xmax = MAX(plot->priv->bbox.xmax, x[point]);
+ plot->priv->bbox.ymax = MAX(plot->priv->bbox.ymax, y[point]);
+ }
+ plot->priv->bbox_valid = TRUE;
+ }
+
+ (*bbox) = plot->priv->bbox;
+}
+
+static void
+g_plot_lines_draw (GPlotFunction *f, cairo_t *cr, GPlotFunctionBBox *bbox)
+{
+ gboolean first_point = TRUE;
+ guint point;
+ gdouble *x;
+ gdouble *y;
+ guint points;
+ GPlotLines *plot;
+
+ g_return_if_fail (IS_GPLOT_LINES (f));
+
+ plot = GPLOT_LINES (f);
+
+ if (!plot->priv->visible) return;
+
+ points = plot->priv->points;
+ x = plot->priv->x;
+ y = plot->priv->y;
+
+ for (point = 1; point < points; point++) {
+ if ((x[point] >= bbox->xmin) && (x[point] <= bbox->xmax) &&
+ (y[point] >= bbox->ymin) && (y[point] <= bbox->ymax)) {
+
+ if (first_point) {
+ cairo_move_to (cr, x[point-1], y[point-1]);
+ first_point = FALSE;
+ }
+
+ cairo_line_to (cr, x[point], y[point]);
+ } else {
+ if (!first_point) {
+ cairo_line_to (cr, x[point], y[point]);
+ first_point = TRUE;
+ }
+ }
+ }
+
+ if (point < points) {
+ cairo_line_to (cr, x[point], y[point]);
+ }
+
+ cairo_save (cr);
+ cairo_set_source_rgb (cr,
+ plot->priv->color.red / 65535.0,
+ plot->priv->color.green / 65535.0,
+ plot->priv->color.blue / 65535.0);
+ cairo_identity_matrix (cr);
+ cairo_set_line_width (cr, plot->priv->width);
+ cairo_stroke (cr);
+ cairo_restore (cr);
+}
+
diff --git a/src/gplot/gplotlines.h b/src/gplot/gplotlines.h
new file mode 100644
index 0000000..c3dafb2
--- /dev/null
+++ b/src/gplot/gplotlines.h
@@ -0,0 +1,55 @@
+/*
+ * gplotlines.h
+ *
+ * Authors:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * This library 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 library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef _GPLOT_LINES_H_
+#define _GPLOT_LINES_H_
+
+#include "gplotfunction.h"
+
+#define TYPE_GPLOT_LINES (g_plot_lines_get_type())
+#define GPLOT_LINES(obj) G_TYPE_CHECK_INSTANCE_CAST(obj, TYPE_GPLOT_LINES, GPlotLines)
+#define GPLOT_LINES_CLASS(klass) G_TYPE_CHECK_CLASS_CAST(klass, TYPE_GPLOT_LINES, GPlotLinesClass)
+#define IS_GPLOT_LINES(obj) G_TYPE_CHECK_INSTANCE_TYPE(obj, TYPE_GPLOT_LINES)
+
+typedef struct _GPlotLines GPlotLines;
+typedef struct _GPlotLinesPriv GPlotLinesPriv;
+typedef struct _GPlotLinesClass GPlotLinesClass;
+
+struct _GPlotLines {
+ GObject parent;
+
+ GPlotLinesPriv *priv;
+};
+
+struct _GPlotLinesClass {
+ GObjectClass parent;
+};
+
+GType g_plot_lines_get_type ();
+GPlotFunction* g_plot_lines_new (gdouble *x, gdouble *y, guint points);
+
+#endif
+
+
diff --git a/src/load-common.h b/src/load-common.h
new file mode 100644
index 0000000..265bc1c
--- /dev/null
+++ b/src/load-common.h
@@ -0,0 +1,75 @@
+/*
+ * load-common.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __LOAD_COMMON_H
+#define __LOAD_COMMON_H
+
+#include <glib.h>
+#include <libgnome/gnome-i18n.h>
+#include "sheet-pos.h"
+
+/* Note: this must be synced with Pin in part.h for now. */
+typedef struct {
+ SheetPos pos;
+} Connection;
+
+typedef struct {
+ gchar *name;
+ gchar *value;
+} Property;
+
+typedef struct {
+ gchar *name;
+ gchar *author;
+ gchar *version;
+
+ GSList *parts_list;
+
+ GHashTable *part_hash;
+ GHashTable *symbol_hash;
+} Library;
+
+typedef struct {
+ gchar *name;
+
+ gchar *description;
+
+ Library* library;
+
+ gchar *symbol_name;
+ int symbol_rotation;
+
+ gchar *refdes;
+ gchar *template;
+ gchar *model;
+ GSList *labels;
+ GSList *properties;
+} LibraryPart;
+
+#endif
diff --git a/src/load-library.c b/src/load-library.c
new file mode 100644
index 0000000..c489f6c
--- /dev/null
+++ b/src/load-library.c
@@ -0,0 +1,655 @@
+/*
+ * load-library.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#include <gnome.h>
+#include <string.h>
+#include "xml-compat.h"
+#include "main.h"
+#include "xml-helper.h"
+#include "load-common.h"
+#include "load-library.h"
+#include "sheet-private.h"
+#include "part-label.h"
+
+typedef enum {
+ PARSE_START,
+ PARSE_LIBRARY,
+ PARSE_NAME,
+ PARSE_AUTHOR,
+ PARSE_SYMBOLS,
+ PARSE_SYMBOL,
+ PARSE_SYMBOL_NAME,
+ PARSE_SYMBOL_OBJECTS,
+ PARSE_SYMBOL_LINE,
+ PARSE_SYMBOL_ARC,
+ PARSE_SYMBOL_TEXT,
+ PARSE_SYMBOL_CONNECTIONS,
+ PARSE_SYMBOL_CONNECTION,
+ PARSE_PARTS,
+ PARSE_PART,
+ PARSE_PART_NAME,
+ PARSE_PART_DESCRIPTION,
+ PARSE_PART_USESYMBOL,
+ PARSE_PART_LABELS,
+ PARSE_PART_LABEL,
+ PARSE_PART_LABEL_NAME,
+ PARSE_PART_LABEL_TEXT,
+ PARSE_PART_LABEL_POS,
+ PARSE_PART_PROPERTIES,
+ PARSE_PART_PROPERTY,
+ PARSE_PART_PROPERTY_NAME,
+ PARSE_PART_PROPERTY_VALUE,
+ PARSE_FINISH,
+ PARSE_UNKNOWN,
+ PARSE_ERROR
+} State;
+
+typedef struct {
+ Library *library;
+
+ State state;
+ State prev_state;
+ gint unknown_depth;
+ GString *content;
+
+ /* Temporary placeholder for part */
+ LibraryPart *part;
+ PartLabel *label;
+ Property *property;
+
+ /* Temporary placeholder for symbol */
+ LibrarySymbol *symbol;
+ Connection *connection;
+ SymbolObject *object;
+} ParseState;
+
+static xmlEntityPtr get_entity (void *user_data, const xmlChar *name);
+static void start_document (ParseState *state);
+static void end_document (ParseState *state);
+static void start_element (ParseState *state, const xmlChar *name,
+ const xmlChar **attrs);
+static void end_element (ParseState *state, const xmlChar *name);
+
+static void my_characters (ParseState *state, const xmlChar *chars, int len);
+static void my_warning (void *user_data, const char *msg, ...);
+static void my_error (void *user_data, const char *msg, ...);
+static void my_fatal_error (void *user_data, const char *msg, ...);
+
+static xmlSAXHandler oreganoSAXParser = {
+ 0, /* internalSubset */
+ 0, /* isStandalone */
+ 0, /* hasInternalSubset */
+ 0, /* hasExternalSubset */
+ 0, /* resolveEntity */
+ (getEntitySAXFunc) get_entity, /* getEntity */
+ 0, /* entityDecl */
+ 0, /* notationDecl */
+ 0, /* attributeDecl */
+ 0, /* elementDecl */
+ 0, /* unparsedEntityDecl */
+ 0, /* setDocumentLocator */
+ (startDocumentSAXFunc) start_document, /* startDocument */
+ (endDocumentSAXFunc) end_document, /* endDocument */
+ (startElementSAXFunc)start_element, /* startElement */
+ (endElementSAXFunc)end_element, /* endElement */
+ 0, /* reference */
+ (charactersSAXFunc) my_characters, /* characters */
+ 0, /* ignorableWhitespace */
+ 0, /* processingInstruction */
+ 0, /*(commentSAXFunc)0, comment */
+ (warningSAXFunc)my_warning, /* warning */
+ (errorSAXFunc)my_error, /* error */
+ (fatalErrorSAXFunc)my_fatal_error, /* fatalError */
+};
+
+LibrarySymbol *
+library_get_symbol (const gchar *symbol_name)
+{
+ LibrarySymbol *symbol;
+ Library *library;
+ GList *libraries;
+
+ g_return_val_if_fail (symbol_name != NULL, NULL);
+
+ symbol = NULL;
+ for (libraries = oregano.libraries; libraries; libraries = libraries->next) {
+ library = libraries->data;
+ symbol = g_hash_table_lookup (library->symbol_hash, symbol_name);
+ if (symbol)
+ break;
+ }
+
+ if (symbol == NULL) {
+ g_message (_("Could not find the requested symbol: %s\n"), symbol_name);
+ }
+
+ return symbol;
+}
+
+LibraryPart *
+library_get_part (Library *library, const gchar *part_name)
+{
+ LibraryPart *part;
+
+ g_return_val_if_fail (library != NULL, NULL);
+ g_return_val_if_fail (part_name != NULL, NULL);
+
+ part = g_hash_table_lookup (library->part_hash, part_name);
+ if (part == NULL){
+ g_message (_("Could not find the requested part: %s\n"), part_name);
+ }
+ return part;
+}
+
+Library *
+library_parse_xml_file (const gchar *filename)
+{
+ Library *library;
+ ParseState state;
+
+ if (oreganoXmlSAXParseFile (&oreganoSAXParser, &state, filename) < 0) {
+ g_warning ("Library '%s' not well formed!", filename);
+ }
+
+ if (state.state == PARSE_ERROR) {
+ library = NULL;
+ } else {
+ library = state.library;
+ }
+
+ return library;
+}
+
+static void
+start_document (ParseState *state)
+{
+ state->state = PARSE_START;
+ state->unknown_depth = 0;
+ state->prev_state = PARSE_UNKNOWN;
+
+ state->content = g_string_sized_new (128);
+ state->part = NULL;
+ state->symbol = NULL;
+ state->connection = NULL;
+ state->label = NULL;
+ state->property = NULL;
+
+ state->library = g_new0 (Library, 1);
+ state->library->name = NULL;
+ state->library->author = NULL;
+ state->library->version = NULL;
+
+ state->library->part_hash = g_hash_table_new (g_str_hash, g_str_equal);
+ state->library->symbol_hash = g_hash_table_new (g_str_hash, g_str_equal);
+}
+
+static void
+end_document (ParseState *state)
+{
+ if (state->unknown_depth != 0)
+ g_warning ("unknown_depth != 0 (%d)", state->unknown_depth);
+}
+
+static void
+start_element (ParseState *state, const xmlChar *xml_name, const xmlChar **attrs)
+{
+ const char *name = (const char *)xml_name;
+
+ switch (state->state) {
+ case PARSE_START:
+ if (strcmp (name, "ogo:library")) {
+ g_warning ("Expecting 'ogo:library'. Got '%s'", name);
+ state->state = PARSE_ERROR;
+ } else
+ state->state = PARSE_LIBRARY;
+ break;
+
+ case PARSE_LIBRARY:
+ if (!strcmp (name, "ogo:author")) {
+ state->state = PARSE_AUTHOR;
+ g_string_truncate (state->content, 0);
+ } else if (!strcmp (name, "ogo:name")) {
+ state->state = PARSE_NAME;
+ g_string_truncate (state->content, 0);
+ } else if (!strcmp (name, "ogo:symbols")) {
+ state->state = PARSE_SYMBOLS;
+ } else if (!strcmp (name, "ogo:parts")) {
+ state->state = PARSE_PARTS;
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+
+ case PARSE_SYMBOLS:
+ if (!strcmp (name, "ogo:symbol")) {
+ state->state = PARSE_SYMBOL;
+ state->symbol = g_new0 (LibrarySymbol, 1);
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+
+ case PARSE_SYMBOL:
+ if (!strcmp (name, "ogo:name")) {
+ state->state = PARSE_SYMBOL_NAME;
+ g_string_truncate (state->content, 0);
+ } else if (!strcmp (name, "ogo:objects")) {
+ state->state = PARSE_SYMBOL_OBJECTS;
+ } else if (!strcmp (name, "ogo:connections")) {
+ state->state = PARSE_SYMBOL_CONNECTIONS;
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+ case PARSE_SYMBOL_OBJECTS:
+ if (!strcmp (name, "ogo:line")) {
+ state->object = g_new0 (SymbolObject, 1);
+ state->object->type = SYMBOL_OBJECT_LINE;
+ state->state = PARSE_SYMBOL_LINE;
+ g_string_truncate (state->content, 0);
+ } else if (!strcmp (name, "ogo:arc")) {
+ state->object = g_new0 (SymbolObject, 1);
+ state->object->type = SYMBOL_OBJECT_ARC;
+ state->state = PARSE_SYMBOL_ARC;
+ g_string_truncate (state->content, 0);
+ } else if (!strcmp (name, "ogo:text")) {
+ state->object = g_new0 (SymbolObject, 1);
+ state->object->type = SYMBOL_OBJECT_TEXT;
+ state->state = PARSE_SYMBOL_TEXT;
+ g_string_truncate (state->content, 0);
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+
+ case PARSE_SYMBOL_CONNECTIONS:
+ if (!strcmp (name, "ogo:connection")) {
+ state->state = PARSE_SYMBOL_CONNECTION;
+ state->connection = g_new0 (Connection, 1);
+ g_string_truncate (state->content, 0);
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+
+
+ case PARSE_PARTS:
+ if (!strcmp (name, "ogo:part")) {
+ state->state = PARSE_PART;
+ state->part = g_new0 (LibraryPart, 1);
+ state->part->library = state->library;
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+ case PARSE_PART:
+ if (!strcmp (name, "ogo:name")) {
+ state->state = PARSE_PART_NAME;
+ g_string_truncate (state->content, 0);
+ } else if (!strcmp (name, "ogo:description")) {
+ state->state = PARSE_PART_DESCRIPTION;
+ g_string_truncate (state->content, 0);
+ } else if (!strcmp (name, "ogo:symbol")) {
+ state->state = PARSE_PART_USESYMBOL;
+ g_string_truncate (state->content, 0);
+ } else if (!strcmp (name, "ogo:labels")) {
+ state->state = PARSE_PART_LABELS;
+ } else if (!strcmp (name, "ogo:properties")) {
+ state->state = PARSE_PART_PROPERTIES;
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+ case PARSE_PART_LABELS:
+ if (!strcmp (name, "ogo:label")) {
+ state->state = PARSE_PART_LABEL;
+ state->label = g_new0 (PartLabel, 1);
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+ case PARSE_PART_LABEL:
+ if (!strcmp (name, "ogo:name")) {
+ state->state = PARSE_PART_LABEL_NAME;
+ g_string_truncate (state->content, 0);
+ } else if (!strcmp (name, "ogo:text")) {
+ state->state = PARSE_PART_LABEL_TEXT;
+ g_string_truncate (state->content, 0);
+ } else if (!strcmp (name, "ogo:position")) {
+ state->state = PARSE_PART_LABEL_POS;
+ g_string_truncate (state->content, 0);
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+
+ case PARSE_PART_PROPERTIES:
+ if (!strcmp (name, "ogo:property")) {
+ state->state = PARSE_PART_PROPERTY;
+ state->property = g_new0 (Property, 1);
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+ case PARSE_PART_PROPERTY:
+ if (!strcmp (name, "ogo:name")) {
+ state->state = PARSE_PART_PROPERTY_NAME;
+ g_string_truncate (state->content, 0);
+ } else if (!strcmp (name, "ogo:value")) {
+ state->state = PARSE_PART_PROPERTY_VALUE;
+ g_string_truncate (state->content, 0);
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+
+ case PARSE_SYMBOL_NAME:
+ case PARSE_SYMBOL_LINE:
+ case PARSE_SYMBOL_ARC:
+ case PARSE_SYMBOL_TEXT:
+ case PARSE_SYMBOL_CONNECTION:
+ case PARSE_PART_NAME:
+ case PARSE_PART_DESCRIPTION:
+ case PARSE_PART_USESYMBOL:
+ case PARSE_PART_LABEL_NAME:
+ case PARSE_PART_LABEL_TEXT:
+ case PARSE_PART_LABEL_POS:
+ case PARSE_PART_PROPERTY_NAME:
+ case PARSE_PART_PROPERTY_VALUE:
+ case PARSE_NAME:
+ case PARSE_AUTHOR:
+ /* there should be no tags inside these types of tags */
+ g_message ("*** '%s' tag found", name);
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ break;
+
+ case PARSE_ERROR:
+ break;
+ case PARSE_UNKNOWN:
+ state->unknown_depth++;
+ break;
+ case PARSE_FINISH:
+ /* should not start new elements in this state */
+ g_assert_not_reached ();
+ break;
+ }
+ /*g_message("Start element %s (state %s)", name, states[state->state]);*/
+}
+
+static void
+end_element (ParseState *state, const xmlChar *name)
+{
+ switch (state->state) {
+ case PARSE_UNKNOWN:
+ state->unknown_depth--;
+ if (state->unknown_depth == 0)
+ state->state = state->prev_state;
+ break;
+ case PARSE_AUTHOR:
+ state->library->author = g_strdup (state->content->str);
+ state->state = PARSE_LIBRARY;
+ break;
+ case PARSE_NAME:
+ state->library->name = g_strdup (state->content->str);
+ state->state = PARSE_LIBRARY;
+ break;
+ case PARSE_SYMBOLS:
+ state->state = PARSE_LIBRARY;
+ break;
+ case PARSE_SYMBOL:
+ g_hash_table_insert (state->library->symbol_hash, state->symbol->name,
+ state->symbol);
+ state->state = PARSE_SYMBOLS;
+ break;
+ case PARSE_SYMBOL_NAME:
+ state->symbol->name = g_strdup (state->content->str);
+ state->state = PARSE_SYMBOL;
+ break;
+ case PARSE_SYMBOL_OBJECTS:
+ state->state = PARSE_SYMBOL;
+ break;
+ case PARSE_SYMBOL_LINE:
+ {
+ int i, j;
+ gchar *ptr;
+ gchar **points;
+
+ i= sscanf (state->content->str,"%d %n",
+ &state->object->u.uline.spline,&j);
+ if ( i )
+ ptr = state->content->str+j;
+ else {
+ state->object->u.uline.spline = FALSE;
+ ptr = state->content->str;
+ }
+
+ points = g_strsplit (ptr, "(", 0);
+
+ i = 0;
+ /* Count the points. */
+ while (points[i] != NULL) {
+ i++;
+ }
+
+ /* Do not count the first string, which simply is a (. */
+ i--;
+
+ /* Construct gnome canvas points. */
+ state->object->u.uline.line = gnome_canvas_points_new (i);
+ for (j = 0; j < i; j++) {
+ double x, y;
+
+ sscanf (points[j+1], "%lf %lf)", &x, &y);
+
+ state->object->u.uline.line->coords[2 * j] = x;
+ state->object->u.uline.line->coords[2 * j + 1] = y;
+ }
+
+ g_strfreev (points);
+ state->symbol->symbol_objects = g_slist_prepend (state->symbol->symbol_objects, state->object);
+ state->state = PARSE_SYMBOL_OBJECTS;
+ }
+ break;
+ case PARSE_SYMBOL_ARC:
+ sscanf (state->content->str, "(%lf %lf)(%lf %lf)",
+ &state->object->u.arc.x1, &state->object->u.arc.y1,
+ &state->object->u.arc.x2, &state->object->u.arc.y2);
+ state->symbol->symbol_objects = g_slist_prepend (state->symbol->symbol_objects, state->object);
+ state->state = PARSE_SYMBOL_OBJECTS;
+ break;
+
+ case PARSE_SYMBOL_TEXT:
+ sscanf ( state->content->str,"(%d %d)%s",
+ &state->object->u.text.x,
+ &state->object->u.text.y,
+ state->object->u.text.str
+ );
+ state->symbol->symbol_objects = g_slist_prepend (state->symbol->symbol_objects, state->object);
+ state->state = PARSE_SYMBOL_OBJECTS;
+ break;
+
+ case PARSE_SYMBOL_CONNECTIONS:
+ state->state = PARSE_SYMBOL;
+ state->symbol->connections = g_slist_reverse (state->symbol->connections);
+ break;
+ case PARSE_SYMBOL_CONNECTION:
+ sscanf (state->content->str, "(%lf %lf)", &state->connection->pos.x,
+ &state->connection->pos.y);
+ state->symbol->connections = g_slist_prepend (state->symbol->connections, state->connection);
+ state->state = PARSE_SYMBOL_CONNECTIONS;
+ break;
+
+ case PARSE_PARTS:
+ state->state = PARSE_LIBRARY;
+ break;
+ case PARSE_PART:
+ g_hash_table_insert (state->library->part_hash, state->part->name,
+ state->part);
+ state->state = PARSE_PARTS;
+ break;
+ case PARSE_PART_NAME:
+ state->part->name = g_strdup (state->content->str);
+ state->state = PARSE_PART;
+ break;
+ case PARSE_PART_DESCRIPTION:
+ state->part->description = g_strdup (state->content->str);
+ state->state = PARSE_PART;
+ break;
+ case PARSE_PART_USESYMBOL:
+ state->part->symbol_name = g_strdup (state->content->str);
+ state->state = PARSE_PART;
+ break;
+ case PARSE_PART_LABELS:
+ state->state = PARSE_PART;
+ break;
+ case PARSE_PART_LABEL:
+ state->state = PARSE_PART_LABELS;
+ state->part->labels = g_slist_prepend (state->part->labels,
+ state->label);
+ break;
+ case PARSE_PART_LABEL_NAME:
+ state->label->name = g_strdup (state->content->str);
+ state->state = PARSE_PART_LABEL;
+ break;
+ case PARSE_PART_LABEL_TEXT:
+ state->label->text = g_strdup (state->content->str);
+ state->state = PARSE_PART_LABEL;
+ break;
+ case PARSE_PART_LABEL_POS:
+ sscanf (state->content->str, "(%lf %lf)", &state->label->pos.x,
+ &state->label->pos.y);
+ state->state = PARSE_PART_LABEL;
+ break;
+ case PARSE_PART_PROPERTIES:
+ state->state = PARSE_PART;
+ break;
+ case PARSE_PART_PROPERTY:
+ state->state = PARSE_PART_PROPERTIES;
+ state->part->properties = g_slist_prepend (state->part->properties,
+ state->property);
+ break;
+ case PARSE_PART_PROPERTY_NAME:
+ state->property->name = g_strdup (state->content->str);
+ state->state = PARSE_PART_PROPERTY;
+ break;
+ case PARSE_PART_PROPERTY_VALUE:
+ state->property->value = g_strdup (state->content->str);
+ state->state = PARSE_PART_PROPERTY;
+ break;
+
+ case PARSE_LIBRARY:
+ /* The end of the file. */
+ state->state = PARSE_FINISH;
+ break;
+ case PARSE_ERROR:
+ break;
+ case PARSE_START:
+ case PARSE_FINISH:
+ /* There should not be a closing tag in this state. */
+ g_assert_not_reached ();
+ break;
+ }
+ /*g_message("End element %s (state %s)", name, states[state->state]);*/
+}
+
+static void
+my_characters (ParseState *state, const xmlChar *chars, int len)
+{
+ int i;
+
+ if (state->state == PARSE_FINISH ||
+ state->state == PARSE_START ||
+ state->state == PARSE_PARTS ||
+ state->state == PARSE_PART)
+ return;
+
+ for (i = 0; i < len; i++)
+ g_string_append_c (state->content, chars[i]);
+}
+
+static xmlEntityPtr
+get_entity (void *user_data, const xmlChar *name)
+{
+ return xmlGetPredefinedEntity (name);
+}
+
+static void
+my_warning (void *user_data, const char *msg, ...)
+{
+ va_list args;
+
+ va_start (args, msg);
+ g_logv ("XML", G_LOG_LEVEL_WARNING, msg, args);
+ va_end (args);
+}
+
+static void
+my_error (void *user_data, const char *msg, ...)
+{
+ va_list args;
+
+ va_start (args, msg);
+ g_logv ("XML", G_LOG_LEVEL_CRITICAL, msg, args);
+ va_end (args);
+}
+
+static void
+my_fatal_error (void *user_data, const char *msg, ...)
+{
+ va_list args;
+
+ va_start (args, msg);
+ g_logv ("XML", G_LOG_LEVEL_ERROR, msg, args);
+ va_end (args);
+}
+
diff --git a/src/load-library.h b/src/load-library.h
new file mode 100644
index 0000000..d08316c
--- /dev/null
+++ b/src/load-library.h
@@ -0,0 +1,78 @@
+/*
+ * load-library.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __LOAD_LIBRARY_H
+#define __LOAD_LIBRARY_H
+
+#include <gnome.h>
+#include "sheet.h"
+
+typedef struct _SymbolObject SymbolObject;
+typedef struct _LibrarySymbol LibrarySymbol;
+
+#include "load-common.h"
+
+struct _LibrarySymbol {
+ char *name;
+ GSList *connections;
+ GSList *symbol_objects;
+};
+
+typedef enum {
+ SYMBOL_OBJECT_LINE,
+ SYMBOL_OBJECT_ARC,
+ SYMBOL_OBJECT_TEXT
+} SymbolObjectType;
+
+struct _SymbolObject {
+ SymbolObjectType type;
+
+ union {
+ struct {
+ gboolean spline;
+ GnomeCanvasPoints *line;
+ } uline;
+ struct {
+ double x1;
+ double y1;
+ double x2;
+ double y2;
+ } arc;
+ struct {
+ gint x,y;
+ gchar str[256];
+ } text;
+ } u;
+};
+
+Library *library_parse_xml_file (const gchar *filename);
+LibrarySymbol *library_get_symbol (const gchar *symbol_name);
+LibraryPart *library_get_part (Library *library, const gchar *part_name);
+
+#endif
diff --git a/src/load-schematic.c b/src/load-schematic.c
new file mode 100644
index 0000000..654bc1a
--- /dev/null
+++ b/src/load-schematic.c
@@ -0,0 +1,1024 @@
+/*
+ * load-schematic.c
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <gnome.h>
+#include <string.h>
+#include "xml-compat.h"
+#include "main.h"
+#include "xml-helper.h"
+#include "create-wire.h"
+#include "load-common.h"
+#include "load-schematic.h"
+#include "sheet-pos.h"
+#include "part-label.h"
+#include "sim-settings.h"
+#include "textbox.h"
+#include "errors.h"
+
+typedef enum {
+ PARSE_START,
+ PARSE_SCHEMATIC,
+ PARSE_TITLE,
+ PARSE_AUTHOR,
+ PARSE_COMMENTS,
+
+ PARSE_SIMULATION_SETTINGS,
+ PARSE_TRANSIENT_SETTINGS,
+ PARSE_TRANSIENT_ENABLED,
+ PARSE_TRANSIENT_START,
+ PARSE_TRANSIENT_STOP,
+ PARSE_TRANSIENT_STEP,
+ PARSE_TRANSIENT_STEP_ENABLE,
+ PARSE_TRANSIENT_INIT_COND,
+
+ PARSE_AC_SETTINGS,
+ PARSE_AC_ENABLED,
+ PARSE_AC_NPOINTS,
+ PARSE_AC_START,
+ PARSE_AC_STOP,
+
+ PARSE_DC_SETTINGS,
+ PARSE_DC_ENABLED,
+ PARSE_DC_VSRC1,
+ PARSE_DC_START1,
+ PARSE_DC_STOP1,
+ PARSE_DC_STEP1,
+ PARSE_DC_VSRC2,
+ PARSE_DC_START2,
+ PARSE_DC_STOP2,
+ PARSE_DC_STEP2,
+
+
+ PARSE_OPTION_LIST,
+ PARSE_OPTION,
+ PARSE_OPTION_NAME,
+ PARSE_OPTION_VALUE,
+
+
+ PARSE_ZOOM,
+
+ PARSE_PARTS,
+ PARSE_PART,
+ PARSE_PART_NAME,
+ PARSE_PART_LIBNAME,
+ PARSE_PART_REFDES,
+ PARSE_PART_POSITION,
+ PARSE_PART_ROTATION,
+ PARSE_PART_FLIP,
+ PARSE_PART_SYMNAME,
+ PARSE_PART_TEMPLATE,
+ PARSE_PART_MODEL,
+ PARSE_PART_LABELS,
+ PARSE_PART_LABEL,
+ PARSE_PART_LABEL_NAME,
+ PARSE_PART_LABEL_TEXT,
+ PARSE_PART_LABEL_POS,
+ PARSE_PART_PROPERTIES,
+ PARSE_PART_PROPERTY,
+ PARSE_PART_PROPERTY_NAME,
+ PARSE_PART_PROPERTY_VALUE,
+ PARSE_WIRES,
+ PARSE_WIRE,
+ PARSE_WIRE_POINTS,
+/* PARSE_WIRE_LABEL,*/
+ PARSE_TEXTBOXES,
+ PARSE_TEXTBOX,
+ PARSE_TEXTBOX_TEXT,
+ PARSE_TEXTBOX_POSITION,
+ PARSE_FINISH,
+ PARSE_UNKNOWN,
+ PARSE_ERROR
+} State;
+
+typedef struct {
+ State state;
+ State prev_state;
+ int unknown_depth;
+ GString *content;
+ Schematic *schematic;
+ SimSettings *sim_settings;
+
+ char *title;
+ char *author;
+ char *comments;
+
+ char *textbox_text;
+
+ /* Temporary place holder for a wire */
+ SheetPos wire_start;
+ SheetPos wire_end;
+
+ /* Temporary place holder for a part */
+ LibraryPart *part;
+ PartLabel *label;
+ Property *property;
+ SheetPos pos;
+ int rotation;
+ IDFlip flip;
+
+ /* Temporary place holder for an option */
+ SimOption *option;
+} ParseState;
+
+static xmlEntityPtr get_entity (void *user_data, const xmlChar *name);
+static void start_document (ParseState *state);
+static void end_document (ParseState *state);
+static void start_element (ParseState *state, const xmlChar *name,
+ const xmlChar **attrs);
+static void end_element (ParseState *state, const xmlChar *name);
+
+static void my_characters (ParseState *state, const xmlChar *chars, int len);
+static void my_warning (void *user_data, const char *msg, ...);
+static void my_error (void *user_data, const char *msg, ...);
+static void my_fatal_error (void *user_data, const char *msg, ...);
+
+static void create_wire (ParseState *state);
+static void create_part (ParseState *state);
+
+static xmlSAXHandler oreganoSAXParser = {
+ 0, /* internalSubset */
+ 0, /* isStandalone */
+ 0, /* hasInternalSubset */
+ 0, /* hasExternalSubset */
+ 0, /* resolveEntity */
+ (getEntitySAXFunc) get_entity, /* getEntity */
+ 0, /* entityDecl */
+ 0, /* notationDecl */
+ 0, /* attributeDecl */
+ 0, /* elementDecl */
+ 0, /* unparsedEntityDecl */
+ 0, /* setDocumentLocator */
+ (startDocumentSAXFunc) start_document, /* startDocument */
+ (endDocumentSAXFunc) end_document, /* endDocument */
+ (startElementSAXFunc)start_element, /* startElement */
+ (endElementSAXFunc)end_element, /* endElement */
+ 0, /* reference */
+ (charactersSAXFunc) my_characters, /* characters */
+ 0, /* ignorableWhitespace */
+ 0, /* processingInstruction */
+ 0, /*(commentSAXFunc)0, comment */
+ (warningSAXFunc)my_warning, /* warning */
+ (errorSAXFunc)my_error, /* error */
+ (fatalErrorSAXFunc)my_fatal_error, /* fatalError */
+};
+
+static void
+create_textbox (ParseState *state)
+{
+ Textbox *textbox;
+
+ textbox = textbox_new (NULL);
+ item_data_set_pos (ITEM_DATA (textbox), &state->pos);
+ textbox_set_text (textbox, state->textbox_text);
+
+ schematic_add_item (state->schematic, ITEM_DATA (textbox));
+}
+
+static void
+create_wire (ParseState *state)
+{
+ SheetPos start_pos, length;
+ Wire *wire;
+
+ start_pos.x = state->wire_start.x;
+ start_pos.y = state->wire_start.y;
+ length.x = state->wire_end.x - start_pos.x;
+ length.y = state->wire_end.y - start_pos.y;
+
+ wire = wire_new ();
+ item_data_set_pos (ITEM_DATA (wire), &state->wire_start);
+ wire_set_length (wire, &length);
+
+ schematic_add_item (state->schematic, ITEM_DATA (wire));
+}
+
+static void
+create_part (ParseState *state)
+{
+ Part *part;
+ LibraryPart *library_part = state->part;
+
+ part = part_new_from_library_part (library_part);
+ if (!part)
+ return;
+
+ item_data_set_pos (ITEM_DATA (part), &state->pos);
+ item_data_rotate (ITEM_DATA (part), state->rotation, NULL);
+
+ if (state->flip & ID_FLIP_HORIZ)
+ item_data_flip (ITEM_DATA (part), TRUE, NULL);
+ if (state->flip & ID_FLIP_VERT)
+ item_data_flip (ITEM_DATA (part), FALSE, NULL);
+
+ schematic_add_item (state->schematic, ITEM_DATA (part));
+}
+
+int
+schematic_parse_xml_file (Schematic *sm, const char *filename, GError **error)
+{
+ ParseState state;
+ int retval = 0;
+
+ state.schematic = sm;
+ state.sim_settings = schematic_get_sim_settings (sm);
+ state.title = NULL;
+ state.author = NULL;
+ state.comments = NULL;
+
+ if (oreganoXmlSAXParseFile (&oreganoSAXParser, &state, filename) < 0) {
+ g_warning ("Document not well formed!");
+ if (error != NULL) {
+ g_set_error (error,
+ OREGANO_ERROR,
+ OREGANO_SCHEMATIC_BAD_FILE_FORMAT,
+ _("Bad file format."));
+ }
+ retval = -1;
+ }
+
+ if (state.state == PARSE_ERROR) {
+ if (error != NULL) {
+ g_set_error (error,
+ OREGANO_ERROR,
+ OREGANO_SCHEMATIC_BAD_FILE_FORMAT,
+ _("Unknown parser error."));
+ }
+ retval = -2;
+ }
+
+ schematic_set_author (sm, state.author);
+ schematic_set_title (sm, state.title);
+ schematic_set_comments (sm, state.comments);
+
+ return retval;
+}
+
+static void
+start_document (ParseState *state)
+{
+ state->state = PARSE_START;
+ state->unknown_depth = 0;
+ state->prev_state = PARSE_UNKNOWN;
+
+ state->content = g_string_sized_new (128);
+ state->part = NULL;
+}
+
+static void
+end_document (ParseState *state)
+{
+
+ if (state->unknown_depth != 0)
+ g_warning ("unknown_depth != 0 (%d)", state->unknown_depth);
+}
+
+static void
+start_element (ParseState *state, const xmlChar *name, const xmlChar **attrs)
+{
+ switch (state->state) {
+ case PARSE_START:
+ if (xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:schematic")) {
+ g_warning ("Expecting 'ogo:schematic'. Got '%s'", name);
+ state->state = PARSE_ERROR;
+ } else
+ state->state = PARSE_SCHEMATIC;
+ break;
+
+ case PARSE_SCHEMATIC:
+ if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:author")) {
+ state->state = PARSE_AUTHOR;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:title")) {
+ state->state = PARSE_TITLE;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:comments")) {
+ state->state = PARSE_COMMENTS;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:zoom")) {
+ state->state = PARSE_ZOOM;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:simulation-settings")) {
+ state->state = PARSE_SIMULATION_SETTINGS;
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:parts")) {
+ state->state = PARSE_PARTS;
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:wires")) {
+ state->state = PARSE_WIRES;
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST "ogo:textboxes")) {
+ state->state = PARSE_TEXTBOXES;
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+
+ case PARSE_SIMULATION_SETTINGS:
+ if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:transient")) {
+ state->state = PARSE_TRANSIENT_SETTINGS;
+ } else if ( !xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:ac")) {
+ state->state = PARSE_AC_SETTINGS;
+ } else if ( !xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:dc-sweep")) {
+ state->state = PARSE_DC_SETTINGS;
+ }
+ else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:options")) {
+ state->state = PARSE_OPTION_LIST;
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+
+ case PARSE_TRANSIENT_SETTINGS:
+ if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:enabled")) {
+ state->state = PARSE_TRANSIENT_ENABLED;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:start")) {
+ state->state = PARSE_TRANSIENT_START;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:stop")) {
+ state->state = PARSE_TRANSIENT_STOP;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:step")) {
+ state->state = PARSE_TRANSIENT_STEP;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:step-enabled")) {
+ state->state = PARSE_TRANSIENT_STEP_ENABLE;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:init-conditions")) {
+ state->state = PARSE_TRANSIENT_INIT_COND;
+ g_string_truncate (state->content, 0);
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+
+ case PARSE_AC_SETTINGS:
+ if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:enabled")) {
+ state->state = PARSE_AC_ENABLED;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:npoints")) {
+ state->state = PARSE_AC_NPOINTS;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:start")) {
+ state->state = PARSE_AC_START;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:stop")) {
+ state->state = PARSE_AC_STOP;
+ g_string_truncate (state->content, 0);
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+
+ case PARSE_DC_SETTINGS:
+ if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:enabled")) {
+ state->state = PARSE_DC_ENABLED;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:vsrc1")) {
+ state->state = PARSE_DC_VSRC1;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:start1")) {
+ state->state = PARSE_DC_START1;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:stop1")) {
+ state->state = PARSE_DC_STOP1;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:step1")) {
+ state->state = PARSE_DC_STEP1;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:vsrc2")) {
+ state->state = PARSE_DC_VSRC2;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:start2")) {
+ state->state = PARSE_DC_START2;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:stop2")) {
+ state->state = PARSE_DC_STOP2;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:step2")) {
+ state->state = PARSE_DC_STEP2;
+ g_string_truncate (state->content, 0);
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+
+ case PARSE_OPTION_LIST:
+ if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:option")) {
+ state->state = PARSE_OPTION;
+ state->option= g_new0(SimOption,1);
+ g_string_truncate (state->content, 0);
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+ case PARSE_OPTION:
+ if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:name")) {
+ state->state = PARSE_OPTION_NAME;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:value")) {
+ state->state = PARSE_OPTION_VALUE;
+ g_string_truncate (state->content, 0);
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+
+ break;
+ case PARSE_PARTS:
+ if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:part")) {
+ state->state = PARSE_PART;
+ state->part = g_new0 (LibraryPart, 1);
+ state->rotation = 0;
+ state->flip = ID_FLIP_NONE;
+ state->label = NULL;
+ state->property = NULL;
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+ case PARSE_PART:
+ if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:name")) {
+ state->state = PARSE_PART_NAME;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:library")) {
+ state->state = PARSE_PART_LIBNAME;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:refdes")) {
+ state->state = PARSE_PART_REFDES;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:position")) {
+ state->state = PARSE_PART_POSITION;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:rotation")) {
+ state->state = PARSE_PART_ROTATION;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:flip")) {
+ state->state = PARSE_PART_FLIP;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:template")) {
+ state->state = PARSE_PART_TEMPLATE;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:model")) {
+ state->state = PARSE_PART_MODEL;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:symbol")) {
+ state->state = PARSE_PART_SYMNAME;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:labels")) {
+ state->state = PARSE_PART_LABELS;
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:properties")) {
+ state->state = PARSE_PART_PROPERTIES;
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+ case PARSE_PART_LABELS:
+ if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:label")) {
+ state->state = PARSE_PART_LABEL;
+ state->label = g_new0 (PartLabel, 1);
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+ case PARSE_PART_LABEL:
+ if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:name")) {
+ state->state = PARSE_PART_LABEL_NAME;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:text")) {
+ state->state = PARSE_PART_LABEL_TEXT;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:position")) {
+ state->state = PARSE_PART_LABEL_POS;
+ g_string_truncate (state->content, 0);
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+
+ case PARSE_PART_PROPERTIES:
+ if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:property")) {
+ state->state = PARSE_PART_PROPERTY;
+ state->property = g_new0 (Property, 1);
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+ case PARSE_PART_PROPERTY:
+ if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:name")) {
+ state->state = PARSE_PART_PROPERTY_NAME;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:value")) {
+ state->state = PARSE_PART_PROPERTY_VALUE;
+ g_string_truncate (state->content, 0);
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+
+
+ case PARSE_WIRES:
+ if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:wire")) {
+ state->state = PARSE_WIRE;
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+ case PARSE_WIRE:
+ if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:points")) {
+ state->state = PARSE_WIRE_POINTS;
+ g_string_truncate (state->content, 0);
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+
+ case PARSE_TEXTBOXES:
+ if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:textbox")) {
+ state->state = PARSE_TEXTBOX;
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+ case PARSE_TEXTBOX:
+ if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:position")) {
+ state->state = PARSE_TEXTBOX_POSITION;
+ g_string_truncate (state->content, 0);
+ } else if (!xmlStrcmp (BAD_CAST name, BAD_CAST"ogo:text")) {
+ state->state = PARSE_TEXTBOX_TEXT;
+ g_string_truncate (state->content, 0);
+ } else {
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ }
+ break;
+
+ case PARSE_TRANSIENT_ENABLED:
+ case PARSE_TRANSIENT_START:
+ case PARSE_TRANSIENT_STOP:
+ case PARSE_TRANSIENT_STEP:
+ case PARSE_TRANSIENT_STEP_ENABLE:
+
+ case PARSE_AC_ENABLED:
+ case PARSE_AC_NPOINTS:
+ case PARSE_AC_START:
+ case PARSE_AC_STOP:
+
+ case PARSE_DC_ENABLED:
+ case PARSE_DC_VSRC1:
+ case PARSE_DC_START1:
+ case PARSE_DC_STOP1:
+ case PARSE_DC_STEP1:
+ case PARSE_DC_VSRC2:
+ case PARSE_DC_START2:
+ case PARSE_DC_STOP2:
+ case PARSE_DC_STEP2:
+
+ case PARSE_WIRE_POINTS:
+ case PARSE_OPTION_NAME:
+ case PARSE_OPTION_VALUE:
+ case PARSE_PART_NAME:
+ case PARSE_PART_LIBNAME:
+ case PARSE_PART_TEMPLATE:
+ case PARSE_PART_MODEL:
+ case PARSE_PART_REFDES:
+ case PARSE_PART_POSITION:
+ case PARSE_PART_ROTATION:
+ case PARSE_PART_FLIP:
+ case PARSE_PART_SYMNAME:
+ case PARSE_PART_LABEL_NAME:
+ case PARSE_PART_LABEL_TEXT:
+ case PARSE_PART_LABEL_POS:
+ case PARSE_PART_PROPERTY_NAME:
+ case PARSE_PART_PROPERTY_VALUE:
+ case PARSE_TEXTBOX_POSITION:
+ case PARSE_TEXTBOX_TEXT:
+ case PARSE_ZOOM:
+ case PARSE_TITLE:
+ case PARSE_AUTHOR:
+ case PARSE_COMMENTS:
+ /* there should be no tags inside these types of tags */
+ g_message ("*** '%s' tag found", name);
+ state->prev_state = state->state;
+ state->state = PARSE_UNKNOWN;
+ state->unknown_depth++;
+ break;
+
+ case PARSE_ERROR:
+ break;
+ case PARSE_UNKNOWN:
+ state->unknown_depth++;
+ break;
+ case PARSE_FINISH:
+ /* should not start new elements in this state */
+ g_assert_not_reached ();
+ break;
+ case PARSE_TRANSIENT_INIT_COND:
+ break;
+ }
+ /*g_message("Start element %s (state %s)", name, states[state->state]);*/
+}
+
+
+/*
+ *
+ */
+static void
+end_element (ParseState *state, const xmlChar *name)
+{
+ GList *libs;
+
+ switch (state->state) {
+ case PARSE_UNKNOWN:
+ state->unknown_depth--;
+ if (state->unknown_depth == 0)
+ state->state = state->prev_state;
+ break;
+ case PARSE_AUTHOR:
+ state->author = g_strdup (state->content->str);
+ state->state = PARSE_SCHEMATIC;
+ break;
+ case PARSE_TITLE:
+ state->title = g_strdup (state->content->str);
+ state->state = PARSE_SCHEMATIC;
+ break;
+ case PARSE_COMMENTS:
+ state->comments = g_strdup (state->content->str);
+ state->state = PARSE_SCHEMATIC;
+ break;
+ case PARSE_ZOOM:
+ {
+ double zoom;
+
+ zoom = g_strtod (state->content->str, NULL);
+ schematic_set_zoom (state->schematic, zoom);
+ state->state = PARSE_SCHEMATIC;
+
+ break;
+ }
+
+ case PARSE_SIMULATION_SETTINGS:
+ state->state = PARSE_SCHEMATIC;
+ break;
+ case PARSE_TRANSIENT_SETTINGS:
+ state->state = PARSE_SIMULATION_SETTINGS;
+ break;
+ case PARSE_TRANSIENT_ENABLED:
+ sim_settings_set_trans (state->sim_settings,
+ !g_strcasecmp (state->content->str, "true"));
+ state->state = PARSE_TRANSIENT_SETTINGS;
+ break;
+ case PARSE_TRANSIENT_START:
+ sim_settings_set_trans_start (state->sim_settings,
+ state->content->str);
+ state->state = PARSE_TRANSIENT_SETTINGS;
+ break;
+ case PARSE_TRANSIENT_STOP:
+ sim_settings_set_trans_stop (state->sim_settings, state->content->str);
+ state->state = PARSE_TRANSIENT_SETTINGS;
+ break;
+ case PARSE_TRANSIENT_STEP:
+ sim_settings_set_trans_step (state->sim_settings, state->content->str);
+ state->state = PARSE_TRANSIENT_SETTINGS;
+ break;
+ case PARSE_TRANSIENT_STEP_ENABLE:
+ sim_settings_set_trans_step_enable (state->sim_settings,
+ !g_strcasecmp (state->content->str, "true"));
+ state->state = PARSE_TRANSIENT_SETTINGS;
+ break;
+ case PARSE_TRANSIENT_INIT_COND:
+ sim_settings_set_trans_init_cond(state->sim_settings,
+ !g_strcasecmp (state->content->str, "true"));
+ state->state = PARSE_TRANSIENT_SETTINGS;
+ break;
+
+ case PARSE_AC_SETTINGS:
+ state->state = PARSE_SIMULATION_SETTINGS;
+ break;
+ case PARSE_AC_ENABLED:
+ sim_settings_set_ac (state->sim_settings,
+ !g_strcasecmp (state->content->str, "true"));
+ state->state = PARSE_AC_SETTINGS;
+ case PARSE_AC_NPOINTS:
+ sim_settings_set_ac_npoints (state->sim_settings, state->content->str);
+ state->state = PARSE_AC_SETTINGS;
+ case PARSE_AC_START:
+ sim_settings_set_ac_start (state->sim_settings, state->content->str);
+ state->state = PARSE_AC_SETTINGS;
+ break;
+ case PARSE_AC_STOP:
+ sim_settings_set_ac_stop (state->sim_settings, state->content->str);
+ state->state = PARSE_AC_SETTINGS;
+ break;
+
+ case PARSE_DC_SETTINGS:
+ state->state = PARSE_SIMULATION_SETTINGS;
+ break;
+
+ case PARSE_DC_ENABLED:
+ sim_settings_set_dc (state->sim_settings,
+ !g_strcasecmp (state->content->str, "true"));
+ state->state = PARSE_DC_SETTINGS;
+ case PARSE_DC_VSRC1:
+ sim_settings_set_dc_vsrc (state->sim_settings, 0, state->content->str);
+ state->state = PARSE_DC_SETTINGS;
+ case PARSE_DC_START1:
+ sim_settings_set_dc_start (state->sim_settings, 0, state->content->str);
+ state->state = PARSE_DC_SETTINGS;
+ break;
+ case PARSE_DC_STOP1:
+ sim_settings_set_dc_stop (state->sim_settings, 0, state->content->str);
+ state->state = PARSE_DC_SETTINGS;
+ break;
+ case PARSE_DC_STEP1:
+ sim_settings_set_dc_step (state->sim_settings, 0, state->content->str);
+ state->state = PARSE_DC_SETTINGS;
+ break;
+ case PARSE_DC_VSRC2:
+ sim_settings_set_dc_vsrc (state->sim_settings, 1, state->content->str);
+ state->state = PARSE_DC_SETTINGS;
+ case PARSE_DC_START2:
+ sim_settings_set_dc_start (state->sim_settings, 1, state->content->str);
+ state->state = PARSE_DC_SETTINGS;
+ break;
+ case PARSE_DC_STOP2:
+ sim_settings_set_dc_stop (state->sim_settings, 1, state->content->str);
+ state->state = PARSE_DC_SETTINGS;
+ break;
+ case PARSE_DC_STEP2:
+ sim_settings_set_dc_step (state->sim_settings, 1, state->content->str);
+ state->state = PARSE_DC_SETTINGS;
+ break;
+
+
+ case PARSE_OPTION_LIST:
+ state->state = PARSE_SIMULATION_SETTINGS;
+ break;
+ case PARSE_OPTION:
+ state->state = PARSE_OPTION_LIST;
+ sim_settings_add_option (state->sim_settings,state->option);
+ state->option = g_new0(SimOption,1);
+ break;
+ case PARSE_OPTION_NAME:
+ state->option->name = g_strdup (state->content->str);
+ state->state=PARSE_OPTION;
+ break;
+
+ case PARSE_OPTION_VALUE:
+ state->option->value = g_strdup (state->content->str);
+ state->state=PARSE_OPTION;
+ break;
+
+ case PARSE_PARTS:
+ state->state = PARSE_SCHEMATIC;
+ break;
+ case PARSE_PART:
+ create_part (state);
+ state->state = PARSE_PARTS;
+ break;
+ case PARSE_PART_NAME:
+ state->part->name = g_strdup (state->content->str);
+ state->state = PARSE_PART;
+ break;
+ case PARSE_PART_LIBNAME:
+
+ /* FIXME: if the library name has changed, so it will
+ not be found, oregano will probably crash (this problem
+ also happen storing the library name in the part).
+ Why not search for the part name in all libraries ? */
+
+ state->state = PARSE_PART;
+ state->part->library = NULL;
+ libs = oregano.libraries;
+ while (libs) {
+ Library *lib = (Library *) libs->data;
+ if (g_strcasecmp (state->content->str, lib->name) == 0) {
+ state->part->library = lib;
+ break;
+ }
+ libs = libs->next;
+ }
+ break;
+ case PARSE_PART_POSITION:
+ sscanf (state->content->str, "(%lf %lf)", &state->pos.x, &state->pos.y);
+ state->state = PARSE_PART;
+ break;
+ case PARSE_PART_ROTATION:
+ sscanf (state->content->str, "%d", &state->rotation);
+ state->state = PARSE_PART;
+ break;
+ case PARSE_PART_FLIP:
+ if (g_strcasecmp ( state->content->str, "horizontal") == 0)
+ state->flip = state->flip | ID_FLIP_HORIZ;
+ else if (g_strcasecmp ( state->content->str, "vertical") == 0)
+ state->flip = state->flip | ID_FLIP_VERT;
+ state->state = PARSE_PART;
+ break;
+ case PARSE_PART_REFDES:
+ state->part->refdes = g_strdup (state->content->str);
+ state->state = PARSE_PART;
+ break;
+ case PARSE_PART_TEMPLATE:
+ state->part->template = g_strdup (state->content->str);
+ state->state = PARSE_PART;
+ break;
+ case PARSE_PART_MODEL:
+ state->part->model = g_strdup (state->content->str);
+ state->state = PARSE_PART;
+ break;
+ case PARSE_PART_SYMNAME:
+ state->part->symbol_name = g_strdup (state->content->str);
+ state->state = PARSE_PART;
+ break;
+ case PARSE_PART_LABELS:
+ state->state = PARSE_PART;
+ break;
+ case PARSE_PART_LABEL:
+ state->state = PARSE_PART_LABELS;
+ state->part->labels = g_slist_prepend (state->part->labels,
+ state->label);
+ break;
+ case PARSE_PART_LABEL_NAME:
+ state->label->name = g_strdup (state->content->str);
+ state->state = PARSE_PART_LABEL;
+ break;
+ case PARSE_PART_LABEL_TEXT:
+ state->label->text = g_strdup (state->content->str);
+ state->state = PARSE_PART_LABEL;
+ break;
+ case PARSE_PART_LABEL_POS:
+ sscanf (state->content->str, "(%lf %lf)", &state->label->pos.x,
+ &state->label->pos.y);
+ state->state = PARSE_PART_LABEL;
+ break;
+ case PARSE_PART_PROPERTIES:
+ state->state = PARSE_PART;
+ break;
+ case PARSE_PART_PROPERTY:
+ state->state = PARSE_PART_PROPERTIES;
+ state->part->properties = g_slist_prepend (state->part->properties,
+ state->property);
+ break;
+ case PARSE_PART_PROPERTY_NAME:
+ state->property->name = g_strdup (state->content->str);
+ state->state = PARSE_PART_PROPERTY;
+ break;
+ case PARSE_PART_PROPERTY_VALUE:
+ state->property->value = g_strdup (state->content->str);
+ state->state = PARSE_PART_PROPERTY;
+ break;
+
+ case PARSE_WIRES:
+ state->state = PARSE_SCHEMATIC;
+ break;
+ case PARSE_WIRE:
+ create_wire (state);
+ state->state = PARSE_WIRES;
+ break;
+ case PARSE_WIRE_POINTS:
+ sscanf (state->content->str, "(%lf %lf)(%lf %lf)",
+ &state->wire_start.x, &state->wire_start.y,
+ &state->wire_end.x, &state->wire_end.y);
+ state->state = PARSE_WIRE;
+ break;
+
+ case PARSE_TEXTBOXES:
+ state->state = PARSE_SCHEMATIC;
+ break;
+ case PARSE_TEXTBOX:
+ create_textbox (state);
+ state->state = PARSE_TEXTBOXES;
+ break;
+ case PARSE_TEXTBOX_POSITION:
+ sscanf (state->content->str, "(%lf %lf)",
+ &state->pos.x, &state->pos.y);
+ state->state = PARSE_TEXTBOX;
+ break;
+ case PARSE_TEXTBOX_TEXT:
+ state->textbox_text = g_strdup (state->content->str);
+ state->state = PARSE_TEXTBOX;
+ break;
+
+
+ case PARSE_SCHEMATIC:
+ /* The end of the file. */
+ state->state = PARSE_FINISH;
+ break;
+
+ case PARSE_ERROR:
+ break;
+ case PARSE_START:
+ case PARSE_FINISH:
+ /* There should not be a closing tag in this state. */
+ g_assert_not_reached ();
+ break;
+ }
+ /*g_message("End element %s (state %s)", name, states[state->state]);*/
+}
+
+static void
+my_characters (ParseState *state, const xmlChar *chars, int len)
+{
+ int i;
+
+ if (state->state == PARSE_FINISH ||
+ state->state == PARSE_START ||
+ state->state == PARSE_PARTS ||
+ state->state == PARSE_PART)
+ return;
+
+ for (i = 0; i < len; i++)
+ g_string_append_c (state->content, chars[i]);
+}
+
+static xmlEntityPtr
+get_entity (void *user_data, const xmlChar *name)
+{
+ return xmlGetPredefinedEntity (name);
+}
+
+static void
+my_warning (void *user_data, const char *msg, ...)
+{
+ va_list args;
+
+ va_start (args, msg);
+ g_logv ("XML", G_LOG_LEVEL_WARNING, msg, args);
+ va_end (args);
+}
+
+static void
+my_error (void *user_data, const char *msg, ...)
+{
+ va_list args;
+
+ va_start (args, msg);
+ g_logv ("XML", G_LOG_LEVEL_CRITICAL, msg, args);
+ va_end (args);
+}
+
+static void
+my_fatal_error (void *user_data, const char *msg, ...)
+{
+ va_list args;
+
+ va_start (args, msg);
+ g_logv ("XML", G_LOG_LEVEL_ERROR, msg, args);
+ va_end (args);
+}
diff --git a/src/load-schematic.h b/src/load-schematic.h
new file mode 100644
index 0000000..fd7ec66
--- /dev/null
+++ b/src/load-schematic.h
@@ -0,0 +1,39 @@
+/*
+ * load-schematic.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __LOAD_SCHEMATIC_H
+#define __LOAD_SCHEMATIC_H
+
+#include <glib.h>
+#include "schematic.h"
+
+gint schematic_parse_xml_file (Schematic *sm, const gchar *filename, GError **);
+
+
+#endif
diff --git a/src/main.c b/src/main.c
new file mode 100644
index 0000000..b2cb3a1
--- /dev/null
+++ b/src/main.c
@@ -0,0 +1,252 @@
+/**
+ * @file main.c
+ * @author Richard Hult <rhult@hem.passagen.se>
+ * @author Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * @author Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * @date 1999-2001,2003-2006
+ *
+ * @brief Oregano, a tool for schematic capture and simulation of electronic
+ * circuits.
+ *
+ * @link Web page: http://arrakis.lug.fi.uba.ar/
+ */
+/*
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#define ENABLE_NLS 1
+#define HAVE_BIND_TEXTDOMAIN_CODESET 1
+#define HAVE_GETTEXT 1
+#define HAVE_LC_MESSAGES 1
+
+#include <gtk/gtk.h>
+#include <glib/gi18n.h>
+#include <glade/glade.h>
+#include <libbonobo-2.0/libbonobo.h>
+#include <locale.h>
+#include <signal.h>
+
+
+#include "dialogs.h"
+#include "schematic.h"
+#include "schematic-view.h"
+#include "cursors.h"
+#include "load-library.h"
+#include "load-schematic.h"
+#include "load-common.h"
+#include "oregano-config.h"
+#include "stock.h"
+#include "main.h"
+#include "splash.h"
+
+#include <libintl.h>
+OreganoApp oregano;
+static char **startup_files = NULL;
+int oregano_debugging;
+
+static void
+quit (void)
+{
+ printf("! GTK_MAIN_QUIT \n");
+ gtk_main_quit ();
+}
+
+/* I have no idea if this is right. */
+static gboolean
+quit_hook (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer data)
+{
+ bonobo_main_quit ();
+ return FALSE;
+}
+
+static void
+session_die (void)
+{
+ /* FIXME: The session is ending. Save unsaved work etc. */
+ quit ();
+}
+
+static gchar* convert_all = NULL;
+static gint convert_width = 300;
+static gint convert_height = 300;
+
+static GOptionEntry options[] = {
+ {"convert", 'c', 0, G_OPTION_ARG_STRING, &convert_all, "Convert schematic to [PNG|SVG|PDF|PS] format", "[PNG|SVG|PDF|PS]"},
+ {"width", 'w', 0, G_OPTION_ARG_INT, &convert_width, "Set output width to W for converted schematic. Default 300", "W"},
+ {"height", 'h', 0, G_OPTION_ARG_INT, &convert_height, "Set output height to H for converted schematic. Default 300", "h"},
+ {G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &startup_files, "Special option that collects any remaining arguments for us"},
+ {NULL}
+};
+
+int
+main (int argc, char **argv)
+{
+ GnomeProgram *OreProgram = NULL;
+ GnomeClient *client = NULL;
+ GOptionContext *context;
+
+ Schematic *schematic = NULL ;
+ SchematicView *schematic_view = NULL;
+
+ gchar *msg;
+ gint i;
+ Splash *splash=NULL;
+
+ bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ textdomain (GETTEXT_PACKAGE);
+
+ setlocale (LC_ALL, "");
+
+ context = g_option_context_new (_("[FILES]"));
+ g_option_context_add_main_entries (context, options, GETTEXT_PACKAGE);
+
+ OreProgram = gnome_program_init (PACKAGE, VERSION, LIBGNOMEUI_MODULE,
+ argc, argv, GNOME_PARAM_GOPTION_CONTEXT, context,
+ GNOME_PARAM_APP_DATADIR, DATADIR, GNOME_PARAM_NONE);
+
+ cursors_init ();
+ stock_init ();
+
+ oregano_config_load ();
+
+ if (!g_file_test (OREGANO_GLADEDIR "/sim-settings.glade",
+ G_FILE_TEST_EXISTS)) {
+ msg = g_strdup_printf (
+ _("You seem to be running Oregano without\n"
+ "having it installed properly on your system.\n\n"
+ "Please install Oregano and try again."));
+
+ oregano_error (msg);
+ g_free (msg);
+ return 1;
+ }
+
+ setlocale (LC_NUMERIC, "C");
+
+ /* Connect to session manager. */
+ client = gnome_master_client ();
+ g_signal_connect (G_OBJECT (client), "die", G_CALLBACK(session_die), NULL);
+
+ if (oregano.show_splash){
+ splash = oregano_splash_new ();
+ }
+ /* splash == NULL if showing splash is disabled */
+ oregano_lookup_libraries(splash);
+
+ if (oregano.libraries == NULL) {
+ oregano_error (
+ _("Could not find a parts library.\n\n"
+ "This is probably due to a faulty installation\n"
+ "of Oregano. Please check your installation."));
+ return 1;
+ }
+
+ oregano.clipboard = NULL;
+
+ schematic = NULL;
+
+ if (startup_files) {
+ GError *error = NULL;
+ gint numfiles;
+
+ numfiles = g_strv_length (startup_files);
+ for (i = 0; i < numfiles; i++) {
+ Schematic *new_schematic;
+ char *fname = startup_files[i];
+
+ new_schematic = schematic_read (fname, &error);
+ if (new_schematic) {
+ if (!convert_all) {
+ schematic_view = schematic_view_new (new_schematic);
+
+ gtk_widget_show_all (schematic_view->toplevel);
+ schematic_set_filename (new_schematic, fname);
+ schematic_set_title (new_schematic, g_path_get_basename(fname));
+
+ /* Show something */
+ while (gtk_events_pending ())
+ gtk_main_iteration ();
+ schematic = new_schematic;
+ } else {
+ gchar *filename, *ext, *tmp;
+ int format = -1;
+
+ if (!g_ascii_strcasecmp (convert_all, "PDF")) {
+ format = 1;
+ ext = "pdf";
+ } else if (!g_ascii_strcasecmp (convert_all, "PS")) {
+ format = 2;
+ ext = "ps";
+ } else if (!g_ascii_strcasecmp (convert_all, "SVG")) {
+ format = 0;
+ ext = "svg";
+ } else if (!g_ascii_strcasecmp (convert_all, "PNG")) {
+ format = 3;
+ ext = "png";
+ } else {
+ g_print (_("Format '%s' not supported."), convert_all);
+ exit (1);
+ }
+ tmp = g_filename_display_basename (startup_files[i]);
+ filename = g_strdup_printf ("%s.%s", tmp, ext);
+ g_print ("Converting %s to %s ...\n", startup_files[i], filename);
+ schematic_export (new_schematic, filename, convert_width, convert_height, 0, 1, format);
+ g_object_unref (G_OBJECT (new_schematic));
+ g_free (filename);
+ g_free (tmp);
+ }
+ }
+ }
+ g_strfreev (startup_files);
+ startup_files = NULL;
+ }
+
+ g_option_context_free (context);
+
+ if (convert_all != NULL) {
+ g_print (_("Done.\n"));
+ return 0;
+ }
+
+ if (schematic == NULL){
+ schematic = schematic_new ();
+ schematic_view = schematic_view_new (schematic);
+ gtk_widget_show_all (schematic_view->toplevel);
+ }
+
+ g_signal_add_emission_hook (
+ g_signal_lookup("last_schematic_destroyed", TYPE_SCHEMATIC),
+ 0,
+ quit_hook,
+ NULL,
+ NULL);
+
+ if (oregano.show_splash)
+ oregano_splash_done (splash, _("Welcome to Oregano"));
+
+ bonobo_main ();
+ cursors_shutdown ();
+ gnome_config_drop_all ();
+ return 0;
+}
diff --git a/src/main.h b/src/main.h
new file mode 100644
index 0000000..a204aa5
--- /dev/null
+++ b/src/main.h
@@ -0,0 +1,65 @@
+/*
+ * main.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __MAIN_H
+#define __MAIN_H
+
+#undef GTK_ENABLE_BROKEN
+
+#include <libgnome/libgnome.h>
+
+typedef struct {
+ GList *libraries;
+ GSList *clipboard;
+
+ /**
+ * list for library paths
+ */
+ GList *lib_path;
+
+ /**
+ * list for model paths
+ */
+ GList *model_path;
+
+ /**
+ * hash table with model names as keys and paths as data
+ */
+ GHashTable *models;
+
+ gint engine;
+ gboolean compress_files;
+ gboolean show_log;
+ gboolean show_splash;
+} OreganoApp;
+
+extern OreganoApp oregano;
+extern int oregano_debugging;
+
+#endif
diff --git a/src/model/Makefile.am b/src/model/Makefile.am
new file mode 100644
index 0000000..5fd7f67
--- /dev/null
+++ b/src/model/Makefile.am
@@ -0,0 +1,35 @@
+oreganodir = $(datadir)/oregano
+INCLUDES = \
+ -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
+ -I$(includedir) $(GNOME_INCLUDEDIR) \
+ -DOREGANO_GLADEDIR=\""$(oreganodir)/glade"\" \
+ -DOREGANO_LIBRARYDIR=\""$(oreganodir)/libraries"\" \
+ -DOREGANO_MODELDIR=\""$(oreganodir)/models"\" \
+ -DDATADIR=\""$(datadir)"\" \
+ -DGETTEXT_PACKAGE=\""oregano\"" \
+ $(OREGANO_CFLAGS) -I$(top_srcdir)/src -I$(top_srcdir)/src/sheet \
+ -I$(top_srcdir)/src/engines
+
+noinst_LIBRARIES = libmodel.a
+libmodel_a_SOURCES = \
+ item-data.c \
+ item-data.h \
+ node.c \
+ node.h \
+ node-store.c \
+ node-store.h \
+ part.c \
+ part.h \
+ part-property.c \
+ part-property.h \
+ schematic.c \
+ schematic.h \
+ sheet-pos.h \
+ textbox.c \
+ textbox.h \
+ wire.c \
+ wire.h \
+ wire-private.h \
+ part-private.h
+#libmodel_a_LIBADD = @LIBMODEL_LIBADD@
+libmodel_a_LIBADD = libmodel.a
diff --git a/src/model/item-data.c b/src/model/item-data.c
new file mode 100644
index 0000000..c8d71c7
--- /dev/null
+++ b/src/model/item-data.c
@@ -0,0 +1,541 @@
+/*
+ * item-data.c
+ *
+ * ItemData object: part and wire model superclass.
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <math.h>
+#include <gnome.h>
+#include "item-data.h"
+#include "node-store.h"
+
+static void item_data_class_init(ItemDataClass *klass);
+static void item_data_init(ItemData *item_data);
+static void item_data_set_gproperty(GObject *object, guint prop_id,
+ const GValue *value, GParamSpec *spec);
+static void item_data_get_gproperty(GObject *object, guint prop_id,
+ GValue *value, GParamSpec *spec);
+static void item_data_copy(ItemData *dest, ItemData *src);
+static void item_data_moved(ItemData *item_data, SheetPos *delta);
+
+enum {
+ ARG_0,
+ ARG_STORE,
+ ARG_POS
+};
+
+enum {
+ MOVED,
+ ROTATED,
+ FLIPPED,
+ HIGHLIGHT,
+ LAST_SIGNAL
+};
+
+struct _ItemDataPriv {
+ NodeStore *store;
+ SheetPos pos;
+
+ /*
+ * Bounding box.
+ */
+ SheetPos b1, b2;
+};
+
+static guint item_data_signals [LAST_SIGNAL] = { 0 };
+static GObjectClass *parent_class = NULL;
+
+GType
+item_data_get_type (void)
+{
+ static GType item_data_type = 0;
+
+ if (!item_data_type) {
+ static const GTypeInfo item_data_info = {
+ sizeof(ItemDataClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc) item_data_class_init,
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof(ItemData),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc)item_data_init,
+ NULL
+ };
+
+ item_data_type = g_type_register_static(G_TYPE_OBJECT, "ItemData",
+ &item_data_info, 0);
+ }
+
+ return item_data_type;
+}
+
+static void
+item_data_dispose(GObject *object)
+{
+ /*
+ * Remove the item from the sheet node store if there.
+ */
+ if (ITEM_DATA(object)->priv->store) {
+ item_data_unregister(ITEM_DATA(object));
+ }
+
+ parent_class->dispose(object);
+}
+
+
+static void
+item_data_finalize(GObject *object)
+{
+ parent_class->finalize(object);
+}
+
+
+static void
+item_data_class_init (ItemDataClass *klass)
+{
+ GObjectClass *object_class;
+
+ parent_class = g_type_class_peek_parent(klass);
+
+ object_class = G_OBJECT_CLASS(klass);
+
+ /* Esta asignacion debe estar antes de las
+ * llamadas a g_object_class_install_property
+ */
+ object_class->set_property = item_data_set_gproperty;
+ object_class->get_property = item_data_get_gproperty;
+
+ g_object_class_install_property(
+ object_class,
+ ARG_STORE,
+ g_param_spec_pointer("store", "ItemData::store",
+ "the store data", G_PARAM_READWRITE));
+
+ g_object_class_install_property(
+ object_class,
+ ARG_POS,
+ g_param_spec_pointer("pos", "ItemData::pos",
+ "the pos data", G_PARAM_READWRITE));
+
+ object_class->dispose = item_data_dispose;
+ object_class->finalize = item_data_finalize;
+ item_data_signals [MOVED] = g_signal_new ("moved",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(ItemDataClass, moved),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+
+ item_data_signals [ROTATED] = g_signal_new ("rotated",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ 0, NULL, NULL,
+ g_cclosure_marshal_VOID__INT,
+ G_TYPE_NONE, 1, G_TYPE_INT);
+
+ item_data_signals [FLIPPED] = g_signal_new ("flipped",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ 0, NULL, NULL,
+ g_cclosure_marshal_VOID__INT,
+ G_TYPE_NONE, 1, G_TYPE_INT);
+
+ item_data_signals [HIGHLIGHT] = g_signal_new ("highlight",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ 0, NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ /*
+ * Methods.
+ */
+ klass->clone = NULL;
+ klass->copy = item_data_copy;
+ klass->rotate = NULL;
+ klass->flip = NULL;
+ klass->reg = NULL;
+ klass->unreg = NULL;
+
+ /*
+ * Signals.
+ */
+ klass->moved = item_data_moved; /* FIXME: remove this field.*/
+}
+
+static void
+item_data_init (ItemData *item_data)
+{
+ ItemDataPriv *priv;
+
+ priv = g_new0 (ItemDataPriv, 1);
+
+ priv->pos.x = 0;
+ priv->pos.y = 0;
+ priv->b1.x = priv->b1.y = priv->b2.x = priv->b2.y = 0.0;
+
+ item_data->priv = priv;
+}
+
+ItemData *
+item_data_new (void)
+{
+ ItemData *item_data;
+
+ item_data = ITEM_DATA(g_object_new(item_data_get_type(), NULL));
+
+ return item_data;
+}
+
+
+static void
+item_data_set_gproperty(GObject *object, guint prop_id, const GValue *value,
+ GParamSpec *spec)
+{
+ ItemData *item_data = ITEM_DATA(object);
+
+ switch (prop_id) {
+ case ARG_STORE:
+ item_data->priv->store = g_value_get_pointer(value);
+ break;
+ default:
+ break;
+ }
+}
+
+
+static void
+item_data_get_gproperty(GObject *object, guint prop_id, GValue *value,
+ GParamSpec *spec)
+{
+ ItemData *item_data = ITEM_DATA (object);
+
+ switch (prop_id) {
+ case ARG_STORE:
+ g_value_set_pointer(value, item_data->priv->store);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(item_data, prop_id, spec);
+ }
+}
+
+void
+item_data_get_pos (ItemData *item_data, SheetPos *pos)
+{
+ g_return_if_fail (item_data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (item_data));
+ g_return_if_fail (pos != NULL);
+
+ *pos = item_data->priv->pos;
+}
+
+void
+item_data_set_pos (ItemData *item_data, SheetPos *pos)
+{
+ ItemDataPriv *priv;
+ SheetPos delta;
+
+ g_return_if_fail (pos != NULL);
+ g_return_if_fail (item_data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (item_data));
+
+ if (pos == NULL)
+ return;
+
+ priv = item_data->priv;
+
+ delta.x = pos->x - priv->pos.x;
+ delta.y = pos->y - priv->pos.y;
+
+ priv->pos.x = pos->x;
+ priv->pos.y = pos->y;
+
+ g_signal_emit_by_name(G_OBJECT(item_data), "moved", &delta);
+}
+
+void
+item_data_move (ItemData *item_data, SheetPos *delta)
+{
+ ItemDataPriv *priv;
+
+ g_return_if_fail (item_data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (item_data));
+
+ if (delta == NULL)
+ return;
+
+ priv = item_data->priv;
+ priv->pos.x += delta->x;
+ priv->pos.y += delta->y;
+
+ g_signal_emit_by_name(G_OBJECT(item_data), "moved", delta);
+}
+
+static void
+item_data_moved (ItemData *item_data, SheetPos *delta)
+{
+/* g_print ("mooooooved\n");*/
+}
+
+gpointer /*NodeStore * */
+item_data_get_store (ItemData *item_data)
+{
+ g_return_val_if_fail (item_data != NULL, NULL);
+ g_return_val_if_fail (IS_ITEM_DATA (item_data), NULL);
+
+ return item_data->priv->store;
+}
+
+ItemData *
+item_data_clone (ItemData *src)
+{
+ ItemDataClass *id_class;
+
+ g_return_val_if_fail (src != NULL, NULL);
+ g_return_val_if_fail (IS_ITEM_DATA (src), NULL);
+
+ id_class = ITEM_DATA_CLASS (G_OBJECT_GET_CLASS (src));
+ if (id_class->clone == NULL)
+ return NULL;
+
+ return id_class->clone (src);
+}
+
+static void
+item_data_copy (ItemData *dest, ItemData *src)
+{
+ g_return_if_fail (dest != NULL);
+ g_return_if_fail (IS_ITEM_DATA (dest));
+ g_return_if_fail (src != NULL);
+ g_return_if_fail (IS_ITEM_DATA (src));
+
+ dest->priv->pos = src->priv->pos;
+ dest->priv->store = NULL;
+}
+
+void
+item_data_get_relative_bbox (ItemData *data, SheetPos *p1, SheetPos *p2)
+{
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (data));
+
+ if (p1) {
+ p1->x = data->priv->b1.x;
+ p1->y = data->priv->b1.y;
+ }
+
+ if (p2) {
+ p2->x = data->priv->b2.x;
+ p2->y = data->priv->b2.y;
+ }
+}
+
+void
+item_data_get_absolute_bbox (ItemData *data, SheetPos *p1, SheetPos *p2)
+{
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (data));
+
+ item_data_get_relative_bbox (data, p1, p2);
+
+ if (p1) {
+ p1->x += data->priv->pos.x;
+ p1->y += data->priv->pos.y;
+ }
+
+ if (p2) {
+ p2->x += data->priv->pos.x;
+ p2->y += data->priv->pos.y;
+ }
+}
+
+void
+item_data_set_relative_bbox (ItemData *data, SheetPos *p1, SheetPos *p2)
+{
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (data));
+
+ if (p1) {
+ data->priv->b1.x = p1->x;
+ data->priv->b1.y = p1->y;
+ }
+
+ if (p2) {
+ data->priv->b2.x = p2->x;
+ data->priv->b2.y = p2->y;
+ }
+}
+
+void
+item_data_list_get_absolute_bbox (GList *item_data_list, SheetPos *p1,
+ SheetPos *p2)
+{
+ GList *list;
+ SheetPos b1, b2;
+
+ if (item_data_list == NULL)
+ return;
+
+ item_data_get_absolute_bbox (item_data_list->data, p1, p2);
+
+ for (list = item_data_list; list; list = list->next) {
+ item_data_get_absolute_bbox (list->data, &b1, &b2);
+
+ if (p1) {
+ p1->x = MIN (p1->x, b1.x);
+ p1->y = MIN (p1->y, b1.y);
+ }
+
+ if (p2) {
+ p2->x = MAX (p2->x, b2.x);
+ p2->y = MAX (p2->y, b2.y);
+ }
+ }
+}
+
+void
+item_data_rotate (ItemData *data, int angle, SheetPos *center)
+{
+ ItemDataClass *id_class;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (data));
+
+ id_class = ITEM_DATA_CLASS (G_OBJECT_GET_CLASS (data));
+ if (id_class->rotate) {
+ id_class->rotate (data, angle, center);
+ }
+}
+
+void
+item_data_flip (ItemData *data, gboolean horizontal, SheetPos *center)
+{
+ ItemDataClass *id_class;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (data));
+
+ id_class = ITEM_DATA_CLASS (G_OBJECT_GET_CLASS (data));
+ if (id_class->flip) {
+ id_class->flip (data, horizontal, center);
+ }
+}
+
+void
+item_data_unregister (ItemData *data)
+{
+ ItemDataClass *id_class;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (data));
+
+ id_class = ITEM_DATA_CLASS (G_OBJECT_GET_CLASS (data));
+ if (id_class->unreg) {
+ id_class->unreg (data);
+ }
+}
+
+int
+item_data_register (ItemData *data)
+{
+ ItemDataClass *id_class;
+
+ g_return_val_if_fail (data != NULL, -1);
+ g_return_val_if_fail (IS_ITEM_DATA (data), -1);
+
+ id_class = ITEM_DATA_CLASS (G_OBJECT_GET_CLASS (data));
+ if (id_class->reg) {
+ return id_class->reg (data);
+ }
+ return -1;
+}
+
+char *
+item_data_get_refdes_prefix (ItemData *data)
+{
+ ItemDataClass *id_class;
+
+ g_return_val_if_fail (data != NULL, NULL);
+ g_return_val_if_fail (IS_ITEM_DATA (data), NULL);
+
+ id_class = ITEM_DATA_CLASS (G_OBJECT_GET_CLASS (data));
+ if (id_class->get_refdes_prefix) {
+ return id_class->get_refdes_prefix (data);
+ }
+
+ return NULL;
+}
+
+void
+item_data_set_property (ItemData *data, char *property, char *value)
+{
+ ItemDataClass *id_class;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (data));
+
+ id_class = ITEM_DATA_CLASS (G_OBJECT_GET_CLASS (data));
+ if (id_class->set_property) {
+ id_class->set_property (data, property, value);
+ return;
+ }
+}
+
+gboolean
+item_data_has_properties (ItemData *data)
+{
+ ItemDataClass *id_class;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (data));
+
+ id_class = ITEM_DATA_CLASS (G_OBJECT_GET_CLASS (data));
+ if (id_class->has_properties) {
+ return id_class->has_properties (data);
+ }
+ return FALSE;
+}
+
+void
+item_data_print (ItemData *data, cairo_t *cr, SchematicPrintContext *ctx)
+{
+ ItemDataClass *id_class;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (data));
+ g_return_if_fail (cr != NULL);
+
+ id_class = ITEM_DATA_CLASS (G_OBJECT_GET_CLASS (data));
+ if (id_class->print) {
+ id_class->print (data, cr, ctx);
+ }
+}
+
diff --git a/src/model/item-data.h b/src/model/item-data.h
new file mode 100644
index 0000000..cbb68f0
--- /dev/null
+++ b/src/model/item-data.h
@@ -0,0 +1,148 @@
+/*
+ * item-data.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __ITEM_DATA_H
+#define __ITEM_DATA_H
+
+/** \file
+ *
+ * Base class for schematic model.
+ *
+ */
+
+#include <cairo/cairo.h>
+#include "sheet-pos.h"
+#include "schematic-print-context.h"
+
+#define TYPE_ITEM_DATA (item_data_get_type())
+#define ITEM_DATA(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), TYPE_ITEM_DATA, ItemData))
+#define ITEM_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), TYPE_ITEM_DATA, ItemDataClass))
+#define IS_ITEM_DATA(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), TYPE_ITEM_DATA))
+#define IS_ITEM_DATA_CLASS(klass) (G_TYPE_CHECK_INSTANCE_GET_CLASS((klass), TYPE_ITEM_DATA, ItemDataClass))
+
+typedef struct _ItemData ItemData;
+typedef struct _ItemDataClass ItemDataClass;
+typedef struct _ItemDataPriv ItemDataPriv;
+
+typedef enum {
+ ID_FLIP_NONE = 0,
+ ID_FLIP_HORIZ = 1 << 0,
+ ID_FLIP_VERT = 1 << 1
+} IDFlip;
+
+struct _ItemData {
+ GObject parent;
+ ItemDataPriv *priv;
+};
+
+struct _ItemDataClass
+{
+ GObjectClass parent_class;
+
+ /* Signals. */
+ void (*moved) (ItemData *data, SheetPos *delta);
+
+ /* Methods. */
+ ItemData *(*clone) (ItemData *src);
+ void (*copy) (ItemData *dest, ItemData *src);
+ void (*rotate) (ItemData *data, int angle, SheetPos *center);
+ void (*flip) (ItemData *data, gboolean horizontal, SheetPos *center);
+ void (*unreg) (ItemData *data);
+ int (*reg) (ItemData *data);
+
+ char* (*get_refdes_prefix) (ItemData *data);
+ void (*set_property) (ItemData *data, char *property, char *value);
+ gboolean (*has_properties) (ItemData *data);
+
+ void (*print) (ItemData *data, cairo_t *cr, SchematicPrintContext *ctx);
+};
+
+GType item_data_get_type (void);
+/** Create a new ItemData object */
+ItemData *item_data_new (void);
+/** Clone an ItemData
+ *
+ * \param src A valid ItemData
+ */
+ItemData *item_data_clone (ItemData *src);
+/** Get Item position */
+void item_data_get_pos (ItemData *item_data, SheetPos *pos);
+/** Set Item position */
+void item_data_set_pos (ItemData *item_data, SheetPos *pos);
+/** Move an ItemData
+ *
+ * \param delta offset to move the item
+ */
+void item_data_move (ItemData *item_data, SheetPos *delta);
+/** Get the bounding box of an item data
+ *
+ * Retrieve the bounding box of the item relative to position
+ * \param p1 Where to store the upper-left point
+ * \param p2 Where to store the lower-right point
+ */
+void item_data_get_relative_bbox (ItemData *data, SheetPos *p1, SheetPos *p2);
+/** Set the relative bounding box */
+void item_data_set_relative_bbox (ItemData *data, SheetPos *p1, SheetPos *p2);
+/** Get absolute bounding box
+ *
+ * This function is like item_data_get_relative_bbox but it add
+ * the item position to the bbox vertex
+ */
+void item_data_get_absolute_bbox (ItemData *data, SheetPos *p1, SheetPos *p2);
+/** Get the absolute bounding box of a list of items
+ *
+ * This return a bbox that enclose all item in a list
+ */
+void item_data_list_get_absolute_bbox (GList *item_data_list, SheetPos *p1, SheetPos *p2);
+/** Rotate an item */
+void item_data_rotate (ItemData *data, int angle, SheetPos *center);
+/** Flip an item */
+void item_data_flip (ItemData *data, gboolean horizontal, SheetPos *center);
+/** Get the Store associated for this item
+ *
+ * Store is a class that hold all items in a schematic
+ */
+gpointer item_data_get_store (ItemData *item_data);
+/** Unregister item in his Store */
+void item_data_unregister (ItemData *data);
+/** Register item in his Store */
+int item_data_register (ItemData *data);
+/** Tell us what it does :-D FIXME */
+char *item_data_get_refdes_prefix (ItemData *data);
+gboolean item_data_has_properties (ItemData *date);
+/** Set property */
+void item_data_set_property (ItemData *data, char *property, char *value);
+/** Print Item data
+ *
+ * This method implement the Cairo stuff for schematic print of an item.
+ */
+void item_data_print (ItemData *data, cairo_t *cr, SchematicPrintContext *ctx);
+
+
+#endif
diff --git a/src/model/node-store.c b/src/model/node-store.c
new file mode 100644
index 0000000..2154b8b
--- /dev/null
+++ b/src/model/node-store.c
@@ -0,0 +1,1227 @@
+/*
+ * node-store.c
+ *
+ * This is where the circuit elements (pins/wires) are stored.
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <math.h>
+#include <glib.h>
+#include <glib-object.h>
+#include "node-store.h"
+#include "node.h"
+#include "part.h"
+#include "wire.h"
+#include "wire-private.h"
+#include "item-data.h"
+
+/*
+ * NODE_EPSILON is used to check for intersection.
+ * HASH_EPSILON is used in the hash equality check function.
+ */
+#define NODE_EPSILON 1e-10
+#define HASH_EPSILON 1e-3
+
+/* Share an endpoint? */
+#define SEP(p1x,p1y,p2x,p2y) (IS_EQ(p1x, p2x) && IS_EQ(p1y, p2y))
+
+/* Equals? */
+#define IS_EQ(a,b) (fabs ((a) - (b)) < NODE_EPSILON)
+
+#define ON_THE_WIRE(p1,start,end) ( fabs((end.y-start.y)*(p1.x-start.x)-(end.x-start.x)*(p1.y-start.y))<NODE_EPSILON )
+
+static void node_store_class_init (NodeStoreClass *klass);
+static void node_store_init (NodeStore *store);
+static guint node_hash (gconstpointer key);
+static int node_equal (gconstpointer a, gconstpointer b);
+static GSList *wires_intersect (NodeStore *store, double x1, double y1,
+ double x2, double y2);
+static GSList *wire_intersect_parts (NodeStore *store, Wire *wire);
+static int is_wire_at_pos (double x1, double y1, double x2, double y2,
+ SheetPos pos);
+static GSList *wires_at_pos (NodeStore *store, SheetPos pos);
+static int do_wires_intersect (double Ax, double Ay, double Bx, double By,
+ double Cx, double Cy, double Dx, double Dy, SheetPos *pos);
+static void node_store_finalize(GObject *self);
+static void node_store_dispose(GObject *self);
+
+typedef struct {
+ Wire *wire;
+ SheetPos pos;
+} IntersectionPoint;
+
+enum {
+ DOT_ADDED,
+ DOT_REMOVED,
+ LAST_SIGNAL
+};
+
+static guint node_store_signals [LAST_SIGNAL] = { 0 };
+static GObjectClass *parent_class = NULL;
+
+GType
+node_store_get_type (void)
+{
+ static GType node_store_type = 0;
+
+ if (!node_store_type) {
+ static const GTypeInfo node_store_info = {
+ sizeof (NodeStoreClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) node_store_class_init,
+ NULL,
+ NULL,
+ sizeof (NodeStore),
+ 0,
+ (GInstanceInitFunc) node_store_init,
+ NULL
+ };
+
+ node_store_type = g_type_register_static (G_TYPE_OBJECT, "NodeStore",
+ &node_store_info, 0);
+ }
+
+ return node_store_type;
+}
+
+static void
+node_store_finalize(GObject *object)
+{
+ NodeStore *self = NODE_STORE(object);
+
+ if (self->nodes) {
+ g_hash_table_destroy (self->nodes);
+ self->nodes = NULL;
+ }
+
+ if (self->wires) {
+ g_list_free (self->wires);
+ self->wires = NULL;
+ }
+ if (self->parts) {
+ g_list_free (self->parts);
+ self->parts = NULL;
+ }
+ if (self->items) {
+ g_list_free (self->items);
+ self->items = NULL;
+ }
+
+ parent_class->finalize(object);
+}
+
+static void
+node_store_dispose(GObject *self)
+{
+ parent_class->dispose(self);
+}
+
+static void
+node_store_class_init (NodeStoreClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS(klass);
+ parent_class = g_type_class_peek_parent(klass);
+
+ gobject_class->finalize = node_store_finalize;
+ gobject_class->dispose = node_store_dispose;
+
+ node_store_signals [DOT_ADDED] =
+ g_signal_new ("dot_added",
+ G_TYPE_FROM_CLASS(gobject_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (NodeStoreClass, dot_added),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE,
+ 1, G_TYPE_POINTER);
+
+ node_store_signals [DOT_REMOVED] =
+ g_signal_new ("dot_removed",
+ TYPE_NODE_STORE,
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (NodeStoreClass, dot_removed),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE,
+ 1, G_TYPE_POINTER);
+}
+
+static void
+node_store_init (NodeStore *self)
+{
+ self->nodes = g_hash_table_new (node_hash, node_equal);
+ self->wires = NULL;
+ self->parts = NULL;
+ self->items = NULL;
+ self->textbox = NULL;
+}
+
+NodeStore *
+node_store_new (void)
+{
+ return NODE_STORE(g_object_new (TYPE_NODE_STORE, NULL));
+}
+
+static void
+dot_added_callback (Node *node, SheetPos *pos, NodeStore *store)
+{
+ g_return_if_fail (store != NULL);
+ g_return_if_fail (IS_NODE_STORE (store));
+
+ g_signal_emit_by_name(G_OBJECT(store), "dot_added", pos);
+}
+
+static void
+dot_removed_callback (Node *node, SheetPos *pos, NodeStore *store)
+{
+ g_return_if_fail (store != NULL);
+ g_return_if_fail (IS_NODE_STORE (store));
+
+ g_signal_emit_by_name(G_OBJECT(store), "dot_removed", pos);
+}
+
+Node *
+node_store_get_or_create_node (NodeStore *self, SheetPos pos)
+{
+ Node *node;
+
+ g_return_val_if_fail (self != NULL, NULL);
+ g_return_val_if_fail (IS_NODE_STORE (self), NULL);
+
+ node = g_hash_table_lookup (self->nodes, &pos);
+
+ if (!node) {
+ /*
+ * Create a node at (x, y) and return it.
+ */
+ node = node_new (pos);
+
+ g_signal_connect_object(
+ G_OBJECT (node),
+ "dot_added",
+ G_CALLBACK (dot_added_callback),
+ G_OBJECT (self),
+ 0);
+
+ g_signal_connect_object (
+ G_OBJECT (node),
+ "dot_removed",
+ G_CALLBACK (dot_removed_callback),
+ G_OBJECT (self),
+ 0);
+
+ g_hash_table_insert (self->nodes, &node->key, node);
+ }
+
+ /*
+ * If there was a previously stored node here, just
+ * return that node.
+ */
+ return node;
+}
+
+int
+node_store_add_part (NodeStore *self, Part *part)
+{
+ GSList *wire_list, *list;
+ Node *node;
+ SheetPos lookup_key;
+ SheetPos part_pos;
+ gdouble x, y;
+ int i, num_pins;
+
+ g_return_val_if_fail (self != NULL, FALSE);
+ g_return_val_if_fail (IS_NODE_STORE (self), FALSE);
+ g_return_val_if_fail (part != NULL, FALSE);
+ g_return_val_if_fail (IS_PART (part), FALSE);
+
+ num_pins = part_get_num_pins (part);
+
+ item_data_get_pos (ITEM_DATA (part), &part_pos);
+
+ for (i = 0; i < num_pins; i++) {
+ Pin *pins;
+
+ pins = part_get_pins (part);
+ x = part_pos.x + pins[i].offset.x;
+ y = part_pos.y + pins[i].offset.y;
+
+ /*
+ * Use the position of the pin as hash key.
+ */
+ lookup_key.x = x;
+ lookup_key.y = y;
+
+ /*
+ * Retrieve a node for this position.
+ */
+ node = node_store_get_or_create_node (self, lookup_key);
+
+ /*
+ * Add all the wires that intersect this pin to the node store.
+ */
+ wire_list = wires_at_pos (self, lookup_key);
+
+ for (list = wire_list; list; list = list->next) {
+ Wire *wire = list->data;
+
+ /* g_print ("Add pin to wire.\n"); */
+
+ node_add_wire (node, wire);
+ wire_add_node (wire, node);
+ }
+
+ g_slist_free (wire_list);
+
+ node_add_pin (node, &pins[i]);
+ }
+
+ g_object_set (G_OBJECT (part), "store", self, NULL);
+ self->parts = g_list_prepend (self->parts, part);
+ self->items = g_list_prepend (self->items, part);
+
+ return TRUE;
+}
+
+int
+node_store_remove_part (NodeStore *self, Part *part)
+{
+ Node *node;
+ SheetPos lookup_key;
+ SheetPos pos;
+ gdouble x, y;
+ int i, num_pins;
+ Pin *pins;
+
+ g_return_val_if_fail (self != NULL, FALSE);
+ g_return_val_if_fail (IS_NODE_STORE (self), FALSE);
+ g_return_val_if_fail (part != NULL, FALSE);
+ g_return_val_if_fail (IS_PART (part), FALSE);
+
+ self->parts = g_list_remove (self->parts, part);
+ self->items = g_list_remove (self->items, part);
+
+ num_pins = part_get_num_pins (part);
+ item_data_get_pos (ITEM_DATA (part), &pos);
+
+ pins = part_get_pins (part);
+ for (i = 0; i < num_pins; i++) {
+ x = pos.x + pins[i].offset.x;
+ y = pos.y + pins[i].offset.y;
+
+ /*
+ * Use the position of the pin as lookup key.
+ */
+ lookup_key.x = x;
+ lookup_key.y = y;
+
+ node = g_hash_table_lookup (self->nodes, &lookup_key);
+ if (node) {
+ if (!node_remove_pin (node, &pins[i])) {
+ g_warning ("Couldn't remove pin.");
+ return FALSE;
+ }
+
+ /*
+ * If the node is empty after removing the pin,
+ * remove the node as well.
+ */
+ if (node_is_empty (node)) {
+ g_hash_table_remove (self->nodes, &lookup_key);
+ g_object_unref(G_OBJECT(node));
+ }
+ } else {
+ /* FIXME: Fix this or just silently return if the part is
+ non-existant? */
+ g_warning ("No node to remove part from.");
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+int
+node_store_add_textbox (NodeStore *self, Textbox *text)
+{
+ g_object_set (G_OBJECT (text), "store", self, NULL);
+ self->textbox = g_list_prepend (self->textbox, text);
+
+ return TRUE;
+}
+
+int
+node_store_remove_textbox (NodeStore *self, Textbox *text)
+{
+ self->textbox = g_list_remove (self->textbox, text);
+
+ return TRUE;
+}
+
+int
+node_store_add_wire (NodeStore *store, Wire *wire)
+{
+ gdouble x1, y1, x2, y2;
+ GSList *ip_list, *list;
+ IntersectionPoint *ipoint;
+ Node *node;
+ WirePriv *priv;
+ SheetPos pos, length;
+
+ g_return_val_if_fail (store != NULL, FALSE);
+ g_return_val_if_fail (IS_NODE_STORE (store), FALSE);
+ g_return_val_if_fail (wire != NULL, FALSE);
+ g_return_val_if_fail (IS_WIRE (wire), FALSE);
+
+/* if (wire_get_store (wire) != NULL) {
+ g_warning ("Trying to add already stored wire.");
+ return FALSE;
+ }
+*/
+
+/* g_print ("ADD WIRE\n");*/
+
+ priv = wire->priv;
+
+ wire_get_pos_and_length (wire, &pos, &length);
+
+ x1 = pos.x;
+ y1 = pos.y;
+ x2 = x1 + length.x;
+ y2 = y1 + length.y;
+
+ /*
+ * Check for intersection with other wires.
+ */
+ ip_list = wires_intersect (store, x1, y1, x2, y2);
+
+ for (list = ip_list; list; list = list->next) {
+ ipoint = list->data;
+
+
+ //g_print ("(%g %g) (%g %g), ip (%g %g)\n", x1, y1, x2, y2, ipoint->pos.x, ipoint->pos.y);
+
+
+ if (IS_EQ (x1, x2) && ((ipoint->pos.y == y1) || (ipoint->pos.y == y2))) {
+ SheetPos w_pos, w_length;
+ gboolean can_join;
+ GSList *nodes;
+
+ wire_get_pos_and_length (ipoint->wire, &w_pos, &w_length);
+ gdouble _x1, _x2, _y1, _y2;
+
+ _x1 = w_pos.x;
+ _y1 = w_pos.y;
+ _x2 = _x1 + w_length.x;
+ _y2 = _y1 + w_length.y;
+
+ can_join = TRUE;
+ nodes = wire_get_nodes (wire);
+ for (; nodes; nodes = nodes->next) {
+ SheetPos p1;
+ Node *node = (Node *)nodes->data;
+
+ p1.x = _x1;
+ p1.y = _y1;
+ if ((node->key.x == p1.x) && (node->key.y == p1.y)) {
+ can_join = FALSE;
+ break;
+ }
+ p1.x = _x2;
+ p1.y = _y2;
+ if ((node->key.x == p1.x) && (node->key.y == p1.y)) {
+ can_join = FALSE;
+ break;
+ }
+ }
+
+ if (IS_EQ(_x1, _x2) && can_join) {
+ if (w_pos.x < pos.x) pos.x = w_pos.x;
+ if (w_pos.y < pos.y) pos.y = w_pos.y;
+ length.x += w_length.x;
+ length.y += w_length.y;
+
+ /* Update the new size and pos of the wire */
+ item_data_unregister (ITEM_DATA (ipoint->wire));
+ wire_set_length (ipoint->wire, &length);
+ item_data_set_pos (ITEM_DATA (ipoint->wire), &pos);
+ wire_update_bbox (ipoint->wire);
+ item_data_register (ITEM_DATA (ipoint->wire));
+
+ /* Done!, return -1 so wire si deleted */
+ return -1;
+ }
+ } else if (IS_EQ (y1, y2) && ((ipoint->pos.x == x1) || (ipoint->pos.x == x2))) {
+ SheetPos w_pos, w_length;
+ gboolean can_join;
+ GSList *nodes;
+
+ wire_get_pos_and_length (ipoint->wire, &w_pos, &w_length);
+ gdouble _x1, _x2, _y1, _y2;
+
+ _x1 = w_pos.x;
+ _y1 = w_pos.y;
+ _x2 = _x1 + w_length.x;
+ _y2 = _y1 + w_length.y;
+
+ can_join = TRUE;
+ nodes = wire_get_nodes (wire);
+ for (; nodes; nodes = nodes->next) {
+ SheetPos p;
+ Node *node = (Node *)nodes->data;
+
+ p.x = _x1;
+ p.y = _y1;
+ if ((node->key.x == p.x) && (node->key.y == p.y)) {
+ can_join = FALSE;
+ break;
+ }
+ p.x = _x2;
+ p.y = _y2;
+ if ((node->key.x == p.x) && (node->key.y == p.y)) {
+ can_join = FALSE;
+ break;
+ }
+ }
+
+ if (IS_EQ(_y1, _y2) && can_join) {
+ if (w_pos.x < pos.x) pos.x = w_pos.x;
+ if (w_pos.y < pos.y) pos.y = w_pos.y;
+ length.x += w_length.x;
+ length.y += w_length.y;
+
+ /* Update the new size and pos of the wire */
+ item_data_unregister (ITEM_DATA (ipoint->wire));
+ wire_set_length (ipoint->wire, &length);
+ item_data_set_pos (ITEM_DATA (ipoint->wire), &pos);
+ wire_update_bbox (ipoint->wire);
+ item_data_register (ITEM_DATA (ipoint->wire));
+
+ /* Done!, return -1 so wire si deleted */
+ return -1;
+ }
+ }
+
+ node = node_store_get_or_create_node (store, ipoint->pos);
+
+ /*
+ * Add the wire, and also the wire that is intersected.
+ */
+ node_add_wire (node, wire);
+ node_add_wire (node, ipoint->wire);
+
+ wire_add_node (wire, node);
+ wire_add_node (ipoint->wire, node);
+
+/* g_print ("Add wire to wire.\n");*/
+
+ g_free (ipoint);
+ }
+ g_slist_free (ip_list);
+
+ /*
+ * Check for intersection with parts (pins).
+ */
+ ip_list = wire_intersect_parts (store, wire);
+
+ for (list = ip_list; list; list = list->next) {
+ node = list->data;
+
+ /*
+ * Add the wire to the node (pin) that it intersected.
+ */
+ node_add_wire (node, wire);
+ wire_add_node (wire, node);
+
+/* g_print ("Add wire to pin.\n");*/
+ }
+
+ g_slist_free (ip_list);
+
+ g_object_set (G_OBJECT (wire), "store", store, NULL);
+ store->wires = g_list_prepend (store->wires, wire);
+ store->items = g_list_prepend (store->items, wire);
+
+ return TRUE;
+}
+
+int
+node_store_remove_wire (NodeStore *store, Wire *wire)
+{
+ gdouble x1, y1, x2, y2;
+ GSList *list;
+ SheetPos lookup_key, pos, length;
+ WirePriv *priv;
+
+ g_return_val_if_fail (store != NULL, FALSE);
+ g_return_val_if_fail (IS_NODE_STORE (store), FALSE);
+ g_return_val_if_fail (wire != NULL, FALSE);
+ g_return_val_if_fail (IS_WIRE (wire), FALSE);
+
+ priv = wire->priv;
+
+ if (item_data_get_store (ITEM_DATA (wire)) == NULL) {
+ g_warning ("Trying to remove non-stored wire.");
+ return FALSE;
+ }
+
+ wire_get_pos_and_length (wire, &pos, &length);
+
+ x1 = pos.x;
+ y1 = pos.y;
+ x2 = x1 + length.x;
+ y2 = y1 + length.y;
+
+ store->wires = g_list_remove (store->wires, wire);
+ store->items = g_list_remove (store->items, wire);
+
+ /*
+ * If the nodes that this wire passes through will be
+ * empty when the wire is removed, remove the node as well.
+ */
+
+ /*
+ * We must work on a copy of the nodes list, since it
+ * changes as we remove nodes.
+ */
+ list = g_slist_copy (wire_get_nodes (wire));
+
+ for (; list; list = list->next) {
+ Node *node = list->data;
+
+ lookup_key = node->key;
+
+ node_remove_wire (node, wire);
+
+ wire_remove_node (wire, node);
+
+ if (node_is_empty (node))
+ g_hash_table_remove (store->nodes, &lookup_key);
+ }
+
+ g_slist_free (list);
+
+ return TRUE;
+}
+
+static GSList *
+wire_intersect_parts (NodeStore *store, Wire *wire)
+{
+ GList *list;
+ GSList *ip_list;
+ Node *node;
+ SheetPos lookup_pos;
+ SheetPos part_pos, wire_pos, wire_length;
+ Part *part;
+ double x, y, wire_x1, wire_y1, wire_x2, wire_y2;
+ int i, num_pins;
+
+ g_return_val_if_fail (store != NULL, FALSE);
+ g_return_val_if_fail (IS_NODE_STORE (store), FALSE);
+ g_return_val_if_fail (wire != NULL, FALSE);
+ g_return_val_if_fail (IS_WIRE (wire), FALSE);
+
+ ip_list = NULL;
+
+ wire_get_pos_and_length (wire, &wire_pos, &wire_length);
+
+ wire_x1 = wire_pos.x;
+ wire_x2 = wire_pos.x + wire_length.x;
+ wire_y1 = wire_pos.y;
+ wire_y2 = wire_pos.y + wire_length.y;
+
+ /*
+ * Go through all the parts and see which of their
+ * pins that intersect the wire.
+ */
+ for (list = store->parts; list; list = list->next) {
+ part = list->data;
+
+ num_pins = part_get_num_pins (part);
+ item_data_get_pos (ITEM_DATA (part), &part_pos);
+
+ for (i = 0; i < num_pins; i++) {
+ Pin *pins;
+
+ pins = part_get_pins (part);
+ x = part_pos.x + pins[i].offset.x;
+ y = part_pos.y + pins[i].offset.y;
+
+ lookup_pos.x = x;
+ lookup_pos.y = y;
+
+ /*
+ * If there is a wire at this pin's position,
+ * add it to the return list.
+ */
+ if (is_wire_at_pos (wire_x1, wire_y1, wire_x2, wire_y2, lookup_pos)) {
+ node = node_store_get_node (store, lookup_pos);
+
+ if (node == NULL)
+ g_warning ("Bug: Found no node at pin at (%g %g).\n", x, y);
+ else
+ ip_list = g_slist_prepend (ip_list, node);
+ }
+ }
+ }
+
+ return ip_list;
+}
+
+static GSList *
+wires_at_pos (NodeStore *store, SheetPos pos)
+{
+ GList *list;
+ GSList *wire_list;
+ Wire *wire;
+ SheetPos wire_pos, wire_length;
+ double x1, y1, x2, y2;
+
+ g_return_val_if_fail (store != NULL, FALSE);
+ g_return_val_if_fail (IS_NODE_STORE (store), FALSE);
+
+ wire_list = NULL;
+
+ for (list = store->wires; list; list = list->next) {
+ wire = list->data;
+
+ wire_get_pos_and_length (wire, &wire_pos, &wire_length);
+ x1 = wire_pos.x;
+ y1 = wire_pos.y;
+ x2 = x1 + wire_length.x;
+ y2 = y1 + wire_length.y;
+
+ if (is_wire_at_pos (x1, y1, x2, y2, pos))
+ wire_list = g_slist_prepend (wire_list, wire);
+ }
+
+ return wire_list;
+}
+
+int
+node_store_is_wire_at_pos (NodeStore *store, SheetPos pos)
+{
+ GList *list;
+ Wire *wire;
+ SheetPos wire_pos, wire_length;
+ double x1, y1, x2, y2;
+
+ g_return_val_if_fail (store != NULL, FALSE);
+ g_return_val_if_fail (IS_NODE_STORE (store), FALSE);
+
+ for (list = store->wires; list; list = list->next) {
+ wire = list->data;
+
+ wire_get_pos_and_length (wire, &wire_pos, &wire_length);
+ x1 = wire_pos.x;
+ y1 = wire_pos.y;
+ x2 = x1 + wire_length.x;
+ y2 = y1 + wire_length.y;
+
+ if (is_wire_at_pos (x1, y1, x2, y2, pos))
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static GSList *
+wires_intersect (NodeStore *store, double x1, double y1, double x2, double y2)
+{
+ GList *list;
+ GSList *ip_list;
+ Wire *wire2;
+ SheetPos pos, wire2_pos, wire2_length;
+ SheetPos wire1_start_pos, wire1_end_pos;
+ double wire2_x1, wire2_y1, wire2_x2, wire2_y2;
+
+ g_return_val_if_fail (store != NULL, FALSE);
+ g_return_val_if_fail (IS_NODE_STORE (store), FALSE);
+
+ wire1_start_pos.x = x1;
+ wire1_start_pos.y = y1;
+ wire1_end_pos.x = x2;
+ wire1_end_pos.y = y2;
+
+ /*
+ * Search through all the wires. Is there a better way?
+ */
+ ip_list = NULL;
+ for (list = store->wires; list; list = list->next) {
+ wire2 = list->data;
+
+ wire_get_pos_and_length (wire2, &wire2_pos, &wire2_length);
+ wire2_x1 = wire2_pos.x;
+ wire2_y1 = wire2_pos.y;
+ wire2_x2 = wire2_x1 + wire2_length.x;
+ wire2_y2 = wire2_y1 + wire2_length.y;
+
+ if (do_wires_intersect (x1, y1, x2, y2, wire2_x1, wire2_y1,
+ wire2_x2, wire2_y2, &pos)) {
+ IntersectionPoint *ip;
+
+ ip = g_new0 (IntersectionPoint, 1);
+
+ ip->wire = wire2;
+ ip->pos = pos;
+ ip_list = g_slist_prepend (ip_list, ip);
+ }
+ }
+
+ return ip_list;
+}
+
+/*
+ * node_store_get_node
+ *
+ * Find the node that has an element at a certain position.
+ */
+Node *
+node_store_get_node (NodeStore *store, SheetPos pos)
+{
+ Node *node;
+
+ g_return_val_if_fail (store != NULL, NULL);
+ g_return_val_if_fail (IS_NODE_STORE (store), NULL);
+
+ node = g_hash_table_lookup (store->nodes, &pos);
+
+/* if (!node)
+ g_print ("No node at (%g, %g)\n", pos.x, pos.y);
+ else
+ g_print ("Found node at (%g, %g)\n", pos.x, pos.y);
+*/
+ return node;
+}
+
+static guint
+node_hash (gconstpointer key)
+{
+ SheetPos *sp = (SheetPos *) key;
+ int x, y;
+
+ /* hasha på varannan bit? */
+ /* Can anybody translate this? */
+
+ x = (int)rint (sp->x) % 256;
+ y = (int)rint (sp->y) % 256;
+
+ return (y << 8) | x;
+}
+
+static int
+node_equal (gconstpointer a, gconstpointer b)
+{
+ SheetPos *spa, *spb;
+
+ spa = (SheetPos *) a;
+ spb = (SheetPos *) b;
+
+ if (fabs (spa->y - spb->y) > HASH_EPSILON) {
+/* if (fabs (spa->y - spb->y) < 2.0)
+ g_print ("y mellan EPSILON och 2.0!\n");
+*/
+ return 0;
+ }
+
+ if (fabs (spa->x - spb->x) > HASH_EPSILON) {
+/* if (fabs (spa->x - spb->x) < 5.0)
+ g_print ("x mellan EPSILON och 2.0!\n");
+*/
+ return 0;
+ }
+
+ return 1;
+}
+
+void
+node_store_node_foreach (NodeStore *store, GHFunc *func, gpointer user_data)
+{
+ g_return_if_fail (store != NULL);
+ g_return_if_fail (IS_NODE_STORE (store));
+
+ g_hash_table_foreach (store->nodes, (gpointer)func, user_data);
+}
+
+static int
+is_wire_at_pos (double x1, double y1, double x2, double y2, SheetPos pos)
+{
+ double k, x0, y0;
+
+ x0 = pos.x;
+ y0 = pos.y;
+
+ if (!IS_EQ (x1, x2) && !IS_EQ (y1, y2)) {
+ k = ((y2 - y1)) / ((x2 - x1));
+ if (IS_EQ (y0, (y1 + k * (x0 - x1)))) {
+ return TRUE;
+ }
+ } else if (IS_EQ (x2, x1) && IS_EQ (x1, x0)) {
+ if (y0 >= y1 && y0 <= y2) {
+ return TRUE;
+ }
+ } else if (IS_EQ (y2, y1) && IS_EQ (y1, y0)) {
+ if (x0 >= x1 && x0 <= x2) {
+ return TRUE;
+ }
+ }
+
+// g_print ("no match: (%g %g) -> (%g %g), (%g %g)\n", x1, y1, x2, y2, pos.x, pos.y);
+
+ return FALSE;
+}
+
+/*
+ * Decides if two wires intersect. Note that wires that share an
+ * endpoint are considered intersecting each other. Intersection point
+ * is returned in pos.
+ */
+static int
+do_wires_intersect (double Ax, double Ay, double Bx, double By, double Cx,
+ double Cy, double Dx, double Dy, SheetPos *pos)
+{
+ double r, s, d;
+
+ /*
+ * Wires don't intersect if they share an endpoint. NOTE: they do here...
+ */
+ if (SEP (Ax, Ay, Cx, Cy)) { /* same starting point */
+ pos->x = Ax;
+ pos->y = Ay;
+ return TRUE;
+ } else if (SEP (Ax, Ay, Dx, Dy)) { /* 1st start == 2nd end */
+ pos->x = Ax;
+ pos->y = Ay;
+ return TRUE;
+ } else if (SEP (Bx, By, Cx, Cy)) { /* 1st end == 2nd start */
+ pos->x = Bx;
+ pos->y = By;
+ return TRUE;
+ } else if (SEP (Bx, By, Dx, Dy)) { /* 1st end == 2nd end */
+ pos->x = Bx;
+ pos->y = By;
+ return TRUE;
+ }
+
+ /*
+ * Calculate the denominator.
+ */
+ d = ((Bx - Ax) * (Dy - Cy) - (By - Ay) * (Dx - Cx));
+
+ /*
+ * We have two parallell wires if d = 0.
+ */
+ if (fabs (d) < NODE_EPSILON) {
+ return FALSE;
+ }
+
+ r = ((Ay - Cy) * (Dx - Cx) - (Ax - Cx) * (Dy - Cy));
+
+ /*
+ * Colinear wires, if r = 0. FIXME: check for intersection?
+ * not needed since we already checked for starts and ends
+ */
+ if (fabs (r) < NODE_EPSILON) {
+
+ }
+
+ r = r / d;
+ s = ((Ay - Cy) * (Bx - Ax) - (Ax - Cx) * (By - Ay)) / d;
+
+ /*
+ * Check for intersection, which we have for values of
+ * r and s in [0, 1].
+ */
+ if (r >= 0 &&
+ (r - 1.0) < NODE_EPSILON &&
+ s >= 0 &&
+ (s - 1.0) < NODE_EPSILON) {
+
+ /*
+ * Calculate the intersection point.
+ */
+ pos->x = Ax + r * (Bx - Ax);
+ pos->y = Ay + r * (By - Ay);
+
+ /*
+ to be accepted only if it coincides with the start or end
+ of any of the wires
+ */
+ if ( SEP(pos->x,pos->y,Ax,Ay) ||
+ SEP(pos->x,pos->y,Bx,By) ||
+ SEP(pos->x,pos->y,Cx,Cy) ||
+ SEP(pos->x,pos->y,Dx,Dy)
+ )
+
+ return TRUE;
+ else
+ return FALSE;
+ }
+
+ return FALSE;
+}
+
+GList *
+node_store_get_parts (NodeStore *store)
+{
+ g_return_val_if_fail (store != NULL, NULL);
+ g_return_val_if_fail (IS_NODE_STORE (store), NULL);
+
+ return store->parts;
+}
+
+GList *
+node_store_get_wires (NodeStore *store)
+{
+ g_return_val_if_fail (store != NULL, NULL);
+ g_return_val_if_fail (IS_NODE_STORE (store), NULL);
+
+ return store->wires;
+}
+
+GList *
+node_store_get_items (NodeStore *store)
+{
+ g_return_val_if_fail (store != NULL, NULL);
+ g_return_val_if_fail (IS_NODE_STORE (store), NULL);
+
+ return store->items;
+}
+
+/*
+ * Debugging code.
+ */
+
+void
+node_store_dump_wires (NodeStore *store)
+{
+ GList *wires;
+
+ g_print ("\n------------------- Dump wires -------------------\n");
+
+ for (wires = store->wires; wires; wires = wires->next) {
+ Wire *wire;
+ SheetPos start, length;
+
+ wire = wires->data;
+ wire_get_pos_and_length (wire, &start, &length);
+
+ g_print ("(%g %g) -> (%g %g): %d nodes.\n",
+ start.x, start.y,
+ start.x + length.x, start.y + length.y,
+ g_slist_length (wire->priv->nodes));
+ }
+
+ g_print ("\n");
+}
+
+static void
+add_node (gpointer key, Node *node, GList **list)
+{
+ *list = g_list_prepend (*list, node);
+}
+
+static void
+add_node_position (gpointer key, Node *node, GList **list)
+{
+ if (node_needs_dot (node))
+ *list = g_list_prepend (*list, key);
+}
+
+GList *
+node_store_get_node_positions (NodeStore *store)
+{
+ GList *result;
+
+ g_return_val_if_fail (store != NULL, NULL);
+ g_return_val_if_fail (IS_NODE_STORE (store), NULL);
+
+ result = NULL;
+ g_hash_table_foreach (store->nodes, (GHFunc) add_node_position, &result);
+
+ return result;
+}
+
+GList *
+node_store_get_nodes (NodeStore *store)
+{
+ GList *result;
+
+ g_return_val_if_fail (store != NULL, NULL);
+ g_return_val_if_fail (IS_NODE_STORE (store), NULL);
+
+ result = NULL;
+ g_hash_table_foreach (store->nodes, (GHFunc) add_node, &result);
+
+ return result;
+}
+
+void
+node_store_get_bounds (NodeStore *store, ArtDRect *rect)
+{
+ GList *list;
+ SheetPos p1, p2;
+
+ g_return_if_fail (store != NULL);
+ g_return_if_fail (IS_NODE_STORE (store));
+ g_return_if_fail (rect != NULL);
+
+ rect->x0 = G_MAXDOUBLE;
+ rect->y0 = G_MAXDOUBLE;
+ rect->x1 = -G_MAXDOUBLE;
+ rect->y1 = -G_MAXDOUBLE;
+
+ for (list = store->items; list; list = list->next) {
+ item_data_get_absolute_bbox (ITEM_DATA (list->data), &p1, &p2);
+
+ rect->x0 = MIN (rect->x0, p1.x);
+ rect->y0 = MIN (rect->y0, p1.y);
+ rect->x1 = MAX (rect->x1, p2.x);
+ rect->y1 = MAX (rect->y1, p2.y);
+ }
+}
+
+gint
+node_store_count_items (NodeStore *store, ArtDRect *rect)
+{
+ GList *list;
+ SheetPos p1, p2;
+ ItemData *data;
+ gint n;
+
+ g_return_val_if_fail (store != NULL, 0);
+ g_return_val_if_fail (IS_NODE_STORE (store), 0);
+
+ if (rect == NULL)
+ return g_list_length (store->items);
+
+ for (list = store->items, n = 0; list; list = list->next) {
+ data = ITEM_DATA (list->data);
+ item_data_get_absolute_bbox (data, &p1, &p2);
+ if (p1.x <= rect->x1 && p1.y <= rect->y1 &&
+ p2.x >= rect->x0 && p2.y >= rect->y0) {
+ n++;
+/*
+ if (p1.x >= rect->x0 && p1.y >= rect->y0 && p2.x <= rect->x1 && p2.y <= rect->y1) {
+*/
+ }
+ }
+
+ return n;
+}
+
+static void
+draw_dot (SheetPos *key, Node *value, cairo_t *cr)
+{
+ if (node_needs_dot (value)) {
+ cairo_save (cr);
+ cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
+ cairo_translate (cr, key->x, key->y);
+ cairo_scale (cr, 1.0, 1.0);
+ cairo_arc (cr, 0.0, 0.0, 1.0, 0.0, 2 * M_PI);
+ cairo_fill (cr);
+ cairo_restore (cr);
+ }
+}
+
+void
+node_store_print_items (NodeStore *store, cairo_t *cr, SchematicPrintContext *ctx)
+{
+ GList *list;
+ SheetPos p1, p2;
+ ItemData *data;
+
+ g_return_if_fail (store != NULL);
+ g_return_if_fail (IS_NODE_STORE (store));
+
+ cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND);
+ for (list = store->items; list; list = list->next) {
+ data = ITEM_DATA (list->data);
+ item_data_print (data, cr, ctx);
+ }
+
+ g_hash_table_foreach (store->nodes, (GHFunc)draw_dot, cr);
+}
+
+void
+node_store_print_labels (NodeStore *store, cairo_t *opc, ArtDRect *rect)
+{
+/* GList *list;
+ SheetPos p1, p2;
+ ItemData *data;
+
+ g_return_if_fail (store != NULL);
+ g_return_if_fail (IS_NODE_STORE (store));
+ g_return_if_fail (rect != NULL);
+
+ for (list = store->textbox; list; list = list->next) {
+ data = ITEM_DATA (list->data);
+ item_data_get_absolute_bbox (data, &p1, &p2);
+// if (p1.x >= rect->x0 && p1.y >= rect->y0 && p2.x <= rect->x1 && p2.y <= rect->y1) {
+ if ((p1.x <= rect->x1) && (p1.y <= rect->y1) &&
+ (p2.x >= rect->x0) && (p2.y >= rect->y0)) {
+ item_data_print (data, opc);
+ }
+ }
+*/
+}
+
+int
+node_store_is_pin_at_pos (NodeStore *store, SheetPos pos)
+{
+ int num_pins;
+ SheetPos part_pos;
+ GList *p;
+ Part *part;
+ Pin *pins;
+ int i;
+ gdouble x, y;
+
+ for (p = store->parts; p; p = p->next) {
+ part = PART (p->data);
+
+ num_pins = part_get_num_pins (part);
+
+ item_data_get_pos (ITEM_DATA (part), &part_pos);
+
+ pins = part_get_pins (part);
+ for (i = 0; i < num_pins; i++) {
+ x = part_pos.x + pins[i].offset.x;
+ y = part_pos.y + pins[i].offset.y;
+
+ if ((x == pos.x) && (y == pos.y)) {
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
diff --git a/src/model/node-store.h b/src/model/node-store.h
new file mode 100644
index 0000000..857b94c
--- /dev/null
+++ b/src/model/node-store.h
@@ -0,0 +1,99 @@
+/*
+ * node-store.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __NODE_STORE_H
+#define __NODE_STORE_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include "sheet-pos.h"
+
+#define TYPE_NODE_STORE node_store_get_type ()
+#define NODE_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_NODE_STORE, NodeStore))
+#define NODE_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_NODE_STORE, NodeStoreClass))
+#define IS_NODE_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_NODE_STORE))
+#define NODE_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_NODE_STORE, NodeStoreClass))
+
+
+typedef struct _NodeStore NodeStore;
+typedef struct _NodeStoreClass NodeStoreClass;
+
+#include "schematic-print-context.h"
+#include "node.h"
+#include "wire.h"
+#include "part.h"
+#include "textbox.h"
+
+struct _NodeStore {
+ GObject parent;
+
+ GHashTable *nodes;
+ GList *items;
+ GList *wires;
+ GList *parts;
+ GList *textbox;
+};
+
+struct _NodeStoreClass
+{
+ GObjectClass parent_class;
+
+ /* signals */
+
+ void (*dot_added) (NodeStore*);
+ void (*dot_removed) (NodeStore*);
+};
+
+GType node_store_get_type (void);
+NodeStore *node_store_new (void);
+Node *node_store_get_node (NodeStore *store, SheetPos pos);
+int node_store_add_part (NodeStore *store, Part *part);
+int node_store_remove_part (NodeStore *store, Part *part);
+int node_store_add_wire (NodeStore *store, Wire *wire);
+int node_store_remove_wire (NodeStore *store, Wire *wire);
+int node_store_add_textbox (NodeStore *self, Textbox *text);
+int node_store_remove_textbox (NodeStore *self, Textbox *text);
+void node_store_node_foreach (NodeStore *store, GHFunc *func,
+ gpointer user_data);
+int node_store_is_wire_at_pos (NodeStore *store, SheetPos pos);
+int node_store_is_pin_at_pos (NodeStore *store, SheetPos pos);
+GList *node_store_get_parts (NodeStore *store);
+GList *node_store_get_wires (NodeStore *store);
+GList *node_store_get_items (NodeStore *store);
+GList *node_store_get_node_positions (NodeStore *store);
+GList *node_store_get_nodes (NodeStore *store);
+void node_store_dump_wires (NodeStore *store);
+void node_store_get_bounds (NodeStore *store, ArtDRect *rect);
+gint node_store_count_items (NodeStore *store, ArtDRect *rect);
+void node_store_print_items (NodeStore *store, cairo_t *opc, SchematicPrintContext *ctx);
+void node_store_print_labels (NodeStore *store,
+ cairo_t *opc, ArtDRect *rect);
+Node *node_store_get_or_create_node (NodeStore *store, SheetPos pos);
+
+#endif
diff --git a/src/model/node.c b/src/model/node.c
new file mode 100644
index 0000000..3045b92
--- /dev/null
+++ b/src/model/node.c
@@ -0,0 +1,334 @@
+/*
+ * node.c
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <gnome.h>
+#include <math.h>
+#include "node.h"
+#include "part.h"
+
+static void node_class_init (NodeClass *klass);
+static void node_init (Node *node);
+
+enum {
+ DOT_ADDED,
+ DOT_REMOVED,
+ VOLTAGE_CHANGED,
+ LAST_SIGNAL
+};
+
+static guint node_signals [LAST_SIGNAL] = { 0 };
+static GObjectClass *parent_class = NULL;
+
+GType
+node_get_type (void)
+{
+ static GType node_type = 0;
+
+ if (!node_type) {
+ static const GTypeInfo node_info = {
+ sizeof (NodeClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) node_class_init,
+ NULL,
+ NULL,
+ sizeof (Node),
+ 0,
+ (GInstanceInitFunc) node_init,
+ NULL
+ };
+
+ node_type = g_type_register_static(G_TYPE_OBJECT, "Node", &node_info, 0);
+ }
+
+ return node_type;
+}
+
+static void
+node_class_init (NodeClass *klass)
+{
+ GObjectClass *object_class;
+
+ object_class = (GObjectClass *)klass;
+ parent_class = g_type_class_peek_parent(klass);
+
+ node_signals [DOT_ADDED] =
+ g_signal_new ("dot_added",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_FIRST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+
+ node_signals [DOT_REMOVED] =
+ g_signal_new ("dot_removed",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_FIRST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+
+ node_signals [VOLTAGE_CHANGED] =
+ g_signal_new ("voltage_changed",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_FIRST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+}
+
+static void
+node_init (Node *node)
+{
+ node->pin_count = 0;
+ node->wire_count = 0;
+ node->pins = NULL;
+ node->wires = NULL;
+ node->visited = FALSE;
+}
+
+Node *
+node_new (SheetPos pos)
+{
+ Node *node;
+
+ node = NODE(g_object_new(node_get_type(), NULL));
+
+ node->key = pos;
+
+ return node;
+}
+
+#define SEP(p1,p2) ((p1.x == p2.x) && (p1.y == p2.y))
+#define ON_THE_WIRE(p1,start,end) ( fabs((end.y-start.y)*(p1.x-start.x)-(end.x-start.x)*(p1.y-start.y))<1.e-5 )
+gboolean
+node_needs_dot (Node *node)
+{
+ Wire *wire1, *wire2;
+ SheetPos start_pos1, length1, end_pos1;
+ SheetPos start_pos2, length2, end_pos2;
+
+ if ((node->pin_count > 2) || (node->wire_count > 2))
+ return TRUE;
+ else if ((node->pin_count + node->wire_count) > 2)
+ return TRUE;
+ else if (node->wire_count == 2) {
+ /*
+ * Check that we don't have two wire endpoints.
+ */
+
+
+ wire1 = node->wires->data;
+ wire2 = node->wires->next->data;
+
+ wire_get_pos_and_length (wire1, &start_pos1, &length1);
+ wire_get_pos_and_length (wire2, &start_pos2, &length2);
+
+ end_pos1.x = start_pos1.x + length1.x;
+ end_pos1.y = start_pos1.y + length1.y;
+ end_pos2.x = start_pos2.x + length2.x;
+ end_pos2.y = start_pos2.y + length2.y;
+
+ if (!(SEP (start_pos1, start_pos2) ||
+ SEP (start_pos1, end_pos2) ||
+ SEP (end_pos1, end_pos2) ||
+ SEP (end_pos1, start_pos2))) {
+
+ /*
+ The dot is only needed when the end/start-point of
+ one of the wires in on the other wire.
+ */
+ if ( ON_THE_WIRE(start_pos1,start_pos2,end_pos2) ||
+ ON_THE_WIRE( end_pos1,start_pos2,end_pos2) ||
+ ON_THE_WIRE(start_pos2,start_pos1,end_pos1) ||
+ ON_THE_WIRE( end_pos2,start_pos1,end_pos1)
+ ) {
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+
+ return FALSE;
+ } else if (node->pin_count == 1 && node->wire_count == 1) {
+ /*
+ * Check if we have one wire with a pin in the 'middle'.
+ */
+ wire1 = node->wires->data;
+ wire_get_pos_and_length (wire1, &start_pos1, &length1);
+ end_pos1.x = start_pos1.x + length1.x;
+ end_pos1.y = start_pos1.y + length1.y;
+
+ if (!SEP (node->key, start_pos1) && !SEP (node->key, end_pos1))
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+gint
+node_add_pin (Node *node, Pin *pin)
+{
+ gboolean dot;
+
+ g_return_val_if_fail (node != NULL, FALSE);
+ g_return_val_if_fail (IS_NODE (node), FALSE);
+ g_return_val_if_fail (pin != NULL, FALSE);
+
+ if (g_slist_find (node->pins, pin)) {
+/* g_print ("node_add_pin: pin already there.\n");*/
+ return FALSE;
+ }
+
+ dot = node_needs_dot (node);
+
+ node->pins = g_slist_prepend (node->pins, pin);
+ node->pin_count++;
+
+ if (!dot && node_needs_dot (node))
+ g_signal_emit_by_name(G_OBJECT(node),"dot_added", &node->key);
+
+ return TRUE;
+}
+
+gint
+node_remove_pin (Node *node, Pin *pin)
+{
+ gboolean dot;
+
+ g_return_val_if_fail (node != NULL, FALSE);
+ g_return_val_if_fail (IS_NODE (node), FALSE);
+ g_return_val_if_fail (pin != NULL, FALSE);
+
+ if (node->pin_count == 0)
+ return FALSE;
+
+ dot = node_needs_dot (node);
+
+ node->pins = g_slist_remove (node->pins, pin);
+ node->pin_count--;
+
+ if (dot && !node_needs_dot (node))
+ g_signal_emit_by_name(G_OBJECT (node), "dot_removed", &node->key);
+
+ return TRUE;
+}
+
+gint
+node_add_wire (Node *node, Wire *wire)
+{
+ gboolean dot;
+
+ g_return_val_if_fail (node != NULL, FALSE);
+ g_return_val_if_fail (IS_NODE (node), FALSE);
+ g_return_val_if_fail (wire != NULL, FALSE);
+ g_return_val_if_fail (IS_WIRE (wire), FALSE);
+
+ if (g_slist_find (node->wires, wire)) {
+/* g_print ("node_add_wire: wire already there.\n");*/
+ return FALSE;
+ }
+
+ dot = node_needs_dot (node);
+
+ node->wires = g_slist_prepend (node->wires, wire);
+ node->wire_count++;
+
+ if (!dot && node_needs_dot (node))
+ g_signal_emit_by_name(G_OBJECT(node), "dot_added", &node->key);
+
+ return TRUE;
+}
+
+gint
+node_remove_wire (Node *node, Wire *wire)
+{
+ gboolean dot;
+
+ g_return_val_if_fail (node != NULL, FALSE);
+ g_return_val_if_fail (IS_NODE (node), FALSE);
+ g_return_val_if_fail (wire != NULL, FALSE);
+ g_return_val_if_fail (IS_WIRE (wire), FALSE);
+
+ if (node->wire_count == 0)
+ return FALSE;
+
+ if (!g_slist_find (node->wires, wire)) {
+ g_print ("node_remove_wire: not there.\n");
+ return FALSE;
+ }
+
+ dot = node_needs_dot (node);
+
+ node->wires = g_slist_remove (node->wires, wire);
+ node->wire_count--;
+
+ if (dot && (!node_needs_dot (node)))
+ g_signal_emit_by_name(G_OBJECT(node), "dot_removed", &node->key);
+
+ return TRUE;
+}
+
+gint
+node_is_empty (Node *node)
+{
+ g_return_val_if_fail (node != NULL, FALSE);
+ g_return_val_if_fail (IS_NODE (node), FALSE);
+
+ if ((node->wire_count == 0) && (node->pin_count == 0))
+ return TRUE;
+
+ return FALSE;
+}
+
+gint
+node_is_visited (Node *node)
+{
+ g_return_val_if_fail (node != NULL, FALSE);
+ g_return_val_if_fail (IS_NODE (node), FALSE);
+
+ return node->visited;
+}
+
+void
+node_set_visited (Node *node, gboolean is_visited)
+{
+ g_return_if_fail (node != NULL);
+ g_return_if_fail (IS_NODE (node));
+
+ node->visited = is_visited;
+}
+
diff --git a/src/model/node.h b/src/model/node.h
new file mode 100644
index 0000000..077676c
--- /dev/null
+++ b/src/model/node.h
@@ -0,0 +1,92 @@
+/*
+ * node.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __NODE_H
+#define __NODE_H
+
+#include <gtk/gtk.h>
+#include "sheet-pos.h"
+#include "part.h"
+
+#define TYPE_NODE (node_get_type ())
+#define NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), TYPE_NODE, Node))
+#define NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_NODE, NodeClass))
+#define IS_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_NODE))
+#define IS_NODE_CLASS(klass) (G_TYPE_INSTANCE_GET_CLASS((klass), TYPE_NODE, NodeClass))
+
+typedef struct _Node Node;
+typedef struct _NodeClass NodeClass;
+
+#include "wire.h"
+
+struct _Node {
+ GObject parent;
+
+ /*
+ * Used for traversing all nodes in the netlist generation.
+ */
+ guint visited : 1;
+
+ char *netlist_node_name;
+
+ /*
+ * The number of wires and pins in this node.
+ */
+ guint16 pin_count;
+ guint16 wire_count;
+
+ GSList *pins;
+ GSList *wires;
+
+ SheetPos key;
+};
+
+struct _NodeClass
+{
+ GObjectClass parent_class;
+
+/* void (*something) (Node *node);*/
+};
+
+GType node_get_type (void);
+Node *node_new (SheetPos pos);
+gint node_is_empty (Node *node);
+
+gint node_add_pin (Node *node, Pin *pin);
+gint node_remove_pin (Node *node, Pin *pin);
+
+gint node_add_wire (Node *node, Wire *wire);
+gint node_remove_wire (Node *node, Wire *wire);
+
+gint node_is_visited (Node *node);
+void node_set_visited (Node *node, gboolean is_visited);
+
+gboolean node_needs_dot (Node *node);
+
+#endif
diff --git a/src/model/part-label.h b/src/model/part-label.h
new file mode 100644
index 0000000..bec7392
--- /dev/null
+++ b/src/model/part-label.h
@@ -0,0 +1,39 @@
+/*
+ * part-label.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __PART_LABEL_H
+#define __PART_LABEL_H
+
+typedef struct {
+ gchar *name;
+ gchar *text;
+ SheetPos pos;
+} PartLabel;
+
+#endif
diff --git a/src/model/part-private.h b/src/model/part-private.h
new file mode 100644
index 0000000..54194f2
--- /dev/null
+++ b/src/model/part-private.h
@@ -0,0 +1,48 @@
+/*
+ * part-private.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __PART_PRIVATE_H
+#define __PART_PRIVATE_H
+
+struct _PartPriv {
+ guint16 num_pins : 16;
+ guint16 rotation : 16;
+ IDFlip flip : 8;
+
+ gchar *name;
+ GSList *properties;
+ GSList *labels;
+
+ gchar *symbol_name;
+ Library *library;
+
+ Pin *pins; /* Array of pins. */
+};
+
+#endif
diff --git a/src/model/part-property.c b/src/model/part-property.c
new file mode 100644
index 0000000..5394880
--- /dev/null
+++ b/src/model/part-property.c
@@ -0,0 +1,319 @@
+/*
+ * part-property.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#include <glib.h>
+#include <string.h>
+#include "part.h"
+#include "part-property.h"
+
+/**
+ * Gets the name of a macro variable.
+ *
+ * @param str str
+ * @param cls1 returns first conditional clause
+ * @param cls2 returns second clause
+ * @param sz returns number of characters parsed
+ * @return the name of a macro variable
+ */
+static char *get_macro_name (const char *str, char **cls1,
+ char **cls2, size_t *sz)
+{
+ char separators[] = { ",.;/|()" };
+ GString *out;
+ const char *q, *qend;
+ char *csep = NULL;
+ size_t sln;
+ int rc = 0;
+ char *ret;
+
+ sln = strlen (str) + 1;
+ *sz = 0;
+ *cls1 = *cls2 = NULL;
+ qend = str + sln;
+ out = g_string_sized_new (sln);
+
+ /* Get the name */
+ for (q = str; (*q) && (*q != ' ') && !(csep = strchr (separators, *q)); q++) {
+ if ( q > qend ) {
+ g_warning ("Expand macro error.");
+ rc = 1;
+ break;
+ }
+ out = g_string_append_c (out, *q);
+ }
+
+ /* if error found, return here */
+ if (rc)
+ goto error;
+
+ /* Look for conditional clauses */
+ if (csep) {
+ /* get the first one */
+ GString *aux;
+ q++; /* skip the separator and store the clause in tmp */
+ aux = g_string_new ("");
+ for (; (*q) && (*q != *csep); q++)
+ g_string_append_c (aux, *q);
+
+ if (!*q) {
+ g_string_free (aux, TRUE);
+ goto error;
+ }
+
+ *cls1 = aux->str;
+ q++; /* skip the end-of-clause separator */
+ g_string_free (aux, FALSE);
+
+ /* Check for the second one */
+ if ( (*q) && (csep = strchr (separators, *q))) {
+ q++; /* skip the separator and store in tmp*/
+ aux = g_string_new ("");
+ for (; (*q) && (*q != *csep); q++)
+ g_string_append_c (aux, *q);
+
+ if (!(*q)) {
+ g_free (*cls1);
+ *cls1 = NULL;
+ goto error;
+ }
+
+ *cls2 = aux->str;
+ q++; /* skip the end-of-clause separator */
+ g_string_free (aux, FALSE);
+ }
+ }
+
+ *sz = out->len;
+ ret = NULL;
+ if (out->len > 0) {
+ out = g_string_append_c (out, '\0');
+ ret = g_strdup (out->str);
+ }
+ g_string_free (out, TRUE);
+
+ return ret;
+
+ error:
+ g_string_free (out, TRUE);
+ return NULL;
+}
+
+char *
+part_property_expand_macros (Part *part, char *string)
+{
+ static char mcode[] = {"@?~#&"};
+ char *value;
+ char *tmp0, *temp, *qn, *q0, *qend, *t0;
+ char *cls1, *cls2;
+ GString *out;
+ size_t sln;
+ char *ret;
+
+ g_return_val_if_fail (part != NULL, NULL);
+ g_return_val_if_fail (IS_PART (part), NULL);
+ g_return_val_if_fail (string != NULL, NULL);
+
+ cls1 = cls2 = q0 = NULL;
+ /* Rules:
+ @<id> value of <id>. If no value, error
+ &<id> value of <id> if <id> is defined
+ ?<id>s...s text between s...s separators if <id> defined
+ ?<id>s...ss...s text between 1st s...s separators if <id> defined
+ else 2nd s...s clause
+ ~<id>s...s text between s...s separators if <id> undefined
+ ~<id>s...ss...s text between 1st s...s separators if <id> undefined
+ else 2nd s...s clause
+ #<id>s...s text between s...s separators if <id> defined, but
+ delete rest of tempalte if <id> undefined
+
+ Separatos can be any of (, . ; / |) For an opening-closing pair of
+ separators the same character ahs to be used.
+
+ Examples: R^@refdes %1 %2 @value
+ V^@refdes %+ %- SIN(@offset @ampl @freq 0 0)
+ ?DC|DC @DC|
+ */
+ tmp0 = temp = g_strdup (string);
+ qend = temp + strlen (temp);
+
+ out = g_string_new ("");
+
+ for (temp = string; *temp;) {
+ /*
+ * Look for any of the macro char codes.
+ */
+ if (strchr (mcode, *temp)) {
+ qn = get_macro_name (temp + 1, &cls1, &cls2, &sln);
+ if (qn == NULL)
+ return NULL;
+ value = part_get_property (part, qn);
+ if ((*temp == '@' || *temp == '&') && value) {
+ out = g_string_append (out, value);
+ } else if (*temp =='&' && !value) {
+ g_warning ( "expand macro error: macro %s undefined", qn);
+ g_free (qn);
+ return NULL;
+ } else if (*temp == '?' || *temp == '~') {
+ if (cls1 == NULL) {
+ g_warning ("error in template: %s", temp);
+ g_free (qn);
+ return NULL;
+ }
+ q0 = (value
+ ? (*temp == '?' ? cls1 : cls2)
+ : (*temp == '?' ? cls2 : cls1)
+ );
+ if (q0) {
+ t0 = part_property_expand_macros (part, q0);
+ if (!t0) {
+ g_warning ( "error in template: %s", temp);
+ g_free (qn);
+ } else {
+ out = g_string_append (out, t0);
+ g_free (t0);
+ }
+ }
+ } else if (*temp=='#') {
+ if (value) {
+ t0 = part_property_expand_macros (part, value);
+ if (!t0) {
+ g_warning ( "error in template: %s", temp);
+ g_free (qn);
+ } else {
+ out = g_string_append (out, t0);
+ g_free (t0);
+ }
+ } else
+ *(temp + sln) = 0;
+ }
+ temp += 1;
+ temp += sln;
+ if (qn) g_free (qn);
+ if (cls1) g_free (cls1);
+ if (cls2) g_free (cls2);
+ } else {
+ if ( *temp== '\\' ) {
+ temp++;
+ switch (*temp) {
+ case 'n':
+ out = g_string_append_c (out, '\n');
+ break;
+ case 't':
+ out = g_string_append_c (out, '\t');
+ break;
+ case 'r':
+ out = g_string_append_c (out, '\r');
+ break;
+ case 'f':
+ out = g_string_append_c (out, '\f');
+ }
+ temp++;
+ } else {
+ out = g_string_append_c (out, *temp);
+ temp++;
+ }
+ }
+ }
+
+ if (tmp0) g_free (tmp0);
+
+ out = g_string_append_c (out, '\0');
+ ret = g_strdup (out->str);
+ g_string_free (out, TRUE);
+
+ return ret;
+}
+
+
+#if 0
+//---------------------
+char *
+part_property_expand_macros (Part *part, char *string)
+{
+ char *name;
+ char *value;
+ char *temp;
+ char buffer[512];
+ gint in_index = 0, out_index = 0;
+
+ g_return_val_if_fail (part != NULL, NULL);
+ g_return_val_if_fail (IS_PART (part), NULL);
+ g_return_val_if_fail (string != NULL, NULL);
+
+ /* Examples: R^@refdes %1 %2 @value
+ * V^@refdes %+ %- SIN(@offset @ampl @freq 0 0)
+ */
+
+ temp = string;
+ in_index = 0;
+ out_index = 0;
+
+ while (*temp != 0) {
+ /* Is it a macro? */
+ if (temp[0] == '@'){
+ int i = 0;
+ /* Find the end of the macro. */
+ while (1){
+ if (temp[i] == ' ' || temp[i] == '(' ||
+ temp[i] == ')' || temp[i] == 0)
+ break;
+ else {
+ i++;
+ if (i > strlen (string)){
+ g_warning (
+ "expand macro error.");
+ break;
+ }
+ }
+ }
+
+ /* Perform a lookup on the macro. */
+ name = g_strndup (temp + 1, i - 1);
+ value = part_get_property (part, name);
+ g_free (name);
+
+ if (value) {
+ snprintf (buffer + out_index, 16,
+ "%s ", value);
+ out_index += strlen (value);
+ in_index += i + 1;
+ }
+ temp += i;
+ } else{
+ buffer[out_index] = *temp;
+ out_index++;
+ in_index++;
+ temp++;
+ }
+ }
+
+ buffer[out_index] = '\0';
+ return g_strdup (buffer);
+}
+#endif
diff --git a/src/model/part-property.h b/src/model/part-property.h
new file mode 100644
index 0000000..1e9f350
--- /dev/null
+++ b/src/model/part-property.h
@@ -0,0 +1,42 @@
+/*
+ * part-property.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __PART_PROPERTY_H
+#define __PART_PROPERTY_H
+
+#include "part.h"
+
+typedef struct {
+ gchar *name;
+ gchar *value;
+} PartProperty;
+
+gchar *part_property_expand_macros (Part *part, gchar *string);
+
+#endif
diff --git a/src/model/part.c b/src/model/part.c
new file mode 100644
index 0000000..a8fe18d
--- /dev/null
+++ b/src/model/part.c
@@ -0,0 +1,1099 @@
+/*
+ * part.c
+ *
+ * Part object: represents a schematic part
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ *
+ * 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.
+ */
+
+#include <ctype.h>
+#include <gnome.h>
+#include <math.h>
+#include <string.h>
+#include "part.h"
+#include "item-data.h"
+#include "part-property.h"
+#include "part-label.h"
+#include "node-store.h"
+#include "load-common.h"
+#include "load-library.h"
+#include "part-private.h"
+#include "schematic-print-context.h"
+
+static void part_class_init (PartClass *klass);
+
+static void part_init (Part *part);
+
+static void part_set_gproperty (GObject *object, guint prop_id,
+ const GValue *value, GParamSpec *spec);
+
+static void part_get_gproperty (GObject *object, guint prop_id, GValue *value,
+ GParamSpec *spec);
+
+static int part_set_properties (Part *part, GSList *properties);
+static gboolean part_has_properties (ItemData *part);
+
+static int part_set_labels (Part *part, GSList *labels);
+
+static void part_copy (ItemData *dest, ItemData *src);
+
+static ItemData *part_clone (ItemData *src);
+
+static void part_rotate (ItemData *data, int angle, SheetPos *center);
+
+static void part_flip (ItemData *data, gboolean horizontal, SheetPos *center);
+
+static void part_update_bbox (Part *part);
+
+static void part_unregister (ItemData *data);
+
+static int part_register (ItemData *data);
+
+static void part_set_property (ItemData *data, char *property, char *value);
+
+static char *part_get_refdes_prefix (ItemData *data);
+static void part_print (ItemData *data, cairo_t *cr, SchematicPrintContext *ctx);
+
+enum {
+ ARG_0,
+ ARG_PROPERTIES,
+ ARG_LABELS,
+};
+
+enum {
+ CHANGED,
+ LAST_SIGNAL
+};
+
+static guint part_signals [LAST_SIGNAL] = { 0 };
+static ItemDataClass *parent_class = NULL;
+
+GType
+part_get_type (void)
+{
+ static GType part_type = 0;
+
+ if (!part_type) {
+ static const GTypeInfo part_info = {
+ sizeof(PartClass),
+ NULL, /* Base Init */
+ NULL, /* Base Finalize */
+ (GClassInitFunc)part_class_init, /* Class Init */
+ NULL, /* Class Finalize */
+ NULL, /* Class Data */
+ sizeof(Part),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc)part_init, /* Instance init */
+ NULL
+ };
+ part_type = g_type_register_static(TYPE_ITEM_DATA,
+ "Part", &part_info, 0);
+ }
+
+ return part_type;
+}
+
+static void
+part_finalize(GObject *object)
+{
+ Part *part;
+ PartPriv *priv;
+ GSList *list;
+
+ part = PART (object);
+ priv = part->priv;
+
+ if (priv) {
+ g_free (priv->name);
+
+ for (list = priv->properties; list; list = list->next) {
+ PartProperty *property = list->data;
+
+ g_free (property->name);
+ g_free (property->value);
+ g_free (property);
+ }
+ g_slist_free (priv->properties);
+
+ for (list = priv->labels; list; list = list->next) {
+ PartLabel *label = list->data;
+
+ g_free (label->name);
+ g_free (label->text);
+ g_free (label);
+ }
+ g_slist_free (priv->labels);
+
+ g_free (priv->pins);
+ g_free (priv->symbol_name);
+ g_free (priv);
+ part->priv = NULL;
+ }
+
+ G_OBJECT_CLASS(parent_class)->finalize(object);
+}
+
+static void
+part_dispose(GObject *object)
+{
+ G_OBJECT_CLASS(parent_class)->dispose(object);
+}
+
+static void
+part_class_init (PartClass *klass)
+{
+ GObjectClass *object_class;
+ ItemDataClass *item_data_class;
+
+ parent_class = g_type_class_peek(TYPE_ITEM_DATA);
+
+ object_class = G_OBJECT_CLASS(klass);
+ item_data_class = ITEM_DATA_CLASS(klass);
+
+ object_class->set_property = part_set_gproperty;
+ object_class->get_property = part_get_gproperty;
+ object_class->dispose = part_dispose;
+ object_class->finalize = part_finalize;
+
+ g_object_class_install_property ( object_class, ARG_PROPERTIES,
+ g_param_spec_pointer("properties", "properties",
+ "the properties", G_PARAM_READWRITE));
+ g_object_class_install_property(object_class, ARG_LABELS,
+ g_param_spec_pointer("labels", "labels", "the labels",
+ G_PARAM_READWRITE));
+
+ item_data_class->clone = part_clone;
+ item_data_class->copy = part_copy;
+ item_data_class->rotate = part_rotate;
+ item_data_class->flip = part_flip;
+ item_data_class->unreg = part_unregister;
+ item_data_class->reg = part_register;
+
+ item_data_class->get_refdes_prefix = part_get_refdes_prefix;
+ item_data_class->set_property = part_set_property;
+ item_data_class->has_properties = part_has_properties;
+ item_data_class->print = part_print;
+
+ part_signals[CHANGED] =
+ g_signal_new ("changed", G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (PartClass, changed),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+
+// ? g_object_class_add_signals (object_class, part_signals, LAST_SIGNAL);
+}
+
+static void
+part_init (Part *part)
+{
+ PartPriv *priv;
+
+ priv = g_new0(PartPriv, 1);
+
+ part->priv = priv;
+}
+
+Part *
+part_new (void)
+{
+ Part *part;
+
+ part = PART(g_object_new(TYPE_PART, NULL));
+
+ return part;
+}
+
+Part *
+part_new_from_library_part (LibraryPart *library_part)
+{
+ Part *part;
+ GSList *pins;
+ PartPriv *priv;
+ LibrarySymbol *symbol;
+
+ g_return_val_if_fail (library_part != NULL, NULL);
+
+ part = part_new();
+ if (!part)
+ return NULL;
+
+ priv = part->priv;
+
+ symbol = library_get_symbol (library_part->symbol_name);
+ if (symbol == NULL){
+ g_warning ("Couldn't find the requested symbol %s for part %s in library.\n",
+ library_part->symbol_name,
+ library_part->name);
+ return NULL;
+ }
+
+ pins = symbol->connections;
+
+ if ( pins )
+ part_set_pins (part, pins);
+
+
+ g_object_set (
+ G_OBJECT (part),
+ "Part::properties", library_part->properties,
+ "Part::labels", library_part->labels,
+ NULL);
+
+ /* FIXME: */
+ priv->name = g_strdup (library_part->name);
+ priv->symbol_name = g_strdup (library_part->symbol_name);
+ priv->library = library_part->library;
+
+ part_update_bbox (part);
+
+ return part;
+}
+
+static void
+part_set_gproperty(GObject *object, guint prop_id, const GValue *value,
+ GParamSpec *spec)
+{
+ GSList *list;
+ Part *part = PART (object);
+
+ switch (prop_id) {
+ case ARG_PROPERTIES:
+ list = g_value_get_pointer(value);
+ part_set_properties (part, list);
+ break;
+ case ARG_LABELS:
+ list = g_value_get_pointer(value);
+ part_set_labels (part, list);
+ break;
+ }
+}
+
+static void
+part_get_gproperty(GObject *object, guint prop_id, GValue *value,
+ GParamSpec *spec)
+{
+ Part *part = PART (object);
+ PartPriv *priv = part->priv;
+
+ switch (prop_id) {
+ case ARG_LABELS:
+ g_value_set_pointer(value, priv->labels);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(part, prop_id, spec);
+ }
+}
+
+int
+part_get_num_pins (Part *part)
+{
+ PartPriv *priv;
+
+ g_return_val_if_fail (part != NULL, 0);
+ g_return_val_if_fail (IS_PART (part), 0);
+
+ priv = part->priv;
+ return priv->num_pins;
+}
+
+int
+part_get_rotation (Part *part)
+{
+ PartPriv *priv;
+
+ g_return_val_if_fail (part != NULL, 0);
+ g_return_val_if_fail (IS_PART (part), 0);
+
+ priv = part->priv;
+ return priv->rotation;
+}
+
+IDFlip
+part_get_flip (Part *part)
+{
+ PartPriv *priv;
+
+ g_return_val_if_fail (part != NULL, 0);
+ g_return_val_if_fail (IS_PART (part), 0);
+
+ priv = part->priv;
+ return priv->flip;
+}
+
+Pin *
+part_get_pins (Part *part)
+{
+ PartPriv *priv;
+
+ g_return_val_if_fail (part != NULL, NULL);
+ g_return_val_if_fail (IS_PART (part), NULL);
+
+ priv = part->priv;
+ return priv->pins;
+}
+
+static gboolean
+part_has_properties (ItemData *item)
+{
+ Part *part = PART (item);
+
+ return part->priv->properties != NULL;
+}
+
+static int
+part_set_properties (Part *part, GSList *properties)
+{
+ PartPriv *priv;
+ GSList *list;
+
+ g_return_val_if_fail (part != NULL, FALSE);
+ g_return_val_if_fail (IS_PART (part), FALSE);
+
+ priv = part->priv;
+
+ if (priv->properties != NULL)
+ g_warning ("Properties already set!");
+
+ /*
+ * Copy the properties list to the part.
+ */
+ for (list = properties; list; list = list->next) {
+ PartProperty *prop_new, *prop;
+
+ prop = list->data;
+ prop_new = g_new0 (PartProperty, 1);
+ prop_new->name = g_strdup (prop->name);
+ prop_new->value = g_strdup (prop->value);
+
+ priv->properties = g_slist_prepend (priv->properties, prop_new);
+ }
+
+ return TRUE;
+}
+
+GSList *
+part_get_properties (Part *part)
+{
+ PartPriv *priv;
+
+ g_return_val_if_fail (part != NULL, FALSE);
+ g_return_val_if_fail (IS_PART (part), FALSE);
+
+ priv = part->priv;
+
+ return priv->properties;
+}
+
+char *
+part_get_property (Part *part, char *name)
+{
+ PartPriv *priv;
+ GSList *props;
+ PartProperty *prop;
+
+ g_return_val_if_fail (part != NULL, NULL);
+ g_return_val_if_fail (IS_PART (part), NULL);
+ g_return_val_if_fail (name != NULL, NULL);
+
+ priv = part->priv;
+
+ for (props = priv->properties; props; props = props->next) {
+ prop = props->data;
+ if (g_strcasecmp (prop->name, name) == 0) {
+ return g_strdup (prop->value);
+ }
+ }
+ return NULL;
+}
+
+static int
+part_set_labels (Part *part, GSList *labels)
+{
+ PartPriv *priv;
+ GSList *list;
+
+ g_return_val_if_fail (part != NULL, FALSE);
+ g_return_val_if_fail (IS_PART (part), FALSE);
+
+ priv = part->priv;
+
+ if (priv->labels != NULL) {
+ g_warning ("Part already has labels.");
+ for (list = priv->labels; list; list = list->next) {
+ PartLabel *label = list->data;
+ g_free (label->name);
+ g_free (label->text);
+ g_free (label);
+ }
+ g_slist_free (priv->labels);
+ priv->labels = NULL;
+ }
+
+ for (list = labels; list; list = list->next) {
+ PartLabel *label, *label_copy;
+
+ label = list->data;
+
+ label_copy = g_new0 (PartLabel, 1);
+ label_copy->name = g_strdup (label->name);
+ label_copy->text = g_strdup (label->text);
+ label_copy->pos.x = label->pos.x;
+ label_copy->pos.y = label->pos.y;
+ priv->labels = g_slist_prepend (priv->labels, label_copy);
+ }
+
+ return TRUE;
+}
+
+int
+part_set_pins (Part *part, GSList *pins)
+{
+ PartPriv *priv;
+ GSList *list;
+ int num_pins, i;
+
+ g_return_val_if_fail (part != NULL, FALSE);
+ g_return_val_if_fail (IS_PART (part), FALSE);
+ g_return_val_if_fail (pins != NULL, FALSE);
+
+ priv = part->priv;
+
+ num_pins = g_slist_length (pins);
+
+ if (priv->pins)
+ g_free (priv->pins);
+
+ priv->pins = g_new0 (Pin, num_pins);
+ priv->num_pins = num_pins;
+
+ for (list = pins, i = 0; list; list = list->next, i++) {
+ /*
+ * Note that this is slightly hackish. The list contains
+ * Connections which only have the SheetPos field.
+ */
+ Pin *pin = list->data;
+
+ priv->pins[i].pin_nr = i;
+ priv->pins[i].node_nr= 0;
+ priv->pins[i].offset.x = pin->offset.x;
+ priv->pins[i].offset.y = pin->offset.y;
+ priv->pins[i].part = part;
+ }
+
+ return TRUE;
+}
+
+GSList *
+part_get_labels (Part *part)
+{
+ PartPriv *priv;
+
+ g_return_val_if_fail (part != NULL, NULL);
+ g_return_val_if_fail (IS_PART (part), NULL);
+
+ priv = part->priv;
+
+ return priv->labels;
+}
+
+static void
+part_rotate (ItemData *data, int angle, SheetPos *center)
+{
+ double affine[6], dx, dy;
+ ArtPoint src, dst;
+ Part *part;
+ PartPriv *priv;
+ int i, tot_rotation;
+ SheetPos b1, b2, part_center_before, part_center_after, delta;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_PART (data));
+
+ if (angle == 0)
+ return;
+
+ part = PART (data);
+
+ priv = part->priv;
+
+ tot_rotation = (priv->rotation + angle)%360;
+
+ priv->rotation = tot_rotation;
+
+ art_affine_rotate (affine, angle);
+
+ /*
+ * Rotate the pins.
+ */
+ for (i = 0; i < priv->num_pins; i++) {
+ src.x = priv->pins[i].offset.x;
+ src.y = priv->pins[i].offset.y;
+ art_affine_point (&dst, &src, affine);
+
+ if (fabs (dst.x) < 1e-2)
+ dst.x = 0.0;
+ if (fabs (dst.y) < 1e-2)
+ dst.y = 0.0;
+
+ priv->pins[i].offset.x = dst.x;
+ priv->pins[i].offset.y = dst.y;
+ }
+
+ item_data_get_relative_bbox (ITEM_DATA (part), &b1, &b2);
+ part_center_before.x = b1.x + (b2.x - b1.x) / 2;
+ part_center_before.y = b1.y + (b2.y - b1.y) / 2;
+
+ /*
+ * Rotate the bounding box.
+ */
+ src.x = b1.x;
+ src.y = b1.y;
+ art_affine_point (&dst, &src, affine);
+ b1.x = dst.x;
+ b1.y = dst.y;
+
+ src.x = b2.x;
+ src.y = b2.y;
+ art_affine_point (&dst, &src, affine);
+ b2.x = dst.x;
+ b2.y = dst.y;
+
+ item_data_set_relative_bbox (ITEM_DATA (part), &b1, &b2);
+
+ if (center) {
+ SheetPos part_pos;
+
+ part_center_after.x = b1.x + (b2.x - b1.x) / 2;
+ part_center_after.y = b1.y + (b2.y - b1.y) / 2;
+
+ dx = part_center_before.x - part_center_after.x;
+ dy = part_center_before.y - part_center_after.y;
+
+ item_data_get_pos (ITEM_DATA (part), &part_pos);
+
+ src.x = part_center_before.x - center->x + part_pos.x;
+ src.y = part_center_before.y - center->y + part_pos.y;
+ art_affine_point (&dst, &src, affine);
+
+ delta.x = dx - src.x + dst.x;
+ delta.y = dy - src.y + dst.y;
+
+ item_data_move (ITEM_DATA (part), &delta);
+ }
+
+ /*
+ * Let the views (canvas items) know about the rotation.
+ */
+ g_signal_emit_by_name (G_OBJECT (part), "rotated", angle);
+
+}
+
+static void
+part_flip (ItemData *data, gboolean horizontal, SheetPos *center)
+{
+ Part *part;
+ PartPriv *priv;
+ SheetPos b1, b2;
+ int i;
+ double affine[6];
+ ArtPoint src, dst;
+ SheetPos part_center_before, part_center_after;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_PART (data));
+
+ part = PART (data);
+ priv = part->priv;
+
+ if (horizontal && !(priv->flip & ID_FLIP_HORIZ))
+ priv->flip = priv->flip | ID_FLIP_HORIZ;
+ else if (horizontal && (priv->flip & ID_FLIP_HORIZ))
+ priv->flip = priv->flip & ~ID_FLIP_HORIZ;
+ else if (!horizontal && !(priv->flip & ID_FLIP_VERT))
+ priv->flip = priv->flip | ID_FLIP_VERT;
+ else if (!horizontal && (priv->flip & ID_FLIP_VERT))
+ priv->flip = priv->flip & ~ID_FLIP_VERT;
+
+ if (horizontal)
+ art_affine_scale (affine, -1, 1);
+ else
+ art_affine_scale (affine, 1, -1);
+
+ /*
+ * Flip the pins.
+ */
+ item_data_get_relative_bbox (ITEM_DATA (part), &b1, &b2);
+ for (i = 0; i < priv->num_pins; i++) {
+ src.x = priv->pins[i].offset.x;
+ src.y = priv->pins[i].offset.y;
+ art_affine_point (&dst, &src, affine);
+
+ if (fabs (dst.x) < 1e-2)
+ dst.x = 0;
+ if (fabs (dst.y) < 1e-2)
+ dst.y = 0;
+
+ priv->pins[i].offset.x = dst.x;
+ priv->pins[i].offset.y = dst.y;
+ }
+
+ /*
+ * Tell the views.
+ */
+ g_signal_emit_by_name (G_OBJECT (part), "flipped", horizontal);
+
+ if (center) {
+ item_data_get_relative_bbox (ITEM_DATA (part), &b1, &b2);
+ part_center_before.x = b1.x + (b2.x - b1.x) / 2;
+ part_center_before.y = b1.y + (b2.y - b1.y) / 2;
+ }
+
+ /*
+ * Flip the bounding box.
+ */
+ src.x = b1.x;
+ src.y = b1.y;
+ art_affine_point (&dst, &src, affine);
+ b1.x = dst.x;
+ b1.y = dst.y;
+
+ src.x = b2.x;
+ src.y = b2.y;
+ art_affine_point (&dst, &src, affine);
+ b2.x = dst.x;
+ b2.y = dst.y;
+
+ item_data_set_relative_bbox (ITEM_DATA (part), &b1, &b2);
+
+ if (center) {
+ SheetPos part_pos, delta;
+ double dx, dy;
+
+ part_center_after.x = b1.x + (b2.x - b1.x) / 2;
+ part_center_after.y = b1.y + (b2.y - b1.y) / 2;
+
+ dx = part_center_before.x - part_center_after.x;
+ dy = part_center_before.y - part_center_after.y;
+
+ item_data_get_pos (ITEM_DATA (part), &part_pos);
+
+ src.x = part_center_before.x - center->x + part_pos.x;
+ src.y = part_center_before.y - center->y + part_pos.y;
+ art_affine_point (&dst, &src, affine);
+
+ delta.x = dx - src.x + dst.x;
+ delta.y = dy - src.y + dst.y;
+
+ item_data_move (ITEM_DATA (part), &delta);
+ }
+}
+
+static ItemData *
+part_clone (ItemData *src)
+{
+ Part *src_part, *new_part;
+ ItemDataClass *id_class;
+
+ g_return_val_if_fail (src != NULL, NULL);
+ g_return_val_if_fail (IS_PART (src), NULL);
+
+ id_class = ITEM_DATA_CLASS (G_OBJECT_GET_CLASS(src));
+ if (id_class->copy == NULL)
+ return NULL;
+
+ src_part = PART (src);
+ new_part = PART(g_object_new(TYPE_PART, NULL));
+ new_part->priv->pins = g_new0 (Pin, src_part->priv->num_pins);
+ id_class->copy (ITEM_DATA (new_part), src);
+
+ return ITEM_DATA (new_part);
+}
+
+static void
+part_copy (ItemData *dest, ItemData *src)
+{
+ Part *dest_part, *src_part;
+ GSList *list;
+ int i;
+
+ g_return_if_fail (dest != NULL);
+ g_return_if_fail (IS_PART (dest));
+ g_return_if_fail (src != NULL);
+ g_return_if_fail (IS_PART (src));
+
+ if (parent_class->copy != NULL)
+ parent_class->copy (dest, src);
+
+ dest_part = PART (dest);
+ src_part = PART (src);
+
+ dest_part->priv->rotation = src_part->priv->rotation;
+ dest_part->priv->flip = src_part->priv->flip;
+ dest_part->priv->num_pins = src_part->priv->num_pins;
+ dest_part->priv->library = src_part->priv->library;
+ dest_part->priv->name = g_strdup (src_part->priv->name);
+ dest_part->priv->symbol_name = g_strdup (src_part->priv->symbol_name);
+
+ memcpy (dest_part->priv->pins, src_part->priv->pins,
+ src_part->priv->num_pins * sizeof (Pin));
+ for (i = 0; i < dest_part->priv->num_pins; i++)
+ dest_part->priv->pins[i].part = dest_part;
+
+ /*
+ * Copy properties and labels.
+ */
+ dest_part->priv->properties =
+ g_slist_copy (src_part->priv->properties);
+ for (list = dest_part->priv->properties; list; list = list->next) {
+ PartProperty *prop, *new_prop;
+
+ new_prop = g_new0 (PartProperty, 1);
+ prop = list->data;
+ new_prop->name = g_strdup (prop->name);
+ new_prop->value = g_strdup (prop->value);
+ list->data = new_prop;
+ }
+
+ dest_part->priv->labels = g_slist_copy (src_part->priv->labels);
+ for (list = dest_part->priv->labels; list; list = list->next) {
+ PartLabel *label, *new_label;
+
+ new_label = g_new0 (PartLabel, 1);
+ label = list->data;
+ new_label->name = g_strdup (label->name);
+ new_label->text = g_strdup (label->text);
+ new_label->pos = label->pos;
+ list->data = new_label;
+ }
+}
+
+static void
+part_update_bbox (Part *part)
+{
+ GSList *objects;
+ LibrarySymbol *symbol;
+ SymbolObject *object;
+ GnomeCanvasPoints *points;
+ int i;
+
+ SheetPos b1, b2;
+
+ symbol = library_get_symbol (part->priv->symbol_name);
+ if (symbol == NULL) {
+ g_warning ("Couldn't find the requested symbol.");
+ return;
+ }
+
+ b1.x = b1.y = b2.x = b2.y = 0.0;
+
+ for (objects = symbol->symbol_objects; objects;
+ objects = objects->next){
+ object = objects->data;
+ switch (object->type){
+ case SYMBOL_OBJECT_LINE:
+ points = object->u.uline.line;
+
+ for (i = 0; i < points->num_points; i++) {
+ b1.x = MIN (points->coords[i * 2], b1.x);
+ b1.y = MIN (points->coords[i * 2 + 1], b1.y);
+
+ b2.x = MAX (points->coords[i * 2], b2.x);
+ b2.y = MAX (points->coords[i * 2 + 1], b2.y);
+ }
+ break;
+
+ case SYMBOL_OBJECT_ARC:
+ b1.x = MIN (object->u.arc.x1, b1.x);
+ b1.y = MIN (object->u.arc.y1, b1.y);
+
+ b2.x = MAX (object->u.arc.x1, b2.x);
+ b2.y = MAX (object->u.arc.y1, b2.y);
+
+ b1.x = MIN (object->u.arc.x2, b1.x);
+ b1.y = MIN (object->u.arc.y2, b1.y);
+
+ b2.x = MAX (object->u.arc.x2, b2.x);
+ b2.y = MAX (object->u.arc.y2, b2.y);
+
+ break;
+
+ case SYMBOL_OBJECT_TEXT:
+ {
+ /*GdkFont *font = gdk_font_load ("Sans 10");
+ b1.x = b1.y = 0;
+ b2.x = 2*object->u.text.x +
+ gdk_string_width (font, object->u.text.str );
+ b2.y = 2*object->u.text.y +
+ gdk_string_height (font,object->u.text.str );
+ */
+ }
+ break;
+
+
+ default:
+ g_warning ("Unknown symbol object.\n");
+ continue;
+ }
+ }
+
+ item_data_set_relative_bbox (ITEM_DATA (part), &b1, &b2);
+}
+
+static void
+part_unregister (ItemData *data)
+{
+ NodeStore *store;
+
+ g_return_if_fail (IS_PART (data));
+
+ store = item_data_get_store (data);
+ node_store_remove_part (store, PART (data));
+}
+
+static int
+part_register (ItemData *data)
+{
+ NodeStore *store;
+
+ g_return_val_if_fail (IS_PART (data), -1);
+
+ store = item_data_get_store (data);
+ node_store_add_part (store, PART (data));
+
+ return 0;
+}
+
+static char *
+part_get_refdes_prefix (ItemData *data)
+{
+ Part *part;
+ char *refdes;
+ int i, length;
+
+ g_return_val_if_fail (IS_PART (data), NULL);
+
+ part = PART (data);
+
+ refdes = part_get_property (part, "refdes");
+ if (refdes == NULL)
+ return NULL;
+
+ /*
+ * Get the 'prefix' i.e R for resistors.
+ */
+ length = strlen (refdes);
+ for (i = 0; i < length; i++) {
+ if (isdigit (refdes[length-i -1])) {
+ refdes[length -i -1] = '\0';
+ }
+ else break;
+ }
+ return g_strdup (refdes);
+}
+
+static void
+part_set_property (ItemData *data, char *property, char *value)
+{
+ Part *part;
+ PartPriv *priv;
+ GSList *props;
+ PartProperty *prop;
+
+ part = PART (data);
+
+ g_return_if_fail (part != NULL);
+ g_return_if_fail (IS_PART (part));
+ g_return_if_fail (property != NULL);
+
+ priv = part->priv;
+
+ for (props = priv->properties; props; props = props->next) {
+ prop = props->data;
+ if (g_strcasecmp (prop->name, property) == 0) {
+ g_free (prop->value);
+ if (value != NULL)
+ prop->value = g_strdup (value);
+ else
+ prop->value = NULL;
+ break;
+ }
+ }
+}
+
+static void
+part_print (ItemData *data, cairo_t *cr, SchematicPrintContext *ctx)
+{
+ GSList *objects, *labels;
+ SymbolObject *object;
+ LibrarySymbol *symbol;
+ double x0, y0;
+ int i, rotation;
+ Part *part;
+ PartPriv *priv;
+ SheetPos pos;
+ IDFlip flip;
+ GnomeCanvasPoints *line;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_PART (data));
+
+ part = PART (data);
+ priv = part->priv;
+
+ symbol = library_get_symbol (priv->symbol_name);
+ if (symbol == NULL) {
+ return;
+ }
+
+ item_data_get_pos (ITEM_DATA (part), &pos);
+ x0 = pos.x;
+ y0 = pos.y;
+
+ cairo_save (cr);
+
+ gdk_cairo_set_source_color (cr, &ctx->colors.components);
+ rotation = part_get_rotation (part);
+ if (rotation != 0) {
+ cairo_translate (cr, x0, y0);
+
+ flip = part_get_flip (part);
+ if (flip) {
+ if ((flip & ID_FLIP_HORIZ) && !(flip & ID_FLIP_VERT))
+ cairo_scale (cr, -1, 1);
+ if (!(flip & ID_FLIP_HORIZ) && (flip & ID_FLIP_VERT))
+ cairo_scale (cr, 1, -1);
+ if ((flip & ID_FLIP_HORIZ) && (flip & ID_FLIP_VERT))
+ rotation+=180;
+ }
+
+ cairo_rotate (cr, rotation*M_PI/180);
+ cairo_translate (cr, -x0, -y0);
+ } else {
+ flip = part_get_flip (part);
+ if (flip) {
+ cairo_translate (cr, x0, y0);
+ if ((flip & ID_FLIP_HORIZ) && !(flip & ID_FLIP_VERT))
+ cairo_scale (cr, -1, 1);
+ if (!(flip & ID_FLIP_HORIZ) && (flip & ID_FLIP_VERT))
+ cairo_scale (cr, 1, -1);
+ if ((flip & ID_FLIP_HORIZ) && (flip & ID_FLIP_VERT))
+ cairo_scale(cr,-1,-1);
+ cairo_translate (cr, -x0, -y0);
+ }
+ }
+
+ for (objects = symbol->symbol_objects; objects; objects = objects->next) {
+ object = (SymbolObject *)(objects->data);
+
+ switch (object->type) {
+ case SYMBOL_OBJECT_LINE:
+ line = object->u.uline.line;
+ for (i = 0; i < line->num_points; i++) {
+ double x, y;
+
+ x = line->coords[i * 2];
+ y = line->coords[i * 2 + 1];
+
+ if (i == 0)
+ cairo_move_to (cr, x0 + x, y0 + y);
+ else
+ cairo_line_to (cr, x0 + x, y0 + y);
+ }
+ break;
+ case SYMBOL_OBJECT_ARC: {
+ gdouble x1 = object->u.arc.x1;
+ gdouble y1 = object->u.arc.y1;
+ gdouble x2 = object->u.arc.x2;
+ gdouble y2 = object->u.arc.y2;
+ gdouble width, height, x, y;
+
+ x = (x2 - x1) / 2 + x1;
+ y = (y2 - y1) / 2 + y1;
+ width = x2 - x1;
+ height = y2 - y1;
+
+ cairo_save (cr);
+ cairo_translate (cr, x0 + x, y0 + y);
+ cairo_scale (cr, width / 2.0, height / 2.0);
+ cairo_arc (cr, 0.0, 0.0, 1.0, 0.0, 2 * M_PI);
+ cairo_restore (cr);
+ }
+ break;
+ default:
+ g_warning (
+ "Print part: Part %s contains unknown object.",
+ priv->name
+ );
+ continue;
+ }
+
+ cairo_stroke (cr);
+ }
+
+ /* We don't want to rotate labels text, only the (x,y)
+ * coordinate
+ */
+ gdk_cairo_set_source_color (cr, &ctx->colors.labels);
+ for (labels = part_get_labels (part); labels; labels = labels->next) {
+ gdouble x, y;
+ PartLabel *label = (PartLabel *)labels->data;
+ gchar *text;
+ /* gint text_width, text_height; */
+
+ x = label->pos.x + x0;
+ y = label->pos.y + y0;
+
+ text = part_property_expand_macros (part, label->text);
+ /* Align the label.
+ switch (rotation) {
+ case 90:
+ y += text_height*opc->scale;
+ break;
+ case 180:
+ break;
+ case 270:
+ x -= text_width*opc->scale;
+ break;
+ case 0:
+ default:
+ break;
+ } */
+
+ cairo_save (cr);
+ cairo_move_to (cr, x, y);
+ cairo_show_text (cr, text);
+ cairo_restore (cr);
+ g_free (text);
+ }
+ cairo_restore (cr);
+}
+
+
diff --git a/src/model/part.h b/src/model/part.h
new file mode 100644
index 0000000..df157b3
--- /dev/null
+++ b/src/model/part.h
@@ -0,0 +1,90 @@
+/*
+ * part.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ *
+ * 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.
+ */
+#ifndef __PART_H
+#define __PART_H
+
+#include <gnome.h>
+#include "sheet-pos.h"
+#include "clipboard.h"
+#include "load-common.h"
+
+#define TYPE_PART (part_get_type())
+#define PART(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PART, Part))
+#define PART_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), TYPE_PART, PartClass))
+#define IS_PART(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PART))
+#define IS_PART_CLASS(klass) (G_TYPE_INSTANCE_GET_CLASS((klass), TYPE_PART, PartClass))
+
+typedef struct _Part Part;
+typedef struct _PartClass PartClass;
+typedef struct _Pin Pin;
+typedef struct _PartPriv PartPriv;
+
+#include "item-data.h"
+
+struct _Pin {
+ SheetPos offset;
+ guint pin_nr;
+ gint node_nr; /* Numero de nodo en la netlist */
+ Part *part;
+};
+
+#define PIN(x) ((Pin *)(x))
+
+struct _Part {
+ ItemData parent;
+
+ PartPriv *priv;
+};
+
+struct _PartClass
+{
+ ItemDataClass parent_class;
+
+ void (*changed) ();
+};
+
+GType part_get_type (void);
+Part *part_new (void);
+Part *part_new_from_library_part (LibraryPart *library_part);
+int part_get_num_pins (Part *part);
+Pin *part_get_pins (Part *part);
+int part_set_pins (Part *part, GSList *connections);
+int part_get_rotation (Part *part);
+IDFlip part_get_flip (Part *part);
+void part_labels_rotate (Part *part, int rotation);
+
+char *part_get_property (Part *part, char *name);
+GSList *part_get_properties (Part *part);
+GSList *part_get_labels (Part *part);
+
+ClipboardData *part_clipboard_dup (Part *part);
+
+#endif
diff --git a/src/model/schematic-print-context.h b/src/model/schematic-print-context.h
new file mode 100644
index 0000000..cb0eccf
--- /dev/null
+++ b/src/model/schematic-print-context.h
@@ -0,0 +1,45 @@
+/*
+ * schematic.c
+ *
+ * Authors:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ *
+ * Web page: http://oregano.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef _SCHEMATIC_PRINT_CONTEXT_
+#define _SCHEMATIC_PRINT_CONTEXT_
+
+#include <gdk/gdk.h>
+
+typedef struct _SchematicColors {
+ GdkColor components;
+ GdkColor labels;
+ GdkColor wires;
+ GdkColor text;
+ GdkColor background;
+} SchematicColors;
+
+typedef struct _SchematicPrintContext {
+ SchematicColors colors;
+} SchematicPrintContext;
+
+#endif
+
diff --git a/src/model/schematic.c b/src/model/schematic.c
new file mode 100644
index 0000000..9736398
--- /dev/null
+++ b/src/model/schematic.c
@@ -0,0 +1,1114 @@
+/*
+ * schematic.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <gtk/gtk.h>
+#include <glib.h>
+#include <glade/glade.h>
+#include "schematic.h"
+#include "node-store.h"
+#include "file-manager.h"
+#include "settings.h"
+#include "sim-settings.h"
+#include "simulation.h"
+#include "errors.h"
+#include "schematic-print-context.h"
+
+typedef struct _SchematicsPrintOptions {
+ GtkColorButton *components;
+ GtkColorButton *labels;
+ GtkColorButton *wires;
+ GtkColorButton *text;
+ GtkColorButton *background;
+} SchematicPrintOptions;
+
+struct _SchematicPriv {
+ char *title;
+ char *filename;
+ char *author;
+ char *comments;
+ char *netlist_filename;
+
+ SchematicColors colors;
+ SchematicPrintOptions *printoptions;
+
+ /*
+ * Data for various dialogs.
+ */
+ gpointer settings;
+ gpointer sim_settings;
+ gpointer simulation;
+
+ GList *items;
+
+ NodeStore *store;
+ GHashTable *symbols;
+ GHashTable *refdes_values;
+
+ double zoom;
+
+ gboolean dirty;
+
+ GtkTextBuffer *log;
+ GtkTextTag *tag_error;
+};
+
+typedef enum {
+ REFDATA_SINGLE,
+ REFDATA_RANGE,
+ REFDATA_MIN,
+ REFDATA_MAX
+} RefDataType;
+
+typedef struct {
+ RefDataType type;
+ union {
+ int nr;
+ struct { int min; int max; } range;
+ } u;
+} RefData;
+
+enum {
+ TITLE_CHANGED,
+ ITEM_DATA_ADDED,
+ LOG_UPDATED,
+ DOT_ADDED,
+ DOT_REMOVED,
+ LAST_SCHEMATIC_DESTROYED,
+ LAST_SIGNAL
+};
+
+static void schematic_init(Schematic *schematic);
+static void schematic_class_init(SchematicClass *klass);
+static void schematic_finalize(GObject *object);
+static void schematic_dispose(GObject *object);
+static void item_data_destroy_callback (gpointer s, GObject *data);
+static void part_moved_callback (ItemData *data, SheetPos *pos, Schematic *sm);
+
+static int schematic_get_lowest_available_refdes (Schematic *schematic,
+ char *prefix);
+static void schematic_set_lowest_available_refdes (Schematic *schematic,
+ char *prefix, int num);
+
+static GObjectClass *parent_class = NULL;
+static guint schematic_signals[LAST_SIGNAL] = { 0 };
+
+static GList *schematic_list = NULL;
+static int schematic_count_ = 0;
+
+GType
+schematic_get_type (void)
+{
+ static GType schematic_type = 0;
+
+ if (!schematic_type) {
+ static const GTypeInfo schematic_info = {
+ sizeof (SchematicClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) schematic_class_init,
+ NULL,
+ NULL,
+ sizeof (Schematic),
+ 0,
+ (GInstanceInitFunc) schematic_init,
+ NULL
+ };
+
+ schematic_type =
+ g_type_register_static (G_TYPE_OBJECT, "Schematic",
+ &schematic_info,0);
+ }
+
+ return schematic_type;
+}
+
+static void
+schematic_class_init (SchematicClass *klass)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS(klass);
+ parent_class = g_type_class_peek_parent(klass);
+
+ schematic_signals[TITLE_CHANGED] = g_signal_new ("title_changed",
+ TYPE_SCHEMATIC,
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(SchematicClass,title_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1,
+ G_TYPE_STRING );
+
+ schematic_signals[LAST_SCHEMATIC_DESTROYED] = g_signal_new ("last_schematic_destroyed",
+ TYPE_SCHEMATIC,
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(SchematicClass,last_schematic_destroyed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ schematic_signals[ITEM_DATA_ADDED] = g_signal_new ("item_data_added",
+ TYPE_SCHEMATIC,
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(SchematicClass,item_data_added),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+
+ schematic_signals[DOT_ADDED] = g_signal_new ("dot_added",
+ TYPE_SCHEMATIC,
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(SchematicClass,dot_added),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1,
+ G_TYPE_POINTER);
+
+ schematic_signals[DOT_REMOVED] = g_signal_new ("dot_removed",
+ TYPE_SCHEMATIC,
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(SchematicClass,dot_removed),
+ NULL, NULL, g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1, G_TYPE_POINTER);
+
+ schematic_signals[LOG_UPDATED] = g_signal_new ("log_updated",
+ TYPE_SCHEMATIC,
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(SchematicClass,log_updated),
+ NULL, NULL, g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,0);
+
+ object_class->finalize = schematic_finalize;
+ object_class->dispose = schematic_dispose;
+}
+
+static void
+dot_added_callback (NodeStore *store, SheetPos *pos, Schematic *schematic)
+{
+ g_return_if_fail (schematic != NULL);
+ g_return_if_fail (IS_SCHEMATIC (schematic));
+
+ g_signal_emit_by_name (G_OBJECT(schematic), "dot_added", pos);
+}
+
+static void
+dot_removed_callback (NodeStore *store, SheetPos *pos, Schematic *schematic)
+{
+ g_return_if_fail (schematic != NULL);
+ g_return_if_fail (IS_SCHEMATIC (schematic));
+
+ g_signal_emit_by_name (G_OBJECT(schematic), "dot_removed", pos);
+}
+
+static void
+schematic_init(Schematic *schematic)
+{
+ SchematicPriv *priv;
+
+ priv = schematic->priv = g_new0 (SchematicPriv, 1);
+
+ priv->printoptions = NULL;
+ /* Colors */
+ priv->colors.components.red = 65535;
+ priv->colors.components.green = 0;
+ priv->colors.components.blue = 0;
+ priv->colors.labels.red = 0;
+ priv->colors.labels.green = 35723;
+ priv->colors.labels.blue = 35723;
+ priv->colors.wires.red = 0;
+ priv->colors.wires.green = 0;
+ priv->colors.wires.blue = 65535;
+ priv->colors.text.red = 0;
+ priv->colors.text.green = 0;
+ priv->colors.text.blue = 0;
+
+ priv->symbols = g_hash_table_new (g_str_hash, g_str_equal);
+ /* FIXME: use own str_equal (lib::sym)*/
+ priv->refdes_values = g_hash_table_new (g_str_hash, g_str_equal);
+ priv->store = node_store_new ();
+ priv->dirty = FALSE;
+ priv->log = gtk_text_buffer_new (NULL);
+ priv->tag_error = gtk_text_buffer_create_tag (priv->log, "error",
+ "foreground", "red", "weight", PANGO_WEIGHT_BOLD, NULL);
+
+ g_signal_connect_object (
+ G_OBJECT (priv->store),
+ "dot_added",
+ G_CALLBACK(dot_added_callback),
+ G_OBJECT (schematic),
+ G_CONNECT_AFTER);
+
+ g_signal_connect_object (
+ G_OBJECT (priv->store),
+ "dot_removed",
+ G_CALLBACK(dot_removed_callback),
+ G_OBJECT (schematic),
+ G_CONNECT_AFTER);
+
+ priv->sim_settings = sim_settings_new (schematic);
+ priv->settings = settings_new (schematic);
+ priv->simulation = simulation_new (schematic);
+
+ priv->filename = NULL;
+ priv->netlist_filename = NULL;
+ priv->author = g_strdup ("");
+ priv->comments = g_strdup ("");
+}
+
+Schematic *
+schematic_new (void)
+{
+ Schematic *schematic;
+
+ schematic = SCHEMATIC(g_object_new (TYPE_SCHEMATIC, NULL));
+
+ schematic_count_++;
+ schematic_list = g_list_prepend (schematic_list, schematic);
+
+ return schematic;
+}
+
+static void
+schematic_dispose (GObject *object)
+{
+ Schematic *schematic;
+ GList *list;
+
+ schematic = SCHEMATIC(object);
+
+ /* Disconnect weak item signal */
+ for(list=schematic->priv->items; list; list=list->next)
+ g_object_weak_unref(G_OBJECT(list->data),
+ item_data_destroy_callback, G_OBJECT(schematic));
+
+ g_object_unref (G_OBJECT (schematic->priv->log));
+
+ schematic_count_--;
+ schematic_list = g_list_remove (schematic_list, schematic);
+
+ if (schematic_count_ == 0) {
+ g_signal_emit_by_name(G_OBJECT (schematic),
+ "last_schematic_destroyed", NULL);
+ }
+
+ G_OBJECT_CLASS(parent_class)->dispose(G_OBJECT(schematic));
+}
+
+static void
+schematic_finalize(GObject *object)
+{
+ Schematic *sm;
+
+ sm = SCHEMATIC(object);
+ if (sm->priv) {
+ g_free(sm->priv->simulation);
+ g_hash_table_destroy(sm->priv->symbols);
+ g_hash_table_destroy(sm->priv->refdes_values);
+ if (sm->priv->netlist_filename)
+ g_free (sm->priv->netlist_filename);
+
+ g_free(sm->priv);
+ sm->priv = NULL;
+ }
+
+ G_OBJECT_CLASS(parent_class)->finalize(G_OBJECT(sm));
+}
+
+/*
+ * Get/set functions.
+ */
+
+char *
+schematic_get_title (Schematic *schematic)
+{
+ g_return_val_if_fail (schematic != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC (schematic), NULL);
+
+ return schematic->priv->title;
+}
+
+char *
+schematic_get_author (Schematic *schematic)
+{
+ g_return_val_if_fail (schematic != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC (schematic), NULL);
+
+ return schematic->priv->author;
+}
+
+char *
+schematic_get_comments (Schematic *schematic)
+{
+ g_return_val_if_fail (schematic != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC (schematic), NULL);
+
+ return schematic->priv->comments;
+}
+
+void
+schematic_set_title (Schematic *schematic, const gchar *title)
+{
+ g_return_if_fail (schematic != NULL);
+ g_return_if_fail (IS_SCHEMATIC (schematic));
+
+ if (!title) return;
+
+ if (schematic->priv->title)
+ g_free (schematic->priv->title);
+ schematic->priv->title = g_strdup (title);
+
+ g_signal_emit_by_name (G_OBJECT (schematic),
+ "title_changed", schematic->priv->title);
+}
+
+void
+schematic_set_author (Schematic *schematic, const gchar *author)
+{
+ g_return_if_fail (schematic != NULL);
+ g_return_if_fail (IS_SCHEMATIC (schematic));
+
+ if (!author) return;
+
+ if (schematic->priv->author)
+ g_free (schematic->priv->author);
+ schematic->priv->author = g_strdup (author);
+}
+
+void
+schematic_set_comments (Schematic *schematic, const gchar *comments)
+{
+ g_return_if_fail (schematic != NULL);
+ g_return_if_fail (IS_SCHEMATIC (schematic));
+
+ if (schematic->priv->comments)
+ g_free (schematic->priv->comments);
+ schematic->priv->comments = g_strdup (comments);
+}
+
+char *
+schematic_get_filename (Schematic *schematic)
+{
+ g_return_val_if_fail (schematic != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC (schematic), NULL);
+
+ return schematic->priv->filename;
+}
+
+void
+schematic_set_filename (Schematic *schematic, const gchar *filename)
+{
+ g_return_if_fail (schematic != NULL);
+ g_return_if_fail (IS_SCHEMATIC (schematic));
+
+ g_free (schematic->priv->filename);
+ schematic->priv->filename = g_strdup (filename);
+}
+
+char *
+schematic_get_netlist_filename (Schematic *schematic)
+{
+ g_return_val_if_fail (schematic != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC (schematic), NULL);
+
+ return schematic->priv->netlist_filename;
+}
+
+void
+schematic_set_netlist_filename (Schematic *schematic, char *filename)
+{
+ g_return_if_fail (schematic != NULL);
+ g_return_if_fail (IS_SCHEMATIC (schematic));
+
+ if (schematic->priv->netlist_filename)
+ g_free (schematic->priv->netlist_filename);
+
+ schematic->priv->netlist_filename = g_strdup (filename);
+}
+
+double
+schematic_get_zoom (Schematic *schematic)
+{
+ g_return_val_if_fail (schematic != NULL, 1.0);
+ g_return_val_if_fail (IS_SCHEMATIC (schematic), 1.0);
+
+ return schematic->priv->zoom;
+}
+
+/*
+ * FIXME: different zoom level on views...
+ */
+void
+schematic_set_zoom (Schematic *schematic, double zoom)
+{
+ g_return_if_fail (schematic != NULL);
+ g_return_if_fail (IS_SCHEMATIC (schematic));
+
+ schematic->priv->zoom = zoom;
+}
+
+NodeStore *
+schematic_get_store (Schematic *schematic)
+{
+ g_return_val_if_fail (schematic != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC (schematic), NULL);
+
+ return schematic->priv->store;
+}
+
+gpointer
+schematic_get_settings (Schematic *schematic)
+{
+ g_return_val_if_fail (schematic != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC (schematic), NULL);
+
+ return schematic->priv->settings;
+}
+
+gpointer
+schematic_get_sim_settings (Schematic *schematic)
+{
+ g_return_val_if_fail (schematic != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC (schematic), NULL);
+
+ return schematic->priv->sim_settings;
+}
+
+gpointer
+schematic_get_simulation (Schematic *schematic)
+{
+ g_return_val_if_fail (schematic != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC (schematic), NULL);
+
+ return schematic->priv->simulation;
+}
+
+void
+schematic_log_append (Schematic *schematic, const char *message)
+{
+ g_return_if_fail (schematic != NULL);
+ g_return_if_fail (IS_SCHEMATIC (schematic));
+
+ gtk_text_buffer_insert_at_cursor (
+ schematic->priv->log,
+ message, strlen (message));
+}
+
+void
+schematic_log_append_error (Schematic *schematic, const char *message)
+{
+ GtkTextIter iter;
+ SchematicPriv *priv;
+
+ g_return_if_fail (schematic != NULL);
+ g_return_if_fail (IS_SCHEMATIC (schematic));
+
+ priv = schematic->priv;
+
+ gtk_text_buffer_get_end_iter (priv->log, &iter);
+ gtk_text_buffer_insert_with_tags (priv->log, &iter, message,
+ -1, priv->tag_error, NULL);
+}
+
+void
+schematic_log_show (Schematic *schematic)
+{
+ g_return_if_fail (schematic != NULL);
+ g_return_if_fail (IS_SCHEMATIC (schematic));
+
+ g_signal_emit_by_name (G_OBJECT(schematic),
+ "log_updated", schematic->priv->log);
+}
+
+void
+schematic_log_clear (Schematic *schematic)
+{
+ GList *log;
+
+ g_return_if_fail (schematic != NULL);
+ g_return_if_fail (IS_SCHEMATIC (schematic));
+
+ gtk_text_buffer_set_text (
+ schematic->priv->log,
+ "", -1);
+}
+
+GtkTextBuffer*
+schematic_get_log_text (Schematic *schematic)
+{
+ g_return_val_if_fail (schematic != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC (schematic), NULL);
+
+ return schematic->priv->log;
+}
+
+int
+schematic_count (void)
+{
+ return schematic_count_;
+}
+
+Schematic *
+schematic_read (char *name, GError **out_error)
+{
+ Schematic *new_sm;
+ int ret;
+ char *fname;
+ GError *error = NULL;
+ FileType *ft;
+
+ g_return_val_if_fail (name != NULL, NULL);
+
+ fname = g_filename_from_uri (name, NULL, &error);
+
+ if (!fname) {
+ fname = name;
+ if (error) {
+ g_error_free (error);
+ error = NULL;
+ }
+ }
+
+ if (!g_file_test (fname, G_FILE_TEST_EXISTS)) {
+ g_set_error (out_error, OREGANO_ERROR, OREGANO_SCHEMATIC_FILE_NOT_FOUND,
+ _("File %s does not exists."), fname);
+ return NULL;
+ }
+
+ /* Get File Handler */
+ ft = file_manager_get_handler (fname);
+ if (ft == NULL) {
+ g_set_error (out_error, OREGANO_ERROR, OREGANO_SCHEMATIC_FILE_NOT_FOUND,
+ _("Unknown file format for %s."), fname);
+ return NULL;
+ }
+
+ new_sm = schematic_new ();
+
+ /* TODO : Add GError-like error reporting! */
+ ret = ft->load_func (new_sm, fname, &error);
+
+ if (error != NULL) {
+ g_propagate_error (out_error, error);
+ g_object_unref(G_OBJECT(new_sm));
+ return NULL;
+ }
+
+ if (ret) {
+ g_object_unref(G_OBJECT(new_sm));
+ new_sm = NULL;
+ g_set_error (out_error, OREGANO_ERROR, OREGANO_SCHEMATIC_FILE_NOT_FOUND,
+ _("Load fails!."), fname);
+ } else
+ schematic_set_dirty (new_sm, FALSE);
+
+ return new_sm;
+}
+
+gint
+schematic_save_file (Schematic *sm, GError **error)
+{
+ FileType *ft;
+ GError *internal_error = NULL;
+
+ g_return_val_if_fail (sm != NULL, FALSE);
+
+ ft = file_manager_get_handler (schematic_get_filename (sm));
+
+ if (ft == NULL) {
+ g_set_error (error, OREGANO_ERROR, OREGANO_SCHEMATIC_FILE_NOT_FOUND,
+ _("Unknown file format for %s."), schematic_get_filename (sm));
+ return FALSE;
+ }
+
+ if (ft->save_func (sm, &internal_error)) {
+ schematic_set_title (sm, g_path_get_basename (sm->priv->filename));
+ schematic_set_dirty (sm, FALSE);
+ return TRUE;
+ }
+
+ g_propagate_error (error, internal_error);
+
+ g_error_free (internal_error);
+ return FALSE; // Save fails!
+}
+
+void
+schematic_add_item (Schematic *sm, ItemData *data)
+{
+ NodeStore *store;
+ char *prefix, *refdes;
+ int num;
+
+ g_return_if_fail (sm != NULL);
+ g_return_if_fail (IS_SCHEMATIC (sm));
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (data));
+
+ store = sm->priv->store;
+ g_object_set(G_OBJECT(data), "store", store, NULL);
+ if (item_data_register(data) == -1) {
+ /* Item does not be added */
+ g_object_unref (G_OBJECT (data));
+ return;
+ }
+
+ /*
+ * Some items need a reference designator. Find a good one.
+ */
+ prefix = item_data_get_refdes_prefix (data);
+ if (prefix != NULL) {
+ num = schematic_get_lowest_available_refdes (sm, prefix);
+ refdes = g_strdup_printf ("%s%d", prefix, num);
+ item_data_set_property (data, "refdes", refdes);
+
+ schematic_set_lowest_available_refdes (sm, prefix, num + 1);
+
+ g_free (prefix);
+ g_free (refdes);
+ }
+
+ sm->priv->items = g_list_prepend(sm->priv->items, data);
+ g_object_weak_ref(G_OBJECT(data), item_data_destroy_callback, G_OBJECT(sm));
+
+ g_signal_connect_object(G_OBJECT(data),
+ "moved",
+ G_CALLBACK(part_moved_callback),
+ sm,
+ 0);
+
+ sm->priv->dirty = TRUE;
+
+ g_signal_emit_by_name(G_OBJECT(sm), "item_data_added", data);
+}
+
+void
+schematic_parts_foreach (Schematic *schematic,
+ ForeachItemDataFunc func, gpointer user_data)
+{
+ GList *list;
+
+ g_return_if_fail (schematic != NULL);
+ g_return_if_fail (IS_SCHEMATIC (schematic));
+
+ if (func == NULL)
+ return;
+
+ for (list = node_store_get_parts (schematic->priv->store); list; list = list->next) {
+ func (list->data, user_data);
+ }
+}
+
+void
+schematic_wires_foreach (Schematic *schematic,
+ ForeachItemDataFunc func, gpointer user_data)
+{
+ GList *list;
+
+ g_return_if_fail (schematic != NULL);
+ g_return_if_fail (IS_SCHEMATIC (schematic));
+
+ if (func == NULL)
+ return;
+
+ for (list = node_store_get_wires (schematic->priv->store); list; list = list->next) {
+ func (list->data, user_data);
+ }
+}
+
+void
+schematic_items_foreach (Schematic *schematic,
+ ForeachItemDataFunc func, gpointer user_data)
+{
+ GList *list;
+
+ g_return_if_fail (schematic != NULL);
+ g_return_if_fail (IS_SCHEMATIC (schematic));
+
+ if (func == NULL)
+ return;
+
+ for (list = schematic->priv->items; list; list = list->next) {
+ func (list->data, user_data);
+ }
+}
+
+GList *
+schematic_get_items (Schematic *sm)
+{
+ g_return_val_if_fail (sm != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC (sm), NULL);
+
+ return sm->priv->items;
+}
+
+static void
+item_data_destroy_callback (gpointer s, GObject *data)
+{
+ Schematic *sm = SCHEMATIC(s);
+ schematic_set_dirty (sm, TRUE);
+ if (sm->priv) {
+ sm->priv->items = g_list_remove (sm->priv->items, data);
+ }
+}
+
+static int
+schematic_get_lowest_available_refdes (Schematic *schematic, char *prefix)
+{
+ gpointer key, value;
+
+ g_return_val_if_fail (schematic != NULL, -1);
+ g_return_val_if_fail (IS_SCHEMATIC (schematic), -1);
+ g_return_val_if_fail (prefix != NULL, -1);
+
+ if ( g_hash_table_lookup_extended (schematic->priv->refdes_values,
+ prefix, &key, &value) ) {
+ return GPOINTER_TO_INT (value);
+ } else {
+ return 1;
+ }
+}
+
+static void
+schematic_set_lowest_available_refdes (Schematic *schematic,
+ char *prefix, int num)
+{
+ gpointer key, value;
+
+ g_return_if_fail (schematic != NULL);
+ g_return_if_fail (IS_SCHEMATIC (schematic));
+ g_return_if_fail (prefix != NULL);
+
+ /* If there already is a key, use it, otherwise copy the prefix and
+ * use as key.
+ */
+ if (!g_hash_table_lookup_extended (schematic->priv->refdes_values,
+ prefix, &key, &value))
+ key = g_strdup (prefix);
+
+ g_hash_table_insert (schematic->priv->refdes_values,
+ key, GINT_TO_POINTER (num));
+}
+
+gboolean
+schematic_is_dirty(Schematic *sm)
+{
+ g_return_val_if_fail (sm != NULL, FALSE);
+ g_return_val_if_fail (IS_SCHEMATIC (sm), FALSE);
+
+ return sm->priv->dirty;
+}
+
+void
+schematic_set_dirty(Schematic *sm, gboolean b)
+{
+ g_return_if_fail (sm != NULL);
+ g_return_if_fail (IS_SCHEMATIC (sm));
+
+ sm->priv->dirty = b;
+}
+
+static void
+part_moved_callback (ItemData *data, SheetPos *pos, Schematic *sm)
+{
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (data));
+
+ schematic_set_dirty (sm, TRUE);
+}
+
+static void
+schematic_render (Schematic *sm, cairo_t *cr)
+{
+ NodeStore *store;
+
+ SchematicPrintContext schematic_print_context;
+ schematic_print_context.colors = sm->priv->colors;
+ store = schematic_get_store (sm);
+
+ node_store_print_items (store, cr, &schematic_print_context);
+ node_store_print_labels (store, cr, NULL);
+}
+
+GdkColor
+convert_to_grayscale(GdkColor *source)
+{
+ GdkColor color;
+ int factor;
+
+ factor = (source->red + source->green + source->blue)/3;
+ color.red = factor;
+ color.green = factor;
+ color.blue = factor;
+
+ return color;
+}
+
+void
+schematic_export (Schematic *sm, const gchar *filename,
+ gint img_w, gint img_h, int bg, int color, int format)
+{
+ ArtDRect bbox;
+ NodeStore *store;
+ cairo_surface_t *surface;
+ cairo_t *cr;
+ gdouble w, h;
+ gdouble graph_w, graph_h;
+ gdouble scale, scalew, scaleh;
+ SchematicColors colors;
+
+ if (!color) {
+ colors = sm->priv->colors;
+ sm->priv->colors.components = convert_to_grayscale (&sm->priv->colors.components);
+ sm->priv->colors.labels = convert_to_grayscale (&sm->priv->colors.labels);
+ sm->priv->colors.wires = convert_to_grayscale (&sm->priv->colors.wires);
+ sm->priv->colors.text = convert_to_grayscale (&sm->priv->colors.text);
+ sm->priv->colors.background = convert_to_grayscale (&sm->priv->colors.background);
+ }
+
+ store = schematic_get_store (sm);
+ node_store_get_bounds (store, &bbox);
+
+ w = bbox.x1 - bbox.x0;
+ h = bbox.y1 - bbox.y0;
+
+ switch (format) {
+#ifdef CAIRO_HAS_SVG_SURFACE
+ case 0:
+ surface = cairo_svg_surface_create (filename, img_w, img_h);
+ break;
+#endif
+#ifdef CAIRO_HAS_PDF_SURFACE
+ case 1:
+ surface = cairo_pdf_surface_create (filename, img_w, img_h);
+ break;
+#endif
+#ifdef CAIRO_HAS_PS_SURFACE
+ case 2:
+ surface = cairo_ps_surface_create (filename, img_w, img_h);
+ break;
+#endif
+ default:
+ surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, img_w, img_h);
+ }
+ cr = cairo_create (surface);
+
+ /* Background */
+ switch (bg) {
+ case 1: /* White */
+ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
+ cairo_rectangle (cr, 0, 0, img_w, img_h);
+ cairo_fill (cr);
+ break;
+ case 2: /* Black */
+ cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
+ cairo_rectangle (cr, 0, 0, img_w, img_h);
+ cairo_fill (cr);
+ }
+
+ graph_w = img_w * 0.8;
+ graph_h = img_h * 0.8;
+ scalew = graph_w / (bbox.x1 - bbox.x0);
+ scaleh = graph_h / (bbox.y1 - bbox.y0);
+ if (scalew < scaleh)
+ scale = scalew;
+ else
+ scale = scaleh;
+
+ /* Preparing ...*/
+ cairo_save (cr);
+ cairo_translate (cr, (img_w - graph_w)/2.0, (img_h - graph_h) / 2.0);
+ cairo_scale (cr, scale, scale);
+ cairo_translate (cr, -bbox.x0, -bbox.y0);
+ cairo_set_line_width (cr, 0.5);
+
+ /* Render ... */
+ schematic_render (sm, cr);
+
+ cairo_restore (cr);
+ cairo_show_page (cr);
+
+ /* Saving ... */
+ if (format >= 3)
+ cairo_surface_write_to_png (surface, filename);
+ cairo_destroy (cr);
+ cairo_surface_destroy (surface);
+
+ // Restore color information
+ if (!color) {
+ sm->priv->colors = colors;
+ }
+}
+
+static void
+draw_rotule (Schematic *sm, cairo_t *cr)
+{
+ cairo_save (cr);
+ cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
+ cairo_set_line_width (cr, 0.5);
+ cairo_rectangle (cr, 0, 0, 180, 20);
+ cairo_rectangle (cr, 0, 20, 180, 10);
+ cairo_stroke (cr);
+ cairo_restore (cr);
+}
+
+static void
+draw_page (GtkPrintOperation *operation,
+ GtkPrintContext *context, int page_nr, Schematic *sm)
+{
+ PangoLayout *layout;
+ PangoFontDescription *desc;
+ NodeStore *store;
+ ArtDRect bbox;
+ gdouble page_w, page_h;
+ gdouble circuit_w, circuit_h;
+
+ page_w = gtk_print_context_get_width (context);
+ page_h = gtk_print_context_get_height (context);
+
+ circuit_w = page_w * 0.8;
+ circuit_h = page_h * 0.8;
+
+ cairo_t *cr = gtk_print_context_get_cairo_context (context);
+
+ /* Draw a red rectangle, as wide as the paper (inside the margins) */
+ cairo_save (cr);
+ cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
+ cairo_set_line_width (cr, 0.5);
+ cairo_rectangle (cr, 20, 10, page_w-30, page_h-20);
+ cairo_stroke (cr);
+ cairo_restore (cr);
+
+ cairo_save (cr);
+ cairo_translate (cr, page_w-190, page_h-40);
+ draw_rotule (sm, cr);
+ cairo_restore (cr);
+
+ store = schematic_get_store (sm);
+
+ node_store_get_bounds (store, &bbox);
+
+ cairo_save (cr);
+ cairo_set_line_width (cr, 0.5);
+ cairo_set_source_rgb (cr, 0, 0, 0);
+ cairo_translate (cr, page_w * 0.1, page_h * 0.1);
+ /* 0.4 is the convert factor between Model unit and
+ * milimeters, unit used in printing
+ */
+ cairo_scale (cr, 0.4, 0.4);
+ cairo_translate (cr, -bbox.x0, -bbox.y0);
+ schematic_render (sm, cr);
+ cairo_restore (cr);
+}
+
+static GObject*
+print_options (GtkPrintOperation *operation, Schematic *sm)
+{
+ GladeXML *gui;
+
+ if (!g_file_test (OREGANO_GLADEDIR "/print-options.glade", G_FILE_TEST_EXISTS)) {
+ return G_OBJECT (gtk_label_new (_("Error loading print-options.glade")));
+ }
+
+ gui = glade_xml_new (OREGANO_GLADEDIR "/print-options.glade",
+ "widget", GETTEXT_PACKAGE);
+ if (!gui) {
+ return G_OBJECT (gtk_label_new (_("Error loading print-options.glade")));
+ }
+
+ if (sm->priv->printoptions)
+ g_free (sm->priv->printoptions);
+ sm->priv->printoptions = g_new0(SchematicPrintOptions, 1);
+
+ sm->priv->printoptions->components = GTK_COLOR_BUTTON (glade_xml_get_widget (gui, "color_components"));
+ sm->priv->printoptions->labels = GTK_COLOR_BUTTON (glade_xml_get_widget (gui, "color_labels"));
+ sm->priv->printoptions->wires = GTK_COLOR_BUTTON (glade_xml_get_widget (gui, "color_wires"));
+ sm->priv->printoptions->text = GTK_COLOR_BUTTON (glade_xml_get_widget (gui, "color_text"));
+ sm->priv->printoptions->background = GTK_COLOR_BUTTON (glade_xml_get_widget (gui, "color_background"));
+
+ /* Set default colors */
+ gtk_color_button_set_color (GTK_COLOR_BUTTON (glade_xml_get_widget (gui, "color_components")),
+ &sm->priv->colors.components);
+ gtk_color_button_set_color (GTK_COLOR_BUTTON (glade_xml_get_widget (gui, "color_labels")),
+ &sm->priv->colors.labels);
+ gtk_color_button_set_color (GTK_COLOR_BUTTON (glade_xml_get_widget (gui, "color_wires")),
+ &sm->priv->colors.wires);
+ gtk_color_button_set_color (GTK_COLOR_BUTTON (glade_xml_get_widget (gui, "color_text")),
+ &sm->priv->colors.text);
+ gtk_color_button_set_color (GTK_COLOR_BUTTON (glade_xml_get_widget (gui, "color_background")),
+ &sm->priv->colors.background);
+
+ return (GObject *) (glade_xml_get_widget (gui, "widget"));
+}
+
+static void
+read_print_options(GtkPrintOperation *operation, GtkWidget *widget, Schematic *sm)
+{
+ SchematicPrintOptions *colors = sm->priv->printoptions;
+
+ gtk_color_button_get_color (colors->components, &sm->priv->colors.components);
+ gtk_color_button_get_color (colors->labels, &sm->priv->colors.labels);
+ gtk_color_button_get_color (colors->wires, &sm->priv->colors.wires);
+ gtk_color_button_get_color (colors->text, &sm->priv->colors.text);
+ gtk_color_button_get_color (colors->background, &sm->priv->colors.background);
+
+ g_free (sm->priv->printoptions);
+ sm->priv->printoptions = NULL;
+}
+
+void
+schematic_print (Schematic *sm, GtkPageSetup *page, GtkPrintSettings *settings, gboolean preview)
+{
+ GtkPrintOperation *op;
+ GtkPrintOperationResult res;
+
+ op = gtk_print_operation_new ();
+
+ gtk_print_operation_set_print_settings (op, settings);
+ gtk_print_operation_set_default_page_setup (op, page);
+ gtk_print_operation_set_n_pages (op, 1);
+ gtk_print_operation_set_unit (op, GTK_UNIT_MM);
+ gtk_print_operation_set_use_full_page (op, TRUE);
+
+ g_signal_connect (op, "create-custom-widget", G_CALLBACK (print_options), sm);
+ g_signal_connect (op, "custom-widget-apply", G_CALLBACK (read_print_options), sm);
+ g_signal_connect (op, "draw_page", G_CALLBACK (draw_page), sm);
+
+ gtk_print_operation_set_custom_tab_label (op, _("Schematic"));
+
+ if (preview)
+ res = gtk_print_operation_run (op, GTK_PRINT_OPERATION_ACTION_PREVIEW,
+ NULL, NULL);
+ else
+ res = gtk_print_operation_run (op, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,
+ NULL, NULL);
+
+ if (res == GTK_PRINT_OPERATION_RESULT_CANCEL) {
+ }
+}
diff --git a/src/model/schematic.h b/src/model/schematic.h
new file mode 100644
index 0000000..29678fb
--- /dev/null
+++ b/src/model/schematic.h
@@ -0,0 +1,126 @@
+/*
+ * schematic.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#ifndef __SCHEMATIC_H__
+#define __SCHEMATIC_H__
+
+#include <gtk/gtk.h>
+#include <cairo/cairo.h>
+#include <cairo/cairo-features.h>
+#ifdef CAIRO_HAS_SVG_SURFACE
+#include <cairo/cairo-svg.h>
+#endif
+#ifdef CAIRO_HAS_PDF_SURFACE
+#include <cairo/cairo-pdf.h>
+#endif
+#ifdef CAIRO_HAS_PS_SURFACE
+#include <cairo/cairo-ps.h>
+#endif
+
+#include "item-data.h"
+#include "part.h"
+#include "wire.h"
+#include "node-store.h"
+
+#define TYPE_SCHEMATIC (schematic_get_type ())
+#define SCHEMATIC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SCHEMATIC, Schematic))
+#define SCHEMATIC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SCHEMATIC, SchematicClass))
+#define IS_SCHEMATIC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SCHEMATIC))
+#define IS_SCHEMATIC_CLASS(klass) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SCHEMATIC, SchematicClass))
+
+typedef struct _Schematic Schematic;
+typedef struct _SchematicClass SchematicClass;
+typedef struct _SchematicPriv SchematicPriv;
+
+typedef void (*ForeachItemDataFunc) (ItemData *item_data, gpointer user_data);
+
+struct _Schematic {
+ GObject parent;
+
+ gpointer corba_server;
+ SchematicPriv *priv;
+};
+
+struct _SchematicClass {
+ GObjectClass parent_class;
+
+ /* signals */
+ void (*title_changed) (Schematic* ,gchar*);
+ void (*item_data_added) (Schematic*, gpointer*);
+ void (*log_updated) (gpointer);
+ void (*dot_added) (Schematic*);
+ void (*dot_removed) (Schematic*, gpointer*);
+ void (*last_schematic_destroyed) (Schematic*);
+};
+
+GType schematic_get_type (void);
+Schematic *schematic_new (void);
+char *schematic_get_title (Schematic *schematic);
+void schematic_set_title (Schematic *schematic, const gchar *title);
+char *schematic_get_author (Schematic *schematic);
+void schematic_set_author (Schematic *schematic, const gchar *author);
+char *schematic_get_comments (Schematic *schematic);
+void schematic_set_comments (Schematic *schematic, const gchar *comments);
+char *schematic_get_filename (Schematic *schematic);
+void schematic_set_filename (Schematic *schematic, const gchar *filename);
+char *schematic_get_netlist_filename (Schematic *schematic);
+void schematic_set_netlist_filename (Schematic *schematic, char *filename);
+int schematic_count (void);
+double schematic_get_zoom (Schematic *schematic);
+void schematic_set_zoom (Schematic *schematic, double zoom);
+void schematic_add_item (Schematic *sm, ItemData *data);
+void schematic_parts_foreach (Schematic *schematic,
+ ForeachItemDataFunc func, gpointer user_data);
+void schematic_wires_foreach (Schematic *schematic,
+ ForeachItemDataFunc func, gpointer user_data);
+void schematic_items_foreach (Schematic *schematic,
+ ForeachItemDataFunc func, gpointer user_data);
+GList *schematic_get_items (Schematic *sm);
+NodeStore *schematic_get_store (Schematic *schematic);
+gpointer schematic_get_settings (Schematic *schematic);
+gpointer schematic_get_sim_settings (Schematic *schematic);
+gpointer schematic_get_simulation (Schematic *schematic);
+void schematic_log_clear (Schematic *schematic);
+void schematic_log_append (Schematic *schematic, const char *message);
+void schematic_log_append_error (Schematic *schematic, const char *message);
+void schematic_log_show (Schematic *schematic);
+GtkTextBuffer *schematic_get_log_text (Schematic *schematic);
+int schematic_count (void);
+gboolean schematic_is_dirty(Schematic *sm);
+void schematic_set_dirty(Schematic *sm, gboolean b);
+gint schematic_save_file (Schematic *sm, GError **error);
+Schematic *schematic_read (char *fname, GError **error);
+void schematic_print (Schematic *sm, GtkPageSetup *p, GtkPrintSettings *s, gboolean preview);
+void schematic_export (Schematic *sm, const gchar *filename, gint img_w, gint img_h, int bg, int color, int format);
+
+#endif /* __SCHEMATIC_H__ */
+
+
+
diff --git a/src/model/sheet-pos.h b/src/model/sheet-pos.h
new file mode 100644
index 0000000..66fa1bd
--- /dev/null
+++ b/src/model/sheet-pos.h
@@ -0,0 +1,39 @@
+/*
+ * sheet-pos.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __SHEET_POS_H
+#define __SHEET_POS_H
+
+typedef struct _SheetPos SheetPos;
+struct _SheetPos {
+ gdouble x;
+ gdouble y;
+};
+
+#endif
diff --git a/src/model/textbox.c b/src/model/textbox.c
new file mode 100644
index 0000000..4f163cb
--- /dev/null
+++ b/src/model/textbox.c
@@ -0,0 +1,468 @@
+/*
+ * textbox.c
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <gnome.h>
+#include <math.h>
+#include "item-data.h"
+#include "textbox.h"
+#include "clipboard.h"
+#include "node-store.h"
+#include "schematic-print-context.h"
+
+/*
+#define TEXTBOX_DEFAULT_FONT "-*-helvetica-medium-r-*-*-*-100-*-*-*-*-*-*"
+*/
+#define TEXTBOX_DEFAULT_FONT "Arial 10"
+
+/*
+ * Private declarations
+ */
+
+static void textbox_class_init (TextboxClass *klass);
+static void textbox_init (Textbox *textbox);
+static void textbox_copy (ItemData *dest, ItemData *src);
+static ItemData *textbox_clone (ItemData *src);
+static void textbox_rotate (ItemData *data, int angle, SheetPos *center);
+static void textbox_print (ItemData *data, cairo_t *cr, SchematicPrintContext *ctx);
+static int textbox_register (ItemData *data);
+static void textbox_unregister (ItemData *data);
+static gboolean textbox_has_properties (ItemData *data);
+
+static void textbox_flip (ItemData *data, gboolean horizontal,
+ SheetPos *center);
+
+
+enum {
+ TEXT_CHANGED,
+ FONT_CHANGED,
+ LAST_SIGNAL
+};
+
+static ItemDataClass *parent_class = NULL;
+static guint textbox_signals[LAST_SIGNAL] = { 0 };
+
+struct _TextboxPriv {
+ char *text;
+ char *font;
+};
+
+GType
+textbox_get_type (void)
+{
+ static GType textbox_type = 0;
+
+ if (!textbox_type) {
+ static const GTypeInfo textbox_info = {
+ sizeof (TextboxClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) textbox_class_init,
+ NULL,
+ NULL,
+ sizeof (Textbox),
+ 0,
+ (GInstanceInitFunc) textbox_init,
+ NULL
+ };
+
+ textbox_type = g_type_register_static(TYPE_ITEM_DATA,
+ "Textbox", &textbox_info, 0);
+ }
+
+ return textbox_type;
+}
+
+static void
+textbox_finalize(GObject *object)
+{
+ Textbox *textbox = TEXTBOX (object);
+ TextboxPriv *priv = textbox->priv;
+
+ g_free (priv);
+
+ G_OBJECT_CLASS(parent_class)->finalize(object);
+}
+
+static void
+textbox_dispose(GObject *object)
+{
+ G_OBJECT_CLASS(parent_class)->dispose(object);
+}
+
+static void
+textbox_class_init (TextboxClass *klass)
+{
+ GObjectClass *object_class;
+ ItemDataClass *item_data_class;
+
+ parent_class = g_type_class_peek(TYPE_ITEM_DATA);
+ item_data_class = ITEM_DATA_CLASS(klass);
+ object_class = G_OBJECT_CLASS(klass);
+
+ textbox_signals[TEXT_CHANGED] =
+ g_signal_new ("text_changed",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1, G_TYPE_STRING);
+
+ textbox_signals[FONT_CHANGED] =
+ g_signal_new ("font_changed",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1, G_TYPE_STRING);
+
+ object_class->finalize= textbox_finalize;
+ object_class->dispose = textbox_dispose;
+
+ item_data_class->clone = textbox_clone;
+ item_data_class->copy = textbox_copy;
+ item_data_class->rotate = textbox_rotate;
+ item_data_class->flip = textbox_flip;
+ item_data_class->unreg = textbox_unregister;
+ item_data_class->reg = textbox_register;
+ item_data_class->has_properties = textbox_has_properties;
+ item_data_class->print = textbox_print;
+}
+
+static void
+textbox_init (Textbox *textbox)
+{
+ TextboxPriv *priv = g_new0 (TextboxPriv, 1);
+ textbox->priv = priv;
+}
+
+Textbox *
+textbox_new (char *font)
+{
+ Textbox *textbox;
+
+ textbox = TEXTBOX(g_object_new(TYPE_TEXTBOX, NULL));
+
+ if (font == NULL)
+ textbox->priv->font = g_strdup (TEXTBOX_DEFAULT_FONT);
+ else
+ textbox->priv->font = g_strdup (font);
+
+ return textbox;
+}
+
+static ItemData *
+textbox_clone (ItemData *src)
+{
+ Textbox *src_textbox, *new_textbox;
+ ItemDataClass *id_class;
+
+ g_return_val_if_fail (src != NULL, NULL);
+ g_return_val_if_fail (IS_TEXTBOX (src), NULL);
+
+ id_class = ITEM_DATA_CLASS(G_OBJECT_GET_CLASS(src));
+ if (id_class->copy == NULL)
+ return NULL;
+
+ src_textbox = TEXTBOX(src);
+ new_textbox = TEXTBOX(g_object_new(TYPE_TEXTBOX, NULL));
+ id_class->copy (ITEM_DATA (new_textbox), src);
+
+ return ITEM_DATA (new_textbox);
+}
+
+static void
+textbox_copy (ItemData *dest, ItemData *src)
+{
+ Textbox *dest_textbox, *src_textbox;
+
+ g_return_if_fail (dest != NULL);
+ g_return_if_fail (IS_TEXTBOX (dest));
+ g_return_if_fail (src != NULL);
+ g_return_if_fail (IS_TEXTBOX (src));
+
+ if (parent_class->copy != NULL)
+ parent_class->copy (dest, src);
+
+ dest_textbox = TEXTBOX (dest);
+ src_textbox = TEXTBOX (src);
+
+ dest_textbox->priv->text = src_textbox->priv->text;
+ dest_textbox->priv->font = src_textbox->priv->font;
+}
+
+static void
+textbox_rotate (ItemData *data, int angle, SheetPos *center)
+{
+ double affine[6];
+ ArtPoint src, dst;
+ Textbox *textbox;
+ TextboxPriv *priv;
+ SheetPos b1, b2;
+ SheetPos textbox_center, delta;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_TEXTBOX (data));
+
+ if (angle == 0)
+ return;
+
+ textbox = TEXTBOX (data);
+
+ if (center) {
+ item_data_get_absolute_bbox (ITEM_DATA (textbox), &b1, &b2);
+ textbox_center.x = b1.x + (b2.x - b1.x) / 2;
+ textbox_center.y = b1.y + (b2.y - b1.y) / 2;
+ }
+
+ priv = textbox->priv;
+
+ art_affine_rotate (affine, angle);
+
+ /*
+ * Let the views (canvas items) know about the rotation.
+ */
+ g_signal_emit_by_name(G_OBJECT(textbox), "rotated", angle);
+
+ if (center) {
+ SheetPos textbox_pos;
+
+ item_data_get_pos (ITEM_DATA (textbox), &textbox_pos);
+
+ src.x = textbox_center.x - center->x;
+ src.y = textbox_center.y - center->y;
+ art_affine_point (&dst, &src, affine);
+
+ delta.x = -src.x + dst.x;
+ delta.y = -src.y + dst.y;
+
+ item_data_move (ITEM_DATA (textbox), &delta);
+ }
+}
+
+static void
+textbox_flip (ItemData *data, gboolean horizontal, SheetPos *center)
+{
+ double affine[6];
+ ArtPoint src, dst;
+ Textbox *textbox;
+ TextboxPriv *priv;
+ SheetPos b1, b2;
+ SheetPos textbox_center, delta;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_TEXTBOX (data));
+
+ textbox = TEXTBOX (data);
+
+ if (center) {
+ item_data_get_absolute_bbox (ITEM_DATA (textbox), &b1, &b2);
+ textbox_center.x = b1.x + (b2.x - b1.x) / 2;
+ textbox_center.y = b1.y + (b2.y - b1.y) / 2;
+ }
+
+ priv = textbox->priv;
+
+ if (horizontal)
+ art_affine_scale (affine, -1, 1);
+ else
+ art_affine_scale (affine, 1, -1);
+
+ /*
+ * Let the views (canvas items) know about the rotation.
+ */
+ g_signal_emit_by_name(G_OBJECT (textbox), "flipped", horizontal);
+
+ if (center) {
+ SheetPos textbox_pos;
+
+ item_data_get_pos (ITEM_DATA (textbox), &textbox_pos);
+
+ src.x = textbox_center.x - center->x;
+ src.y = textbox_center.y - center->y;
+ art_affine_point (&dst, &src, affine);
+
+ delta.x = -src.x + dst.x;
+ delta.y = -src.y + dst.y;
+
+ item_data_move (ITEM_DATA (textbox), &delta);
+ }
+}
+
+/* static */
+void
+textbox_update_bbox (Textbox *textbox)
+{
+ PangoFontDescription *font;
+ /*
+ Unused variables
+ int width;
+ int rbearing;
+ int lbearing;
+ int ascent, descent;
+ */
+ SheetPos b1, b2;
+ TextboxPriv *priv;
+
+ priv = textbox->priv;
+
+ font = pango_font_description_from_string(priv->font);
+ /* TODO : Find out how to do this with Pango. */
+ /* gdk_string_extents (font,
+ priv->text,
+ &lbearing,
+ &rbearing,
+ &width,
+ &ascent,
+ &descent);
+ gdk_font_unref (font);
+ */
+ b1.x = 0.0;
+ b1.y = 0.0-5; // - font->ascent;
+ b2.x = 0.0+5; // + rbearing;
+ b2.y = 0.0+5; // + font->descent;
+
+ item_data_set_relative_bbox (ITEM_DATA (textbox), &b1, &b2);
+ pango_font_description_free(font);
+}
+
+static gboolean
+textbox_has_properties (ItemData *data)
+{
+ return TRUE;
+}
+
+void
+textbox_set_text (Textbox *textbox, const char *text)
+{
+ g_return_if_fail (textbox != NULL);
+ g_return_if_fail (IS_TEXTBOX (textbox));
+
+ g_free (textbox->priv->text);
+ textbox->priv->text = g_strdup (text);
+
+ textbox_update_bbox (textbox);
+
+ g_signal_emit_by_name (G_OBJECT(textbox), "text_changed", text);
+}
+
+char *
+textbox_get_text (Textbox *textbox)
+{
+ g_return_val_if_fail (textbox != NULL, NULL);
+ g_return_val_if_fail (IS_TEXTBOX (textbox), NULL);
+
+ return textbox->priv->text;
+}
+
+void
+textbox_set_font (Textbox *textbox, char *font)
+{
+ g_return_if_fail (textbox != NULL);
+ g_return_if_fail (IS_TEXTBOX (textbox));
+
+ g_free (textbox->priv->font);
+ if (font == NULL)
+ textbox->priv->font = g_strdup (TEXTBOX_DEFAULT_FONT);
+ else
+ textbox->priv->font = g_strdup (font);
+
+ textbox_update_bbox (textbox);
+
+ g_signal_emit_by_name(G_OBJECT (textbox),
+ "font_changed", textbox->priv->font);
+}
+
+char *
+textbox_get_font (Textbox *textbox)
+{
+ g_return_val_if_fail (textbox != NULL, NULL);
+ g_return_val_if_fail (IS_TEXTBOX (textbox), NULL);
+
+ return textbox->priv->font;
+}
+
+static void
+textbox_print (ItemData *data, cairo_t *cr, SchematicPrintContext *ctx)
+{
+/* GnomeCanvasPoints *line;
+ double x0, y0;
+ ArtPoint dst, src;
+ double affine[6];
+ int i;
+ Textbox *textbox;
+ TextboxPriv *priv;
+ SheetPos pos;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_TEXTBOX (data));
+
+ textbox = TEXTBOX (data);
+ priv = textbox->priv;
+
+ item_data_get_pos (ITEM_DATA (textbox), &pos);
+ src.x = pos.x;
+ src.y = pos.y;
+
+ art_affine_identity (affine);
+
+ gnome_print_setfont(opc->ctx,
+ gnome_font_face_get_font_default(
+ opc->label_font, 6)
+ );
+ print_draw_text (opc->ctx, priv->text, &src);
+ */
+}
+
+static void
+textbox_unregister (ItemData *data)
+{
+ NodeStore *store;
+
+ g_return_if_fail (IS_TEXTBOX (data));
+
+ store = item_data_get_store (data);
+ node_store_remove_textbox (store, TEXTBOX (data));
+}
+
+static int
+textbox_register (ItemData *data)
+{
+ NodeStore *store;
+
+ g_return_val_if_fail (IS_TEXTBOX (data), 0);
+
+ store = item_data_get_store (data);
+ node_store_add_textbox (store, TEXTBOX (data));
+ return 0;
+}
diff --git a/src/model/textbox.h b/src/model/textbox.h
new file mode 100644
index 0000000..72fbb80
--- /dev/null
+++ b/src/model/textbox.h
@@ -0,0 +1,68 @@
+/*
+ * textbox.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __TEXTBOX_H
+#define __TEXTBOX_H
+
+#include <gtk/gtk.h>
+#include "clipboard.h"
+#include "item-data.h"
+
+#define TYPE_TEXTBOX (textbox_get_type ())
+#define TEXTBOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TEXTBOX, Textbox))
+#define TEXTBOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TEXTBOX, TextboxClass))
+#define IS_TEXTBOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TEXTBOX))
+#define IS_TEXTBOX_CLASS(klass) (G_TYPE_CHECK_GET_CLASS ((klass), TYPE_TEXTBOX))
+
+typedef struct _Textbox Textbox;
+typedef struct _TextboxClass TextboxClass;
+typedef struct _TextboxPriv TextboxPriv;
+
+struct _Textbox {
+ ItemData parent;
+ TextboxPriv *priv;
+};
+
+struct _TextboxClass
+{
+ ItemDataClass parent_class;
+
+ Textbox *(*dup) (Textbox *textbox);
+};
+
+GType textbox_get_type (void);
+Textbox *textbox_new (char *font);
+void textbox_set_text (Textbox *textbox, const char *text);
+char *textbox_get_text (Textbox *textbox);
+void textbox_set_font (Textbox *textbox, char *font);
+char *textbox_get_font (Textbox *textbox);
+void textbox_update_bbox (Textbox *textbox);
+
+
+#endif
diff --git a/src/model/wire-private.h b/src/model/wire-private.h
new file mode 100644
index 0000000..28c1ce0
--- /dev/null
+++ b/src/model/wire-private.h
@@ -0,0 +1,45 @@
+/*
+ * wire-private.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __WIRE_PRIVATE_H
+#define __WIRE_PRIVATE_H
+
+struct _WirePriv {
+ /*
+ * Used to traverse the wires during netlist generation.
+ */
+ gboolean visited : 1;
+
+ GSList *nodes;
+
+ SheetPos length;
+ WireDir direction;
+};
+
+#endif
diff --git a/src/model/wire.c b/src/model/wire.c
new file mode 100644
index 0000000..672c410
--- /dev/null
+++ b/src/model/wire.c
@@ -0,0 +1,640 @@
+/*
+ * wire.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <gnome.h>
+#include <math.h>
+#include "item-data.h"
+#include "node-store.h"
+#include "node.h"
+#include "item-data.h"
+#include "wire.h"
+#include "wire-private.h"
+#include "clipboard.h"
+#include "schematic-print-context.h"
+
+static void wire_class_init (WireClass *klass);
+static void wire_init (Wire *wire);
+static void wire_copy (ItemData *dest, ItemData *src);
+static ItemData *wire_clone (ItemData *src);
+static void wire_rotate (ItemData *data, int angle, SheetPos *center);
+static void wire_flip (ItemData *data, gboolean horizontal,
+ SheetPos *center);
+static void wire_unregister (ItemData *data);
+static int wire_register (ItemData *data);
+static gboolean wire_has_properties (ItemData *data);
+static void wire_print (ItemData *data, cairo_t *cr, SchematicPrintContext *ctx);
+
+enum {
+ CHANGED,
+ DELETE,
+ LAST_SIGNAL
+};
+
+static guint wire_signals [LAST_SIGNAL] = { 0 };
+static ItemDataClass *parent_class = NULL;
+
+GType
+wire_get_type (void)
+{
+ static GType wire_type = 0;
+
+ if (!wire_type) {
+ static const GTypeInfo wire_info = {
+ sizeof (WireClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) wire_class_init,
+ NULL,
+ NULL,
+ sizeof (Wire),
+ 0,
+ (GInstanceInitFunc) wire_init,
+ NULL
+ };
+
+ wire_type = g_type_register_static(TYPE_ITEM_DATA,
+ "Wire", &wire_info, 0);
+ }
+
+ return wire_type;
+}
+
+static void
+wire_finalize(GObject *object)
+{
+ Wire *wire = WIRE (object);
+ WirePriv *priv = wire->priv;
+
+ if (priv) {
+ g_slist_free (priv->nodes);
+ g_free (priv);
+ wire->priv = NULL;
+ }
+
+ G_OBJECT_CLASS(parent_class)->finalize (object);
+}
+
+static void
+wire_dispose(GObject *object)
+{
+ G_OBJECT_CLASS(parent_class)->dispose(object);
+}
+
+
+static void
+wire_class_init (WireClass *klass)
+{
+ GObjectClass *object_class;
+ ItemDataClass *item_data_class;
+
+ parent_class = g_type_class_peek (TYPE_ITEM_DATA);
+ item_data_class = ITEM_DATA_CLASS(klass);
+ object_class = G_OBJECT_CLASS(klass);
+
+ object_class->dispose = wire_dispose;
+ object_class->finalize = wire_finalize;
+
+ wire_signals [CHANGED] =
+ g_signal_new ("changed", G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (WireClass, changed),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+
+ wire_signals [DELETE] =
+ g_signal_new ("delete", G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (WireClass, delete),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+
+ item_data_class->clone = wire_clone;
+ item_data_class->copy = wire_copy;
+ item_data_class->rotate = wire_rotate;
+ item_data_class->flip = wire_flip;
+ item_data_class->unreg = wire_unregister;
+ item_data_class->reg = wire_register;
+ item_data_class->has_properties = wire_has_properties;
+ item_data_class->print = wire_print;
+}
+
+static void
+wire_init (Wire *wire)
+{
+ WirePriv *priv = g_new0 (WirePriv, 1);
+
+ /*
+ * For debugging purposes.
+ */
+ priv->length.x = -1;
+ priv->length.y = -1;
+
+ priv->nodes = NULL;
+ priv->visited = FALSE;
+ priv->direction = WIRE_DIR_NONE;
+
+ wire->priv = priv;
+}
+
+Wire *
+wire_new (void)
+{
+ return WIRE(g_object_new(TYPE_WIRE, NULL));
+}
+
+gint
+wire_add_node (Wire *wire, Node *node)
+{
+ WirePriv *priv;
+
+ g_return_val_if_fail (wire != NULL, FALSE);
+ g_return_val_if_fail (IS_WIRE (wire), FALSE);
+ g_return_val_if_fail (node != NULL, FALSE);
+ g_return_val_if_fail (IS_NODE (node), FALSE);
+
+ priv = wire->priv;
+
+ if (g_slist_find (priv->nodes, node)) {
+ return FALSE;
+ }
+
+ priv->nodes = g_slist_prepend (priv->nodes, node);
+ return TRUE;
+}
+
+gint
+wire_remove_node (Wire *wire, Node *node)
+{
+ WirePriv *priv;
+
+ g_return_val_if_fail (wire != NULL, FALSE);
+ g_return_val_if_fail (IS_WIRE (wire), FALSE);
+ g_return_val_if_fail (node != NULL, FALSE);
+ g_return_val_if_fail (IS_NODE (node), FALSE);
+
+ priv = wire->priv;
+
+ if (!g_slist_find (priv->nodes, node)) {
+ return FALSE;
+ }
+
+ priv->nodes = g_slist_remove (priv->nodes, node);
+
+ return TRUE;
+}
+
+GSList *
+wire_get_nodes (Wire *wire)
+{
+ WirePriv *priv;
+
+ g_return_val_if_fail (wire != NULL, FALSE);
+ g_return_val_if_fail (IS_WIRE (wire), FALSE);
+
+ priv = wire->priv;
+
+ return priv->nodes;
+}
+
+void
+wire_get_start_pos (Wire *wire, SheetPos *pos)
+{
+ WirePriv *priv;
+
+ g_return_if_fail (wire != NULL);
+ g_return_if_fail (IS_WIRE (wire));
+ g_return_if_fail (pos != NULL);
+
+ priv = wire->priv;
+
+ item_data_get_pos (ITEM_DATA (wire), pos);
+}
+
+void
+wire_get_end_pos (Wire *wire, SheetPos *pos)
+{
+ WirePriv *priv;
+
+ g_return_if_fail (wire != NULL);
+ g_return_if_fail (IS_WIRE (wire));
+ g_return_if_fail (pos != NULL);
+
+ priv = wire->priv;
+
+ item_data_get_pos (ITEM_DATA (wire), pos);
+
+ pos->x += priv->length.x;
+ pos->y += priv->length.y;
+}
+
+void
+wire_get_pos_and_length (Wire *wire, SheetPos *pos, SheetPos *length)
+{
+ WirePriv *priv;
+
+ g_return_if_fail (wire != NULL);
+ g_return_if_fail (IS_WIRE (wire));
+ g_return_if_fail (pos != NULL);
+
+ priv = wire->priv;
+
+ item_data_get_pos (ITEM_DATA (wire), pos);
+ *length = priv->length;
+}
+
+void
+wire_set_length (Wire *wire, SheetPos *length)
+{
+ WirePriv *priv;
+
+ g_return_if_fail (wire != NULL);
+ g_return_if_fail (IS_WIRE (wire));
+
+ priv = wire->priv;
+
+ priv->length = *length;
+
+ if (length->x == 0) {
+ wire->priv->direction = WIRE_DIR_VERT;
+ } else if (length->y == 0) {
+ wire->priv->direction = WIRE_DIR_HORIZ;
+ } else {
+ wire->priv->direction = WIRE_DIR_DIAG;
+ }
+
+ g_signal_emit_by_name (G_OBJECT (wire), "changed");
+}
+
+gint
+wire_is_visited (Wire *wire)
+{
+ WirePriv *priv;
+
+ g_return_val_if_fail (wire != NULL, FALSE);
+ g_return_val_if_fail (IS_WIRE (wire), FALSE);
+
+ priv = wire->priv;
+
+ return priv->visited;
+}
+
+void
+wire_set_visited (Wire *wire, gboolean is_visited)
+{
+ WirePriv *priv;
+
+ g_return_if_fail (wire != NULL);
+ g_return_if_fail (IS_WIRE (wire));
+
+ priv = wire->priv;
+
+ priv->visited = is_visited;
+}
+
+static ItemData *
+wire_clone (ItemData *src)
+{
+ Wire *src_wire, *new_wire;
+ ItemDataClass *id_class;
+
+ g_return_val_if_fail (src != NULL, NULL);
+ g_return_val_if_fail (IS_WIRE (src), NULL);
+
+ id_class = ITEM_DATA_CLASS (G_OBJECT_GET_CLASS(src));
+ if (id_class->copy == NULL)
+ return NULL;
+
+ src_wire = WIRE (src);
+ new_wire = g_object_new (TYPE_WIRE, NULL);
+ id_class->copy (ITEM_DATA (new_wire), src);
+
+ return ITEM_DATA (new_wire);
+}
+
+static void
+wire_copy (ItemData *dest, ItemData *src)
+{
+ Wire *dest_wire, *src_wire;
+
+ g_return_if_fail (dest != NULL);
+ g_return_if_fail (IS_WIRE (dest));
+ g_return_if_fail (src != NULL);
+ g_return_if_fail (IS_WIRE (src));
+
+ if (parent_class->copy != NULL)
+ parent_class->copy (dest, src);
+
+ dest_wire = WIRE (dest);
+ src_wire = WIRE (src);
+
+ dest_wire->priv->nodes = NULL;
+ dest_wire->priv->length = src_wire->priv->length;
+}
+
+/* static */ void wire_update_bbox (Wire *wire);
+
+static void
+wire_rotate (ItemData *data, int angle, SheetPos *center)
+{
+ double affine[6], dx, dy;
+ ArtPoint src, dst;
+ Wire *wire;
+ WirePriv *priv;
+ SheetPos b1, b2;
+ SheetPos wire_center_before, wire_center_after, delta;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_WIRE (data));
+
+ if (angle == 0)
+ return;
+
+ wire = WIRE (data);
+
+ if (center) {
+ item_data_get_absolute_bbox (ITEM_DATA (wire), &b1, &b2);
+ wire_center_before.x = b1.x + (b2.x - b1.x) / 2;
+ wire_center_before.y = b1.y + (b2.y - b1.y) / 2;
+ }
+
+ priv = wire->priv;
+
+ if (priv->direction == WIRE_DIR_VERT) {
+ priv->direction = WIRE_DIR_HORIZ;
+ } else if (priv->direction == WIRE_DIR_HORIZ) {
+ priv->direction = WIRE_DIR_VERT;
+ }
+
+ art_affine_rotate (affine, angle);
+
+ /*
+ * Rotate the wire's end point.
+ */
+ src.x = priv->length.x;
+ src.y = priv->length.y;
+
+ art_affine_point (&dst, &src, affine);
+
+ if (fabs (dst.x) < 1e-2)
+ dst.x = 0.0;
+ if (fabs (dst.y) < 1e-2)
+ dst.y = 0.0;
+
+ /*
+ * 'Normalize'.
+ */
+ if (dst.y < 0 ||
+ (dst.y == 0 && dst.x < 0)) {
+ priv->length.x = -dst.x;
+ priv->length.y = -dst.y;
+ delta.x = -dst.x;
+ delta.y = -dst.y;
+
+ item_data_move (ITEM_DATA (wire), &delta);
+ } else {
+ priv->length.x = dst.x;
+ priv->length.y = dst.y;
+ }
+
+ /*
+ * Let the views (canvas items) know about the rotation.
+ */
+ g_signal_emit_by_name (G_OBJECT (wire), "rotated", angle);
+
+ /*
+ * Update bounding box.
+ */
+ wire_update_bbox (wire);
+
+ if (center) {
+ SheetPos wire_pos;
+
+ item_data_get_absolute_bbox (ITEM_DATA (wire), &b1, &b2);
+
+ wire_center_after.x = b1.x + (b2.x - b1.x) / 2;
+ wire_center_after.y = b1.y + (b2.y - b1.y) / 2;
+
+ dx = wire_center_before.x - wire_center_after.x;
+ dy = wire_center_before.y - wire_center_after.y;
+
+ item_data_get_pos (ITEM_DATA (wire), &wire_pos);
+
+ src.x = wire_center_before.x - center->x;
+ src.y = wire_center_before.y - center->y;
+ art_affine_point (&dst, &src, affine);
+
+ delta.x = dx - src.x + dst.x;
+ delta.y = dy - src.y + dst.y;
+
+ item_data_move (ITEM_DATA (wire), &delta);
+ }
+}
+
+static void
+wire_flip (ItemData *data, gboolean horizontal, SheetPos *center)
+{
+ Wire *wire;
+ WirePriv *priv;
+ SheetPos b1, b2, delta;
+ double affine[6];
+ ArtPoint src, dst;
+ SheetPos wire_center_before, wire_center_after;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_WIRE (data));
+
+ wire = WIRE (data);
+ priv = wire->priv;
+
+ if (horizontal)
+ art_affine_scale (affine, -1, 1);
+ else
+ art_affine_scale (affine, 1, -1);
+
+ /*
+ * Flip the wire's end point.
+ */
+ src.x = priv->length.x;
+ src.y = priv->length.y;
+
+ art_affine_point (&dst, &src, affine);
+
+ if (fabs (dst.x) < 1e-2)
+ dst.x = 0.0;
+ if (fabs (dst.y) < 1e-2)
+ dst.y = 0.0;
+
+ /*
+ * 'Normalize'.
+ */
+ if (dst.y < 0 ||
+ (dst.y == 0 && dst.x < 0)) {
+ priv->length.x = -dst.x;
+ priv->length.y = -dst.y;
+ delta.x = -dst.x;
+ delta.y = -dst.y;
+
+ item_data_move (ITEM_DATA (wire), &delta);
+ } else {
+ priv->length.x = dst.x;
+ priv->length.y = dst.y;
+ }
+
+ /*
+ * Tell the views.
+ */
+ g_signal_emit_by_name (G_OBJECT (wire), "flipped", horizontal);
+
+ if (center) {
+ item_data_get_relative_bbox (ITEM_DATA (wire), &b1, &b2);
+ wire_center_before.x = b1.x + (b2.x - b1.x) / 2;
+ wire_center_before.y = b1.y + (b2.y - b1.y) / 2;
+ }
+
+ /*
+ * Flip the bounding box.
+ */
+ src.x = b1.x;
+ src.y = b1.y;
+ art_affine_point (&dst, &src, affine);
+ b1.x = dst.x;
+ b1.y = dst.y;
+
+ src.x = b2.x;
+ src.y = b2.y;
+ art_affine_point (&dst, &src, affine);
+ b2.x = dst.x;
+ b2.y = dst.y;
+
+ item_data_set_relative_bbox (ITEM_DATA (wire), &b1, &b2);
+
+ if (center) {
+ SheetPos wire_pos, delta;
+ double dx, dy;
+
+ wire_center_after.x = b1.x + (b2.x - b1.x) / 2;
+ wire_center_after.y = b1.y + (b2.y - b1.y) / 2;
+
+ dx = wire_center_before.x - wire_center_after.x;
+ dy = wire_center_before.y - wire_center_after.y;
+
+ item_data_get_pos (ITEM_DATA (wire), &wire_pos);
+
+ src.x = wire_center_before.x - center->x + wire_pos.x;
+ src.y = wire_center_before.y - center->y + wire_pos.y;
+ art_affine_point (&dst, &src, affine);
+
+ delta.x = dx - src.x + dst.x;
+ delta.y = dy - src.y + dst.y;
+
+ item_data_move (ITEM_DATA (wire), &delta);
+ }
+}
+
+/* static */
+void
+wire_update_bbox (Wire *wire)
+{
+ SheetPos b1, b2, pos, length;
+ WirePriv *priv;
+
+ priv = wire->priv;
+
+ wire_get_pos_and_length (wire, &pos, &length);
+
+ b1.x = b1.y = 0.0;
+ b2 = length;
+
+ item_data_set_relative_bbox (ITEM_DATA (wire), &b1, &b2);
+}
+
+static gboolean
+wire_has_properties (ItemData *data)
+{
+ return FALSE;
+}
+
+static void
+wire_unregister (ItemData *data)
+{
+ NodeStore *store;
+
+ g_return_if_fail (IS_WIRE (data));
+
+ store = item_data_get_store (data);
+ node_store_remove_wire (store, WIRE (data));
+}
+
+static int
+wire_register (ItemData *data)
+{
+ NodeStore *store;
+
+ g_return_val_if_fail (IS_WIRE (data), -1);
+
+ store = item_data_get_store (data);
+ return node_store_add_wire (store, WIRE (data));
+}
+
+static void
+wire_print (ItemData *data, cairo_t *cr, SchematicPrintContext *ctx)
+{
+ SheetPos start_pos, end_pos;
+ Wire *wire;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_WIRE (data));
+
+ wire = WIRE (data);
+
+ wire_get_start_pos (wire, &start_pos);
+ wire_get_end_pos (wire, &end_pos);
+
+ cairo_save (cr);
+ gdk_cairo_set_source_color (cr, &ctx->colors.wires);
+ cairo_move_to (cr, start_pos.x, start_pos.y);
+ cairo_line_to (cr, end_pos.x, end_pos.y);
+ cairo_stroke (cr);
+ cairo_restore (cr);
+}
+
+void wire_delete (Wire *wire)
+{
+ g_return_if_fail (IS_WIRE (wire));
+
+ g_signal_emit_by_name (G_OBJECT (wire), "delete");
+}
+
diff --git a/src/model/wire.h b/src/model/wire.h
new file mode 100644
index 0000000..b33731b
--- /dev/null
+++ b/src/model/wire.h
@@ -0,0 +1,87 @@
+/*
+ * wire.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __WIRE_H
+#define __WIRE_H
+
+#include <gnome.h>
+#include "sheet-pos.h"
+#include "clipboard.h"
+#include "item-data.h"
+
+#define TYPE_WIRE (wire_get_type ())
+#define WIRE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_WIRE, Wire))
+#define WIRE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_WIRE, WireClass))
+#define IS_WIRE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_WIRE))
+#define IS_WIRE_CLASS(klass) (G_TYPE_INSTANCE_GET_CLASS ((klass), TYPE_WIRE))
+
+typedef struct _Wire Wire;
+typedef struct _WireClass WireClass;
+typedef struct _WirePriv WirePriv;
+
+#include "node-store.h"
+#include "node.h"
+
+typedef enum {
+ WIRE_DIR_NONE = 0,
+ WIRE_DIR_HORIZ = 1,
+ WIRE_DIR_VERT = 2,
+ WIRE_DIR_DIAG = 3
+} WireDir;
+
+struct _Wire {
+ ItemData parent;
+ WirePriv *priv;
+};
+
+struct _WireClass
+{
+ ItemDataClass parent_class;
+
+ Wire *(*dup) (Wire *wire);
+ void (*changed) ();
+ void (*delete) ();
+};
+
+GType wire_get_type (void);
+Wire *wire_new (void);
+NodeStore *wire_get_store (Wire *wire);
+gint wire_set_store (Wire *wire, NodeStore *store);
+gint wire_add_node (Wire *wire, Node *node);
+gint wire_remove_node (Wire *wire, Node *node);
+GSList * wire_get_nodes (Wire *wire);
+void wire_get_start_pos (Wire *wire, SheetPos *pos);
+void wire_get_end_pos (Wire *wire, SheetPos *pos);
+void wire_get_pos_and_length (Wire *wire, SheetPos *pos, SheetPos *length);
+void wire_set_length (Wire *wire, SheetPos *length);
+gint wire_is_visited (Wire *wire);
+void wire_set_visited (Wire *wire, gboolean is_visited);
+void wire_delete (Wire *wire);
+
+#endif
diff --git a/src/netlist-editor.c b/src/netlist-editor.c
new file mode 100644
index 0000000..35365d4
--- /dev/null
+++ b/src/netlist-editor.c
@@ -0,0 +1,429 @@
+/*
+ * netlist-editor.c
+ *
+ *
+ * Author:
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 2004-2008 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include "netlist-editor.h"
+#include "netlist.h"
+#include "simulation.h"
+#include "file.h"
+#include <glade/glade.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <gnome.h>
+#include <gtksourceview/gtksourcelanguagemanager.h>
+
+static void netlist_editor_finalize (GObject *object);
+static void netlist_editor_dispose (GObject *object);
+static void netlist_editor_class_init (NetlistEditorClass *klass);
+static void netlist_editor_finalize (GObject *object);
+void netlist_editor_init (NetlistEditor *nle);
+
+static GObjectClass *parent_class = NULL;
+
+struct _NetlistEditorPriv {
+ SchematicView *sv;
+ gchar * font;
+ GdkColor bgcolor, selectcolor, textcolor;
+ GtkSourceLanguageManager *lm;
+ GtkTextView *view;
+ GtkSourceBuffer *buffer;
+ GtkWindow *toplevel;
+ GtkButton *sim, *save, *close;
+};
+
+static void
+netlist_editor_class_init (NetlistEditorClass *klass) {
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS(klass);
+ parent_class = g_type_class_peek_parent(klass);
+
+ object_class->finalize = netlist_editor_finalize;
+ object_class->dispose = netlist_editor_dispose;
+}
+
+static void
+netlist_editor_finalize (GObject *object)
+{
+ NetlistEditor *nle = NETLIST_EDITOR (object);
+
+ if (nle->priv) {
+ /* kill the priv struct */
+ if (nle->priv->toplevel) {
+ gtk_widget_destroy (GTK_WIDGET (nle->priv->toplevel));
+ nle->priv->toplevel = NULL;
+ }
+
+ g_free (nle->priv);
+ }
+
+ G_OBJECT_CLASS(parent_class)->finalize(object);
+}
+
+static void
+netlist_editor_dispose (GObject *object)
+{
+ NetlistEditor *nle = NETLIST_EDITOR(object);
+
+ if (nle->priv) {
+ }
+ G_OBJECT_CLASS(parent_class)->dispose(object);
+}
+
+GType
+netlist_editor_get_type (void)
+{
+ static GType netlist_editor_type = 0;
+
+ if (!netlist_editor_type) {
+ static const GTypeInfo netlist_editor_info = {
+ sizeof(NetlistEditorClass),
+ NULL,
+ NULL,
+ (GClassInitFunc)netlist_editor_class_init,
+ NULL,
+ NULL,
+ sizeof(NetlistEditor),
+ 0,
+ (GInstanceInitFunc)netlist_editor_init,
+ NULL
+ };
+ netlist_editor_type = g_type_register_static(G_TYPE_OBJECT,
+ "NetlistEditor",
+ &netlist_editor_info, 0);
+ }
+ return netlist_editor_type;
+}
+
+void
+netlist_editor_get_config (NetlistEditor * nle)
+{
+ GConfClient *gconf_client;
+
+ gconf_client = gconf_client_get_default ();
+
+ if (gconf_client) {
+ g_object_unref (gconf_client);
+ }
+}
+
+void
+netlist_editor_set_config (NetlistEditor * nle)
+{
+ GConfClient *gconf_client;
+
+ gconf_client = gconf_client_get_default ();
+
+ if (gconf_client) {
+ g_object_unref (gconf_client);
+ }
+}
+
+void
+netlist_editor_print (GtkWidget * widget, NetlistEditor * nle)
+{
+
+}
+
+void
+netlist_editor_simulate (GtkWidget * widget, NetlistEditor * nle)
+{
+ Schematic *sm;
+ gchar *name;
+ GtkTextView *tview;
+ GtkTextBuffer *buffer;
+ GtkTextIter start, end;
+ FILE *fp;
+ GError *error = 0;
+ OreganoEngine *engine;
+
+ // FIXME: OreganoEngine now override the netlist when start!
+ return;
+
+ tview = nle->priv->view;
+ buffer = gtk_text_view_get_buffer (tview);
+
+ gtk_text_buffer_get_start_iter (buffer, &start);
+ gtk_text_buffer_get_end_iter (buffer, &end);
+
+ sm = schematic_view_get_schematic (nle->priv->sv);
+ //name = nl_generate (sm, NULL, &error);
+
+ if (error != NULL) {
+ if (g_error_matches (error, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_NO_CLAMP) ||
+ g_error_matches (error, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_NO_GND) ||
+ g_error_matches (error, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_IO_ERROR)) {
+ oregano_error_with_title (_("Could not create a netlist"), error->message);
+ g_clear_error (&error);
+ } else {
+ oregano_error (
+ _("An unexpected error has occurred"));
+ }
+ return;
+ }
+
+ /* Save TextBuffer to 'name' */
+ fp = fopen (name, "wt");
+ if (!fp) {
+ gchar *msg;
+ msg = g_strdup_printf (_("The file %s could not be saved"), name);
+ oregano_error_with_title (_("Could not save temporary netlist file"), msg);
+ g_free (msg);
+ return;
+ }
+
+ fputs (gtk_text_buffer_get_text (buffer, &start, &end, FALSE), fp);
+ fclose (fp);
+
+ schematic_set_netlist_filename (sm, name);
+ simulation_show (NULL, nle->priv->sv);
+ g_free (name);
+}
+
+void
+netlist_editor_save (GtkWidget * widget, NetlistEditor * nle)
+{
+ char *name;
+
+ name = dialog_netlist_file ((SchematicView *)NULL);
+
+ if (name != NULL) {
+ GtkTextView *tview;
+ GtkTextBuffer *buffer;
+ GtkTextIter start, end;
+ FILE *fp;
+
+ tview = nle->priv->view;
+ buffer = gtk_text_view_get_buffer (tview);
+
+ gtk_text_buffer_get_start_iter (buffer, &start);
+ gtk_text_buffer_get_end_iter (buffer, &end);
+
+ fp = fopen (name, "wt");
+ if (!fp) {
+ gchar *msg;
+ msg = g_strdup_printf (_("The file %s could not be saved"), name);
+ oregano_error_with_title (_("Could not save temporary netlist file"), msg);
+ g_free (msg);
+ return;
+ }
+
+ fputs (gtk_text_buffer_get_text (buffer, &start, &end, FALSE), fp);
+ fclose (fp);
+
+ g_free (name);
+ }
+}
+
+/* This method append OREGANO_LANGDIR directory where the netlist.lang file
+ * is located to the search path of GtkSourceLanguageManager.
+ */
+void
+setup_language_manager_path(GtkSourceLanguageManager *lm)
+{
+ gchar **lang_files;
+ int i, lang_files_count;
+ char **new_langs;
+
+ lang_files = g_strdupv (gtk_source_language_manager_get_search_path (lm));
+
+ lang_files_count = g_strv_length (lang_files);
+ new_langs = g_new (char*, lang_files_count + 2);
+
+ for (i = 0; lang_files[i]; i++)
+ new_langs[i] = lang_files[i];
+
+ new_langs[lang_files_count] = g_strdup (OREGANO_LANGDIR);
+ new_langs[lang_files_count+1] = NULL;
+
+ g_free (lang_files);
+
+ gtk_source_language_manager_set_search_path (lm, new_langs);
+}
+
+NetlistEditor *
+netlist_editor_new (GtkSourceBuffer * textbuffer) {
+ gchar** lang_files;
+ NetlistEditor * nle;
+ GladeXML * gui;
+ GtkWidget * toplevel;
+ GtkScrolledWindow * scroll;
+ GtkSourceView * source_view;
+ GtkSourceLanguageManager * lm;
+ GtkButton * save, * sim, * close, * print;
+ GtkSourceLanguage *lang=NULL;
+ const GSList *list;
+
+ if (!textbuffer)
+ return NULL;
+
+ nle = NETLIST_EDITOR (g_object_new (netlist_editor_get_type (), NULL));
+
+ netlist_editor_get_config (nle);
+
+ if (!g_file_test (OREGANO_GLADEDIR "/view-netlist.glade", G_FILE_TEST_EXISTS)) {
+ gchar *msg;
+ msg = g_strdup_printf (
+ _("The file %s could not be found. You might need to reinstall Oregano to fix this."),
+ OREGANO_GLADEDIR "/view-netlist.glade");
+ oregano_error_with_title (_("Could not create the netlist dialog"), msg);
+ g_free (msg);
+ return NULL;
+ }
+
+ gui = glade_xml_new (OREGANO_GLADEDIR "/view-netlist.glade", NULL, NULL);
+
+ toplevel = glade_xml_get_widget (gui, "toplevel");
+ gtk_window_set_default_size (GTK_WINDOW (toplevel), 800, 600);
+ gtk_window_set_title (GTK_WINDOW (toplevel), "Net List Editor\n");
+
+ scroll = GTK_SCROLLED_WINDOW (glade_xml_get_widget (gui, "netlist-scrolled-window"));
+
+ source_view = GTK_SOURCE_VIEW (gtk_source_view_new ());
+ lm = GTK_SOURCE_LANGUAGE_MANAGER (gtk_source_language_manager_new ());
+
+ setup_language_manager_path (lm);
+
+ g_object_set_data_full (G_OBJECT (source_view), "language-manager",
+ lm, (GDestroyNotify) g_object_unref);
+
+ lang = gtk_source_language_manager_get_language (lm, "netlist");
+
+ if (lang) {
+ gtk_source_buffer_set_language (GTK_SOURCE_BUFFER (textbuffer), lang);
+ gtk_source_buffer_set_highlight_syntax (GTK_SOURCE_BUFFER (textbuffer), TRUE);
+ gtk_source_buffer_set_highlight_matching_brackets (GTK_SOURCE_BUFFER (textbuffer), TRUE);
+ } else {
+ g_warning ("Can't load netlist.lang in %s", OREGANO_LANGDIR "/netlist.lang");
+ }
+
+ gtk_text_view_set_editable (GTK_TEXT_VIEW (source_view), TRUE);
+ gtk_text_view_set_buffer (GTK_TEXT_VIEW (source_view), GTK_TEXT_BUFFER (textbuffer));
+
+ gtk_container_add (GTK_CONTAINER (scroll), GTK_WIDGET (source_view));
+
+ close = GTK_BUTTON (glade_xml_get_widget (gui, "btn_close"));
+ g_signal_connect_swapped (G_OBJECT (close), "clicked", G_CALLBACK (g_object_unref), G_OBJECT (nle));
+ save = GTK_BUTTON (glade_xml_get_widget (gui, "btn_save"));
+ g_signal_connect (G_OBJECT (save), "clicked", G_CALLBACK (netlist_editor_save), nle);
+ sim = GTK_BUTTON (glade_xml_get_widget (gui, "btn_sim"));
+ g_signal_connect (G_OBJECT (sim), "clicked", G_CALLBACK (netlist_editor_simulate), nle);
+ print = GTK_BUTTON (glade_xml_get_widget (gui, "btn_print"));
+ g_signal_connect (G_OBJECT (print), "clicked", G_CALLBACK (netlist_editor_print), nle);
+ /*
+ * Set tab, fonts, wrap mode, colors, etc. according
+ * to preferences
+ */
+
+ nle->priv->lm = lm;
+ nle->priv->view = GTK_TEXT_VIEW (source_view);
+ nle->priv->toplevel = GTK_WINDOW (toplevel);
+ nle->priv->sim = sim;
+ nle->priv->save = save;
+ nle->priv->close = close;
+ nle->priv->buffer = textbuffer;
+
+ gtk_widget_show_all (GTK_WIDGET (toplevel));
+
+ return nle;
+}
+
+NetlistEditor *
+netlist_editor_new_from_file (gchar * filename)
+{
+ GtkSourceBuffer *buffer;
+ gchar *content;
+ gsize length;
+ GError *error = NULL;
+ NetlistEditor *editor;
+
+ if (!filename)
+ return NULL;
+ if (!(g_file_test (filename, G_FILE_TEST_EXISTS))) {
+ gchar *msg;
+ /* gettext support */
+ msg = g_strdup_printf (_("The file %s could not be found."), filename);
+ oregano_error_with_title (_("Could not find the required file"), msg);
+ g_free (msg);
+ return NULL;
+ }
+
+ buffer = gtk_source_buffer_new (NULL);
+ g_file_get_contents (filename, &content, &length, &error);
+ gtk_text_buffer_set_text (GTK_TEXT_BUFFER (buffer), content, -1);
+
+ editor = netlist_editor_new (buffer);
+
+ return editor;
+}
+
+void
+netlist_editor_init (NetlistEditor * nle) {
+ nle->priv = g_new0 (NetlistEditorPriv, 1);
+
+ nle->priv->toplevel = NULL;
+ nle->priv->sv = NULL;
+ /*nle->priv->source_view = NULL;
+ nle->priv->bgcolor = 1;
+ nle->priv->selectcolor = 0;
+ nle->priv->textcolor = 0;*/
+}
+
+NetlistEditor *
+netlist_editor_new_from_schematic_view (SchematicView *sv)
+{
+ NetlistEditor *editor;
+ gchar *name = "/tmp/oregano.netlist"; // FIXME
+ GError *error = 0;
+ Schematic *sm;
+ OreganoEngine *engine;
+
+ sm = schematic_view_get_schematic (sv);
+
+ engine = oregano_engine_factory_create_engine (OREGANO_ENGINE_GNUCAP, sm);
+ oregano_engine_generate_netlist (engine, name, &error);
+ g_object_unref (engine);
+
+ if (error != NULL) {
+ if (g_error_matches (error, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_NO_CLAMP) ||
+ g_error_matches (error, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_NO_GND) ||
+ g_error_matches (error, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_IO_ERROR)) {
+ oregano_error_with_title (_("Could not create a netlist"), error->message);
+ g_clear_error (&error);
+ } else {
+ oregano_error (_("An unexpected error has occurred"));
+ }
+ return NULL;
+ }
+
+ editor = netlist_editor_new_from_file (name);
+ if (editor) {
+ editor->priv->sv = sv;
+ }
+
+ return editor;
+}
+
diff --git a/src/netlist-editor.h b/src/netlist-editor.h
new file mode 100644
index 0000000..36ed5ea
--- /dev/null
+++ b/src/netlist-editor.h
@@ -0,0 +1,66 @@
+/*
+ * netlist-editor.h
+ *
+ *
+ * Author:
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 2004-2008 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#ifndef __NETLIST_EDIT_H
+#define __NETLIST_EDIT_H
+
+#include <gconf/gconf-client.h>
+#include <gtk/gtk.h>
+#include <gtksourceview/gtksourceview.h>
+#include "schematic-view.h"
+#include "errors.h"
+#include "engine.h"
+
+#define TYPE_NETLIST_EDITOR (netlist_editor_get_type ())
+#define NETLIST_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_NETLIST_EDITOR, NetlistEditor))
+#define NETLIST_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_NETLIST_EDITOR, NetlistEditorClass))
+#define IS_NETLIST_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_NETLIST_EDITOR))
+#define IS_NETLIST_EDITOR_CLASS(klass) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_NETLIST_EDITOR, NetlistEditorClass))
+
+
+typedef struct _NetlistEditor NetlistEditor;
+typedef struct _NetlistEditorClass NetlistEditorClass;
+typedef struct _NetlistEditorPriv NetlistEditorPriv;
+
+struct _NetlistEditor {
+ GObject parent;
+
+ NetlistEditorPriv *priv;
+};
+
+struct _NetlistEditorClass {
+ GObjectClass parent_class;
+
+ /* Signals go here */
+};
+
+GType netlist_editor_get_type (void);
+NetlistEditor *netlist_editor_new_from_file (gchar * filename);
+NetlistEditor *netlist_editor_new_from_schematic_view (SchematicView *sv);
+NetlistEditor *netlist_editor_new (GtkSourceBuffer * textbuffer);
+
+#endif
diff --git a/src/oregano-config.c b/src/oregano-config.c
new file mode 100644
index 0000000..251d6e4
--- /dev/null
+++ b/src/oregano-config.c
@@ -0,0 +1,173 @@
+/*
+ * oregano-config.c
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <sys/types.h>
+#include <dirent.h>
+#include <gconf/gconf-client.h>
+#include <string.h>
+
+#include "main.h"
+#include "oregano-config.h"
+#include "load-library.h"
+#include "dialogs.h"
+#include "engine.h"
+
+#define OREGLIB_EXT "oreglib"
+
+static gboolean is_oregano_library_name (gchar* name);
+static void load_library_error (gchar *name);
+
+void
+oregano_config_load (void)
+{
+ GConfClient * gconf;
+
+ gconf = gconf_client_get_default ();
+
+ oregano.engine = gconf_client_get_int (gconf, "/apps/oregano/engine",
+ NULL);
+ oregano.compress_files = gconf_client_get_bool (gconf, "/apps/oregano/compress_files",
+ NULL);
+ oregano.show_log = gconf_client_get_bool (gconf, "/apps/oregano/show_log",
+ NULL);
+ oregano.show_splash = gconf_client_get_bool (gconf, "/apps/oregano/show_splash",
+ NULL);
+
+ g_object_unref (gconf);
+
+ /* Let's deal with first use -I don't like this- */
+
+ if ((oregano.engine < 0) || (oregano.engine >= OREGANO_ENGINE_COUNT))
+ oregano.engine = 0;
+}
+
+void
+oregano_config_save (void)
+{
+ GConfClient * gconf;
+
+ gconf = gconf_client_get_default ();
+
+ gconf_client_set_int (gconf, "/apps/oregano/engine", oregano.engine,
+ NULL);
+ gconf_client_set_bool (gconf, "/apps/oregano/compress_files", oregano.compress_files,
+ NULL);
+ gconf_client_set_bool (gconf, "/apps/oregano/show_log", oregano.show_log,
+ NULL);
+ gconf_client_set_bool (gconf, "/apps/oregano/show_splash", oregano.show_splash,
+ NULL);
+
+ g_object_unref (gconf);
+}
+
+void
+oregano_lookup_libraries (Splash *sp)
+{
+ gchar *fname;
+ DIR *libdir;
+ struct dirent *libentry;
+ Library *library;
+
+ oregano.libraries = NULL;
+ libdir = opendir (OREGANO_LIBRARYDIR);
+
+ if (libdir == NULL) return;
+
+ if (oregano.libraries != NULL) {
+ closedir (libdir);
+ return;
+ }
+
+ fname = g_build_filename (OREGANO_LIBRARYDIR, "default.oreglib", NULL);
+
+ if (g_file_test (fname, G_FILE_TEST_EXISTS)) {
+ library = library_parse_xml_file (fname);
+ oregano.libraries = g_list_append (oregano.libraries, library);
+ }
+ g_free (fname);
+
+ while ((libentry=readdir (libdir)) != NULL) {
+ if (is_oregano_library_name (libentry->d_name) &&
+ strcmp (libentry->d_name,"default.oreglib")) {
+ fname = g_build_filename (OREGANO_LIBRARYDIR, libentry->d_name, NULL);
+
+ /* do the following only if splash is enabled */
+ if (sp) {
+ char txt[50];
+ sprintf (txt, _("Loading %s ..."), libentry->d_name);
+
+ oregano_splash_step (sp, txt);
+ }
+
+ library = library_parse_xml_file (fname);
+
+ if (library)
+ oregano.libraries = g_list_append ( oregano.libraries, library);
+ else
+ load_library_error (fname);
+
+ g_free(fname);
+ }
+ }
+ closedir (libdir);
+}
+
+/*
+ * Helpers
+ */
+
+static gboolean
+is_oregano_library_name (gchar *name)
+{
+ gchar *dot;
+ dot = strchr (name, '.');
+ if (dot == NULL || dot[1] == '\0')
+ return FALSE;
+
+ dot++; /* Points to the extension. */
+
+ if (strcmp (dot, OREGLIB_EXT) == 0)
+ return TRUE;
+
+ return FALSE;
+}
+
+static void
+load_library_error (gchar *name)
+{
+ gchar *title, *desc;
+ title = g_strdup_printf (_("Could not read the parts library: %s "), name);
+ desc = g_strdup_printf (_(
+ "The file is probably corrupt. Please reinstall the parts\n"
+ "library or Oregano and try again."));
+ oregano_error_with_title (title, desc);
+ g_free (title);
+ g_free (desc);
+}
diff --git a/src/oregano-config.h b/src/oregano-config.h
new file mode 100644
index 0000000..52ce7f0
--- /dev/null
+++ b/src/oregano-config.h
@@ -0,0 +1,45 @@
+/*
+ * oregano-config.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __OREGANO_CONFIG_H
+#define __OREGANO_CONFIG_H
+
+#include "splash.h"
+
+void oregano_config_load (void);
+void oregano_config_save (void);
+
+/*
+ * Feb 2000, Elker Cavina <e.cavina@libero.it>
+ * perhaps make the oregano global variable pass through these functions ?
+ */
+
+void oregano_lookup_libraries (Splash *sp);
+
+#endif
diff --git a/src/oregano-convert b/src/oregano-convert
new file mode 100755
index 0000000..a6251f3
--- /dev/null
+++ b/src/oregano-convert
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+
+# Fix the namespace.
+while (<>) {
+ if (/<schematic/) {
+ s/</<ogo:/;
+ s/>/ xmlns:ogo="http:\/\/www.dtek.chalmers.se\/~d4hult\/oregano\/v1">/;
+ print;
+ last;
+ }
+
+ if (/<schematic/) {
+ print;
+ last;
+ }
+
+ print;
+}
+
+# Add namespace to tags.
+while (<>) {
+
+ if (/<[a-zA-Z]/) {
+ s/</<ogo:/;
+ }
+
+ s/<\//<\/ogo:/;
+ print;
+}
+
+
diff --git a/src/oregano-impl.c b/src/oregano-impl.c
new file mode 100644
index 0000000..942454c
--- /dev/null
+++ b/src/oregano-impl.c
@@ -0,0 +1,140 @@
+/*
+ * oregano-impl.c
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#include "oregano.h"
+
+/*** App-specific servant structures ***/
+typedef struct
+{
+ POA_GNOME_Oregano_Sheet servant;
+ PortableServer_POA poa;
+} impl_POA_GNOME_Oregano_Sheet;
+
+/*** Implementation stub prototypes ***/
+static void impl_GNOME_Oregano_Sheet__destroy(impl_POA_GNOME_Oregano_Sheet *
+ servant, CORBA_Environment * ev);
+
+static void impl_GNOME_Oregano_Sheet_select_all(impl_POA_GNOME_Oregano_Sheet *
+ servant, CORBA_Environment * ev);
+
+static CORBA_boolean
+impl_GNOME_Oregano_Sheet_is_all_selected(impl_POA_GNOME_Oregano_Sheet *
+ servant, CORBA_Environment * ev);
+
+static GNOME_Oregano_Sheet
+impl_GNOME_Oregano_Sheet_sheet_load(impl_POA_GNOME_Oregano_Sheet * servant,
+ CORBA_char * name, CORBA_Environment * ev);
+
+/*** epv structures ***/
+static PortableServer_ServantBase__epv impl_GNOME_Oregano_Sheet_base_epv = {
+ NULL, /* _private data */
+ NULL, /* finalize routine */
+ NULL, /* default_POA routine */
+};
+
+static POA_GNOME_Oregano_Sheet__epv impl_GNOME_Oregano_Sheet_epv = {
+ NULL, /* _private */
+ (gpointer) & impl_GNOME_Oregano_Sheet_select_all,
+
+ (gpointer) & impl_GNOME_Oregano_Sheet_is_all_selected,
+
+ (gpointer) & impl_GNOME_Oregano_Sheet_sheet_load,
+
+};
+
+/*** vepv structures ***/
+static POA_GNOME_Oregano_Sheet__vepv impl_GNOME_Oregano_Sheet_vepv = {
+ &impl_GNOME_Oregano_Sheet_base_epv,
+ &impl_GNOME_Oregano_Sheet_epv,
+};
+
+/*** Stub implementations ***/
+GNOME_Oregano_Sheet
+impl_GNOME_Oregano_Sheet__create(PortableServer_POA poa, CORBA_Environment * ev)
+{
+ GNOME_Oregano_Sheet retval;
+ impl_POA_GNOME_Oregano_Sheet *newservant;
+ PortableServer_ObjectId *objid;
+
+ newservant = g_new0(impl_POA_GNOME_Oregano_Sheet, 1);
+ newservant->servant.vepv = &impl_GNOME_Oregano_Sheet_vepv;
+ newservant->poa = poa;
+ POA_GNOME_Oregano_Sheet__init((PortableServer_Servant) newservant, ev);
+ objid = PortableServer_POA_activate_object(poa, newservant, ev);
+ CORBA_free(objid);
+ retval = PortableServer_POA_servant_to_reference(poa, newservant, ev);
+
+ return retval;
+}
+
+static void
+impl_GNOME_Oregano_Sheet__destroy(impl_POA_GNOME_Oregano_Sheet * servant,
+ CORBA_Environment * ev)
+{
+ PortableServer_ObjectId *objid;
+
+ objid = PortableServer_POA_servant_to_id(servant->poa, servant, ev);
+ PortableServer_POA_deactivate_object(servant->poa, objid, ev);
+ CORBA_free(objid);
+
+ POA_GNOME_Oregano_Sheet__fini((PortableServer_Servant) servant, ev);
+ g_free(servant);
+}
+
+static void
+impl_GNOME_Oregano_Sheet_select_all(impl_POA_GNOME_Oregano_Sheet * servant,
+ CORBA_Environment * ev)
+{
+ g_print ("select all\n");
+}
+
+static CORBA_boolean
+impl_GNOME_Oregano_Sheet_is_all_selected(impl_POA_GNOME_Oregano_Sheet *
+ servant, CORBA_Environment * ev)
+{
+ CORBA_boolean retval;
+
+ g_print ("is all selected\n");
+ retval = FALSE;
+
+ return retval;
+}
+
+static GNOME_Oregano_Sheet
+impl_GNOME_Oregano_Sheet_sheet_load(impl_POA_GNOME_Oregano_Sheet * servant,
+ CORBA_char * name, CORBA_Environment * ev)
+{
+ GNOME_Oregano_Sheet retval;
+
+ g_print ("sheet load\n");
+ retval = TRUE;
+
+ return retval;
+}
+
diff --git a/src/oregano-utils.c b/src/oregano-utils.c
new file mode 100644
index 0000000..0b172cf
--- /dev/null
+++ b/src/oregano-utils.c
@@ -0,0 +1,80 @@
+/*
+ * oregano-utils.c
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ *
+ * 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.
+ */
+#include <gtk/gtk.h>
+#include "oregano-utils.h"
+
+double
+oregano_strtod (const gchar *str, const gchar unit)
+{
+ double ret;
+ gchar *endptr, *c;
+
+ if (!str)
+ return 0.0;
+
+ ret = g_strtod (str, &endptr);
+ for (c = endptr; *c; c++) {
+ switch (*c) {
+ case 'T':
+ ret *= 1e12;
+ return ret;
+ case 'G':
+ ret *= 1e9;
+ return ret;
+ case 'M':
+ ret *= 1e6;
+ return ret;
+ case 'k':
+ ret *= 1e3;
+ return ret;
+ case 'm':
+ ret *= 1e-3;
+ return ret;
+ case 'u':
+ ret *= 1e-6;
+ return ret;
+ case 'n':
+ ret *= 1e-9;
+ return ret;
+ case 'p':
+ ret *= 1e-12;
+ return ret;
+ case 'f':
+ ret *= 1e-15;
+ return ret;
+ default:
+ if (*c == unit)
+ return ret;
+ break;
+ }
+ }
+ return ret;
+}
diff --git a/src/oregano-utils.h b/src/oregano-utils.h
new file mode 100644
index 0000000..3dfba88
--- /dev/null
+++ b/src/oregano-utils.h
@@ -0,0 +1,36 @@
+/*
+ * oregano-utils.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __OREGANO_UTILS_H
+#define __OREGANO_UTILS_H
+
+
+double oregano_strtod (const gchar *str, const gchar unit);
+
+#endif
diff --git a/src/part-browser.c b/src/part-browser.c
new file mode 100644
index 0000000..f2fa032
--- /dev/null
+++ b/src/part-browser.c
@@ -0,0 +1,715 @@
+/*
+ * part-browser.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <gtk/gtk.h>
+#include <gtk/gtktreeselection.h>
+#include <gtk/gtktreemodel.h>
+#include <glade/glade.h>
+#include <math.h>
+#include <string.h>
+#include "main.h"
+#include "load-library.h"
+#include "schematic.h"
+#include "schematic-view.h"
+#include "part-browser.h"
+#include "part-item.h"
+#include "dialogs.h"
+#include "sheet-pos.h"
+
+typedef struct _Browser Browser;
+struct _Browser {
+ SchematicView *schematic_view;
+ GtkWidget *viewport;
+ GtkWidget *list;
+ GtkWidget *canvas;
+ GnomeCanvasText *description;
+ GnomeCanvasGroup *preview;
+ Library *library;
+ /**
+ * The currently selected option menu item.
+ */
+ GtkWidget *library_menu_item;
+
+ gboolean hidden;
+
+ /**
+ * Models for the TreeView
+ */
+ GtkTreeModel *real_model;
+ GtkTreeModel *sort_model;
+ GtkTreeModel *filter_model;
+ GtkEntry *filter_entry;
+ gint filter_len;
+};
+
+typedef struct {
+ Browser *br;
+ SchematicView *schematic_view;
+ char *library_name;
+ char *part_name;
+} DndData;
+
+#define PREVIEW_WIDTH 100
+#define PREVIEW_HEIGHT 100
+#define PREVIEW_TEXT_HEIGHT 25
+
+static void update_preview (Browser *br);
+static void add_part (gpointer key, LibraryPart *part, Browser *br);
+static int part_selected (GtkTreeView *list, GtkTreePath *arg1,
+ GtkTreeViewColumn *col, Browser *br);
+static void part_browser_setup_libs (Browser *br, GladeXML *gui);
+static void library_switch_cb (GtkWidget *item, Browser *br);
+static void preview_realized (GtkWidget *widget, Browser *br);
+static void wrap_string(char* str, int width);
+static void place_cmd (GtkWidget *widget, Browser *br);
+
+static gboolean
+part_list_filter_func (GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
+{
+ char *part_name;
+ const char *s;
+ char *comp1, *comp2; /* auxilires para guardar el nombre en upcase */
+ Browser *br = (Browser *)data;
+
+ s = gtk_entry_get_text (GTK_ENTRY (br->filter_entry));
+ /* Si no hay filtro, la componente se muestra */
+ if (s == NULL) return TRUE;
+ if (br->filter_len == 0) return TRUE;
+
+ gtk_tree_model_get (model, iter, 0, &part_name, -1);
+
+ if (part_name) {
+ comp1 = g_utf8_strup (s, -1);
+ comp2 = g_utf8_strup (part_name, -1);
+
+ if (g_strrstr(comp2, comp1)) {
+ g_free (comp1);
+ g_free (comp2);
+ return TRUE;
+ }
+
+ g_free (comp1);
+ g_free (comp2);
+ }
+ return FALSE;
+}
+
+static int
+part_search_change (GtkWidget *widget, Browser *br)
+{
+ const char *s = gtk_entry_get_text (GTK_ENTRY (widget));
+
+ if (s) {
+ /* Keep record of the filter text length for each item. */
+ br->filter_len = strlen (s);
+ gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (br->filter_model));
+ }
+
+ return TRUE;
+}
+
+static void
+part_search_activate (GtkWidget *widget, Browser *br)
+{
+ GtkTreeSelection *selection;
+ GtkTreePath *path;
+
+ path = gtk_tree_path_new_from_string ("0");
+ if (path) {
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (br->list));
+
+ gtk_tree_selection_select_path (selection, path);
+
+ gtk_tree_path_free (path);
+ place_cmd (widget, br);
+ }
+}
+
+static void
+place_cmd (GtkWidget *widget, Browser *br)
+{
+ LibraryPart *library_part;
+ char *part_name;
+ SheetPos pos;
+ Sheet *sheet;
+ Part *part;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ GtkTreeSelection *selection;
+
+ schematic_view_reset_tool (br->schematic_view);
+ sheet = schematic_view_get_sheet (br->schematic_view);
+
+ /* Get the current selected row */
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (br->list));
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (br->list));
+
+ if (!gtk_tree_selection_get_selected (selection, NULL, &iter)) {
+ return;
+ }
+
+ gtk_tree_model_get(model, &iter, 0, &part_name, -1);
+
+ library_part = library_get_part (br->library, part_name);
+ part = part_new_from_library_part (library_part);
+ if (!part) {
+ oregano_error(_("Unable to load required part"));
+ return;
+ }
+
+ pos.x = pos.y = 0;
+ item_data_set_pos (ITEM_DATA (part), &pos);
+
+ schematic_view_select_all(br->schematic_view, FALSE);
+ schematic_view_clear_ghosts(br->schematic_view);
+ schematic_view_add_ghost_item(br->schematic_view, ITEM_DATA(part));
+
+ part_item_signal_connect_floating_group (sheet, br->schematic_view);
+}
+
+static int
+part_selected (GtkTreeView *list, GtkTreePath *arg1, GtkTreeViewColumn *col,
+ Browser *br)
+{
+ /* if double-click over an item, place it on work area */
+ place_cmd (NULL, br);
+
+ return FALSE;
+}
+
+static void
+update_preview (Browser *br)
+{
+ LibraryPart *library_part;
+ gdouble new_x, new_y, x1, y1, x2, y2;
+ gdouble scale;
+ double affine[6];
+ double transf[6];
+ gdouble width, height;
+ gchar *part_name;
+ char *description;
+ gdouble text_width;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ GtkTreeSelection *selection;
+
+ /* Get the current selected row */
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(br->list));
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(br->list));
+
+ if (!gtk_tree_selection_get_selected(selection, NULL, &iter)) {
+ return;
+ }
+
+ gtk_tree_model_get(model, &iter, 0, &part_name, -1);
+
+ library_part = library_get_part (br->library, part_name);
+
+ /*
+ * If there already is a preview part, destroy its group and create a
+ * new one.
+ */
+ if (br->preview != NULL)
+ /* FIXME: Check if gnomecanvas are killed by this way */
+ gtk_object_destroy (GTK_OBJECT (br->preview));
+
+ br->preview = GNOME_CANVAS_GROUP (gnome_canvas_item_new (
+ gnome_canvas_root (GNOME_CANVAS (br->canvas)),
+ gnome_canvas_group_get_type(),
+ "x", 0.0,
+ "y", 0.0,
+ NULL));
+
+ if (!library_part)
+ return;
+
+ part_item_create_canvas_items_for_preview (br->preview, library_part);
+
+ width = br->canvas->allocation.width;
+ height = br->canvas->allocation.height - PREVIEW_TEXT_HEIGHT;
+
+ /* Get the coordonates */
+ gnome_canvas_item_get_bounds (GNOME_CANVAS_ITEM (br->preview),
+ &x1, &y1, &x2, &y2);
+
+ /* Translate in such a way that the canvas centre remains in (0, 0) */
+ art_affine_translate(transf, -(x2 + x1) / 2.0f, -(y2 + y1) / 2.0f);
+
+ /* Compute the scale of the widget */
+ if((x2 - x1 != 0) || (y2 - y1 != 0)) {
+ if ((x2 - x1) < (y2 - y1))
+ scale = 0.60f * PREVIEW_HEIGHT / (y2 - y1);
+ else
+ scale = 0.60f * PREVIEW_WIDTH / (x2 - x1);
+
+ } else
+ scale = 5;
+
+ art_affine_scale (affine, scale, scale);
+ art_affine_multiply (transf, transf, affine);
+
+ /* Apply the transformation */
+ gnome_canvas_item_affine_absolute (GNOME_CANVAS_ITEM (br->preview), transf);
+
+ /* Get the new coordonates after transformation */
+ gnome_canvas_item_get_bounds (GNOME_CANVAS_ITEM (br->preview),
+ &x1, &y1, &x2, &y2);
+
+ /* Compute the motion to centre the Preview widget */
+ new_x = (PREVIEW_WIDTH - x1 - x2) / 2;
+ new_y = (PREVIEW_HEIGHT - y1 - y2) / 2;
+
+ art_affine_translate (affine, new_x, new_y);
+ art_affine_multiply (transf, transf, affine);
+
+ /* Apply the transformation */
+ gnome_canvas_item_affine_absolute (GNOME_CANVAS_ITEM (br->preview),
+ transf);
+
+ description = g_strdup (library_part->description);
+ wrap_string (description, 20);
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM (br->description), "text",
+ description, NULL);
+ g_free (description);
+
+ g_object_get (G_OBJECT (br->description),
+ "text_width", &text_width, NULL);
+
+ g_object_set (G_OBJECT(br->description), "x",
+ PREVIEW_WIDTH / 2 - text_width / 2, NULL);
+ gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (br->description));
+ g_free(part_name);
+}
+
+static gboolean
+select_row (GtkTreeView *list, Browser *br)
+{
+ update_preview (br);
+ return FALSE;
+}
+
+static void
+add_part (gpointer key, LibraryPart *part, Browser *br)
+{
+ GtkTreeIter iter;
+ //GtkTreeModel *sort; /* The sortable interface */
+ GtkListStore *model;
+
+ g_return_if_fail (part != NULL);
+ g_return_if_fail (part->name != NULL);
+ g_return_if_fail (br != NULL);
+ g_return_if_fail (br->list != NULL);
+
+ model = GTK_LIST_STORE(br->real_model);
+ gtk_list_store_append(model, &iter);
+ gtk_list_store_set(model, &iter, 0, part->name, -1);
+}
+
+/*
+ * Read the available parts from the library and put them in the browser clist.
+ */
+static void
+update_list (Browser *br)
+{
+ GtkListStore *model;
+
+ model = GTK_LIST_STORE (br->real_model);
+ gtk_list_store_clear (model);
+ g_hash_table_foreach (br->library->part_hash, (GHFunc) add_part, br);
+}
+
+
+/**
+ * Show a part browser. If one already exists, just bring it up, otherwise
+ * create it. We can afford to keep it in memory all the time, and we don't
+ * have to delete it and build it every time it is needed. If already shown,
+ * hide it.
+ */
+void
+part_browser_toggle_show (SchematicView *schematic_view)
+{
+ Browser *browser = schematic_view_get_browser (schematic_view);
+
+ if (browser == NULL){
+ part_browser_create (schematic_view);
+ } else {
+ browser->hidden = !(browser->hidden);
+ if (browser->hidden){
+ gtk_widget_hide_all (browser->viewport);
+ } else {
+ gtk_widget_show_all (browser->viewport);
+ }
+ }
+}
+
+void
+part_browser_dnd (GtkSelectionData *selection_data, int x, int y)
+{
+ LibraryPart *library_part;
+ SheetPos pos;
+ DndData *data;
+ Sheet *sheet;
+ Part *part;
+
+ data = (DndData *) (selection_data->data);
+
+ g_return_if_fail (data != NULL);
+
+ pos.x = x;
+ pos.y = y;
+
+ sheet = schematic_view_get_sheet (data->schematic_view);
+
+ snap_to_grid (sheet->grid, &pos.x, &pos.y);
+
+ library_part = library_get_part (data->br->library, data->part_name);
+ part = part_new_from_library_part (library_part);
+ if (!part) {
+ oregano_error(_("Unable to load required part"));
+ return;
+ }
+
+ item_data_set_pos (ITEM_DATA (part), &pos);
+
+ schematic_view_select_all (data->schematic_view, FALSE);
+ schematic_view_clear_ghosts (data->schematic_view);
+ schematic_view_add_ghost_item (data->schematic_view, ITEM_DATA (part));
+
+ part_item_signal_connect_floating_group (sheet, data->schematic_view);
+}
+
+static void
+drag_data_get (GtkWidget *widget, GdkDragContext *context,
+ GtkSelectionData *selection_data, guint info, guint time, Browser *br)
+{
+ DndData *data;
+ GtkTreeSelection *selection;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gchar *part_name;
+
+ schematic_view_reset_tool (br->schematic_view);
+
+ data = g_new0 (DndData, 1);
+
+ data->schematic_view = br->schematic_view;
+ data->br = br;
+
+ data->library_name = br->library->name;
+
+ /* Get the current selected row */
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (br->list));
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (br->list));
+
+ if (!gtk_tree_selection_get_selected (selection, NULL, &iter)) {
+ /* No selection, Action canceled */
+ return;
+ }
+
+ gtk_tree_model_get(model, &iter, 0, &part_name, -1);
+
+ data->part_name = part_name;
+
+ gtk_selection_data_set (selection_data,
+ selection_data->target,
+ 8,
+ (gpointer) data,
+ sizeof (DndData));
+
+ /*
+ * gtk_selection_data_set copies the information so we can free it now.
+ */
+ g_free (data);
+}
+
+/*
+ * part_browser_create
+ *
+ * Creates a new part browser. This is only called once per schematic window.
+ */
+GtkWidget *
+part_browser_create (SchematicView *schematic_view)
+{
+ Browser *br;
+ GladeXML *gui;
+ char *msg;
+ GtkWidget *w;
+ GtkCellRenderer *cell_text;
+ GtkTreeViewColumn *cell_column;
+ GtkStyle *style;
+ GdkColormap *colormap;
+ GnomeCanvasPoints *points;
+ static GtkTargetEntry dnd_types[] =
+ { { "x-application/oregano-part", 0, DRAG_PART_INFO } };
+
+ static int dnd_num_types = sizeof (dnd_types) / sizeof (dnd_types[0]);
+ GtkTreePath *path;
+
+ br = g_new0 (Browser, 1);
+ br->preview = NULL;
+ br->schematic_view = schematic_view;
+ br->hidden = FALSE;
+
+ schematic_view_set_browser(schematic_view, br);
+
+ if (!g_file_test (OREGANO_GLADEDIR "/part-browser.glade",
+ G_FILE_TEST_EXISTS)) {
+ msg = g_strdup_printf (
+ _("The file %s could not be found. You might need to reinstall Oregano to fix this."),
+ OREGANO_GLADEDIR "/part-browser.glade");
+
+ oregano_error_with_title (_("Could not create part browser"), msg);
+ g_free (msg);
+ return NULL;
+ }
+
+ gui = glade_xml_new (OREGANO_GLADEDIR "/part-browser.glade",
+ "part_browser_vbox", GETTEXT_PACKAGE);
+ if (!gui) {
+ oregano_error (_("Could not create part browser"));
+ return NULL;
+ }
+
+ w = glade_xml_get_widget (gui, "preview_canvas");
+ br->canvas = w;
+
+ g_signal_connect(w, "realize", (GCallback) preview_realized, br);
+
+ style = gtk_style_new ();
+ colormap = gtk_widget_get_colormap (GTK_WIDGET (w));
+ style->bg[GTK_STATE_NORMAL].red = 65535;
+ style->bg[GTK_STATE_NORMAL].blue = 65535;
+ style->bg[GTK_STATE_NORMAL].green = 65535;
+ gdk_colormap_alloc_color (colormap, &style->bg[GTK_STATE_NORMAL],
+ TRUE, TRUE);
+ gtk_widget_set_style (GTK_WIDGET (w), style);
+ gtk_widget_set_usize (w, PREVIEW_WIDTH,
+ PREVIEW_HEIGHT + PREVIEW_TEXT_HEIGHT);
+ gnome_canvas_set_scroll_region (GNOME_CANVAS (w), 0, 0, PREVIEW_WIDTH,
+ PREVIEW_HEIGHT + PREVIEW_TEXT_HEIGHT);
+
+ points = gnome_canvas_points_new (2);
+ points->coords[0] = - 10;
+ points->coords[1] = PREVIEW_HEIGHT - 10;
+ points->coords[2] = PREVIEW_WIDTH + 10;
+ points->coords[3] = PREVIEW_HEIGHT - 10;
+
+ gnome_canvas_item_new (gnome_canvas_root (GNOME_CANVAS(br->canvas)),
+ gnome_canvas_line_get_type (),
+ "fill_color", "gray",
+ "line_style", GDK_LINE_ON_OFF_DASH,
+ "points", points,
+ NULL);
+
+ gnome_canvas_points_unref (points);
+
+ br->description = GNOME_CANVAS_TEXT (
+ gnome_canvas_item_new (
+ gnome_canvas_root (GNOME_CANVAS (br->canvas)),
+ gnome_canvas_text_get_type (),
+ "x", 0.0,
+ "y", PREVIEW_HEIGHT - 9.0,
+ "anchor", GTK_ANCHOR_NORTH_WEST,
+ "justification", GTK_JUSTIFY_CENTER,
+ "font", "sans 10",
+ "text", "",
+ NULL));
+
+ /*
+ * Set up dnd.
+ */
+ g_signal_connect (G_OBJECT (br->canvas), "drag_data_get",
+ GTK_SIGNAL_FUNC (drag_data_get), br);
+
+ gtk_drag_source_set (br->canvas, GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
+ dnd_types, dnd_num_types, GDK_ACTION_MOVE);
+
+ br->filter_entry = GTK_ENTRY (glade_xml_get_widget(gui, "part_search"));
+
+ g_signal_connect (G_OBJECT (br->filter_entry), "changed",
+ G_CALLBACK (part_search_change), br);
+ g_signal_connect (G_OBJECT (br->filter_entry), "activate",
+ G_CALLBACK (part_search_activate), br);
+
+ /* Buttons. */
+ w = glade_xml_get_widget (gui, "place_button");
+ g_signal_connect (G_OBJECT (w), "clicked",
+ GTK_SIGNAL_FUNC (place_cmd), br);
+
+ /* Update the libraries option menu */
+ br->library = g_list_nth_data (oregano.libraries, 0);
+ part_browser_setup_libs (br, gui);
+
+ /* Parts list. */
+ w = glade_xml_get_widget (gui, "parts_list");
+ br->list = w;
+
+ /* Create de ListModel for TreeView, this is a Real model */
+ br->real_model = GTK_TREE_MODEL (gtk_list_store_new (1, G_TYPE_STRING));
+ cell_text = gtk_cell_renderer_text_new ();
+ cell_column = gtk_tree_view_column_new_with_attributes (
+ " ", cell_text, "text", 0, NULL);
+
+ /* Create the sort model for the items, this sort the real model */
+ br->sort_model = gtk_tree_model_sort_new_with_model (
+ GTK_TREE_MODEL(br->real_model));
+
+ gtk_tree_sortable_set_sort_column_id (
+ GTK_TREE_SORTABLE(br->sort_model),
+ 0, GTK_SORT_ASCENDING);
+
+ /* Create the filter sorted model. This filter items based on user
+ request for fast item search */
+
+ br->filter_model = gtk_tree_model_filter_new (br->sort_model, NULL);
+ gtk_tree_model_filter_set_visible_func (
+ GTK_TREE_MODEL_FILTER (br->filter_model),
+ part_list_filter_func, br, NULL);
+
+ /* If we have TreeFilter use it, if not, just use sorting model only */
+ if (br->filter_model)
+ gtk_tree_view_set_model (GTK_TREE_VIEW(w), br->filter_model);
+ else
+ gtk_tree_view_set_model (GTK_TREE_VIEW(w), br->sort_model);
+
+ gtk_tree_view_append_column (GTK_TREE_VIEW(w), cell_column);
+ update_list (br);
+
+ /*
+ * Set up TreeView dnd.
+ */
+ g_signal_connect (G_OBJECT (w), "drag_data_get",
+ GTK_SIGNAL_FUNC (drag_data_get), br);
+
+ gtk_drag_source_set (w, GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
+ dnd_types, dnd_num_types, GDK_ACTION_MOVE);
+
+ g_signal_connect (G_OBJECT (w),
+ "cursor_changed", G_CALLBACK(select_row), br);
+ g_signal_connect (G_OBJECT (w),
+ "row_activated", G_CALLBACK(part_selected), br);
+
+ br->viewport = glade_xml_get_widget (gui, "part_browser_vbox");
+
+ path = gtk_tree_path_new_first ();
+ gtk_tree_view_set_cursor (GTK_TREE_VIEW (w),path, NULL, FALSE);
+ gtk_tree_path_free (path);
+
+ return br->viewport;
+}
+
+static void
+part_browser_setup_libs(Browser *br, GladeXML *gui) {
+
+ GtkWidget *combo_box, *w;
+
+ GList *libs;
+ gboolean first = FALSE;
+
+ w = glade_xml_get_widget (gui, "library_optionmenu");
+ gtk_widget_destroy (w);
+
+ w = glade_xml_get_widget (gui, "table1");
+ combo_box = gtk_combo_box_new_text ();
+ gtk_table_attach_defaults (GTK_TABLE(w),combo_box,1,2,0,1);
+
+ libs = oregano.libraries;
+
+ while (libs) {
+ gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box),
+ ((Library *)libs->data)->name);
+ libs = libs->next;
+ if (!first) {
+ gtk_combo_box_set_active (GTK_COMBO_BOX(combo_box),0);
+ first = TRUE;
+ }
+ }
+
+ g_signal_connect (G_OBJECT (combo_box),
+ "changed", G_CALLBACK(library_switch_cb), br);
+}
+
+static void
+library_switch_cb (GtkWidget *combo_box, Browser *br)
+{
+ GList *libs = oregano.libraries;
+
+ br->library = (Library *) g_list_nth_data (libs,
+ gtk_combo_box_get_active (GTK_COMBO_BOX (combo_box)));
+
+ update_list (br);
+}
+
+static void
+wrap_string (char* str, int width)
+{
+ const int minl = width/2;
+ char *lnbeg, *sppos, *ptr;
+ int te = 0;
+
+ g_return_if_fail (str != NULL);
+
+ lnbeg= sppos = ptr = str;
+
+ while (*ptr) {
+ if (*ptr == '\t')
+ te += 7;
+
+ if (*ptr == ' ')
+ sppos = ptr;
+
+ if(ptr - lnbeg > width - te && sppos >= lnbeg + minl) {
+ *sppos = '\n';
+ lnbeg = ptr;
+ te = 0;
+ }
+
+ if(*ptr=='\n') {
+ lnbeg = ptr;
+ te = 0;
+ }
+ ptr++;
+ }
+}
+
+static void
+preview_realized (GtkWidget *widget, Browser *br)
+{
+ update_preview (br);
+}
+
+void
+part_browser_reparent (gpointer *br, GtkWidget *new_parent)
+{
+ Browser *b;
+ g_return_if_fail (br != NULL);
+ b = (Browser *)br;
+ gtk_widget_reparent (GTK_WIDGET (b->viewport), new_parent);
+}
diff --git a/src/part-browser.h b/src/part-browser.h
new file mode 100644
index 0000000..5dcfa73
--- /dev/null
+++ b/src/part-browser.h
@@ -0,0 +1,43 @@
+/*
+ * part-browser.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __PART_BROWSER_H
+#define __PART_BROWSER_H
+
+#include <gnome.h>
+#include <gtk/gtk.h>
+#include "schematic.h"
+
+void part_browser_toggle_show (SchematicView *schematic_view);
+GtkWidget *part_browser_create (SchematicView *schematic_view);
+void part_browser_dnd (GtkSelectionData *selection_data, gint x, gint y);
+void part_browser_place_selected_part (Schematic *sm);
+void part_browser_reparent (gpointer *br, GtkWidget *new_parent);
+
+#endif
diff --git a/src/pixmaps/Makefile.am b/src/pixmaps/Makefile.am
new file mode 100644
index 0000000..1e94d03
--- /dev/null
+++ b/src/pixmaps/Makefile.am
@@ -0,0 +1,13 @@
+EXTRA_DIST = \
+ README \
+ log.xpm \
+ menu_zoom.xcf \
+ menu_zoom.xpm \
+ mini_icon.xpm \
+ mini_icon_plot.xcf \
+ mini_icon_plot.xpm \
+ plot.xpm \
+ tool_arrow.xpm \
+ tool_text.xpm \
+ tool_wire.xpm \
+ logo.xpm
diff --git a/src/pixmaps/README b/src/pixmaps/README
new file mode 100644
index 0000000..4df941e
--- /dev/null
+++ b/src/pixmaps/README
@@ -0,0 +1,2 @@
+The pixmaps here should eventually be moved to ../stock/
+
diff --git a/src/pixmaps/log.xpm b/src/pixmaps/log.xpm
new file mode 100644
index 0000000..459f4ba
--- /dev/null
+++ b/src/pixmaps/log.xpm
@@ -0,0 +1,21 @@
+/* XPM */
+static char * log_xpm[] = {
+"16 16 2 2",
+" c None",
+". c #000000",
+" ",
+" . . . . . . . . . . . ",
+" ",
+" . . . . . . . . . . . ",
+" ",
+" . . . . . . . . . . . ",
+" ",
+" . . . . . . . . . ",
+" ",
+" . . . . . . . . . . . . . ",
+" ",
+" . . . . . . . . . . . . ",
+" ",
+" . . . . . . . . . ",
+" ",
+" "};
diff --git a/src/pixmaps/logo.png b/src/pixmaps/logo.png
new file mode 100644
index 0000000..3ce93f6
--- /dev/null
+++ b/src/pixmaps/logo.png
Binary files differ
diff --git a/src/pixmaps/logo.xpm b/src/pixmaps/logo.xpm
new file mode 100644
index 0000000..730f2bb
--- /dev/null
+++ b/src/pixmaps/logo.xpm
@@ -0,0 +1,2896 @@
+/* XPM */
+static char *logo_xpm[] = {
+"285 80 2813 2",
+" c None",
+". c #BBBDF5",
+"+ c #A0A2EB",
+"@ c #ABACE9",
+"# c #E8E9F4",
+"$ c #EAEBF6",
+"% c #E3E5EF",
+"& c #EAEBF5",
+"* c #E5E6F0",
+"= c #DADBE4",
+"- c #E6E8F1",
+"; c #EAEBF4",
+"> c #EAEBF3",
+", c #ECEDF5",
+"' c #EDEEF6",
+") c #E5E7EE",
+"! c #DBDDE4",
+"~ c #EEF0F7",
+"{ c #F4F5FC",
+"] c #DEDFE7",
+"^ c #EBECF4",
+"/ c #E2E3EB",
+"( c #E1E2EA",
+"_ c #E0E2EA",
+": c #D8DAE2",
+"< c #E9EBF3",
+"[ c #EEF0F8",
+"} c #E7E8F1",
+"| c #D1D2DB",
+"1 c #EFF0F9",
+"2 c #ECEDF6",
+"3 c #E2E4ED",
+"4 c #EEF0F9",
+"5 c #E9EAF4",
+"6 c #ECEEF8",
+"7 c #ECEDF7",
+"8 c #ECEDF8",
+"9 c #E6E8F2",
+"0 c #E6E7F2",
+"a c #EAECF7",
+"b c #DFE1ED",
+"c c #ECEEFA",
+"d c #EBEDFA",
+"e c #D6D8E5",
+"f c #E0E2F0",
+"g c #E3E5F2",
+"h c #E8EAF6",
+"i c #E4E6F1",
+"j c #E4E6F0",
+"k c #EDEFF8",
+"l c #DFE0E9",
+"m c #E4E5ED",
+"n c #E7E8F0",
+"o c #E9EAF1",
+"p c #EDEFF6",
+"q c #EAEAF2",
+"r c #E5E6ED",
+"s c #ECEDF4",
+"t c #E6E8F4",
+"u c #DEE0EE",
+"v c #E0E2F1",
+"w c #E7EAF8",
+"x c #E6E8F6",
+"y c #DEE1EF",
+"z c #DEE0EF",
+"A c #D9DCEA",
+"B c #DBDDEC",
+"C c #DDE0EE",
+"D c #DCDEEC",
+"E c #DBDDEB",
+"F c #DFE1EF",
+"G c #E2E4F3",
+"H c #E5E7F6",
+"I c #E4E6F4",
+"J c #D4D7E4",
+"K c #E0E1F0",
+"L c #E8EAFA",
+"M c #DFE2F0",
+"N c #E3E6F3",
+"O c #D5D8E8",
+"P c #D0D2E2",
+"Q c #D7DAEA",
+"R c #DEE0F1",
+"S c #DDDEEF",
+"T c #E0E3F4",
+"U c #E3E5F6",
+"V c #E2E4F5",
+"W c #DFE1F2",
+"X c #DCDFEF",
+"Y c #E0E2F3",
+"Z c #D7D8E9",
+"` c #CED1E1",
+" . c #E0E3F3",
+".. c #E0E1F2",
+"+. c #DEE1F1",
+"@. c #E5E7F8",
+"#. c #E4E7F7",
+"$. c #E4E6F6",
+"%. c #DDDFEF",
+"&. c #D6D8E8",
+"*. c #DFE2F3",
+"=. c #E2E3F2",
+"-. c #D9D9E2",
+";. c #DFE0E8",
+">. c #AFB0E0",
+",. c #8C8DE7",
+"'. c #D1D2F8",
+"). c #BCBDF8",
+"!. c #8E8EDC",
+"~. c #B1B1EF",
+"{. c #E2E3F4",
+"]. c #E0E1EB",
+"^. c #D7D8F4",
+"/. c #D0D2F8",
+"(. c #BFC0EB",
+"_. c #CFD1EF",
+":. c #DEE0ED",
+"<. c #E5E7F2",
+"[. c #E1E2ED",
+"}. c #E3E4EC",
+"|. c #AAC5C0",
+"1. c #BEDED5",
+"2. c #E9EEF3",
+"3. c #E8E9F1",
+"4. c #E2E4F0",
+"5. c #E9EBFA",
+"6. c #E2E5F3",
+"7. c #E4E5F4",
+"8. c #E4E7F5",
+"9. c #E6E9F8",
+"0. c #E3E5F3",
+"a. c #E1E4F2",
+"b. c #E1E2F1",
+"c. c #D9DBEE",
+"d. c #D7DAEC",
+"e. c #DCDFF1",
+"f. c #DFE2F5",
+"g. c #D6D9EC",
+"h. c #D4D7EA",
+"i. c #D8DBED",
+"j. c #D5D7EA",
+"k. c #D7DAED",
+"l. c #D6D9EB",
+"m. c #D6D8EB",
+"n. c #DADDF0",
+"o. c #DCDFF2",
+"p. c #D8DBEE",
+"q. c #E1E4F7",
+"r. c #DDE0F3",
+"s. c #E7EAFD",
+"t. c #E4E7FB",
+"u. c #DCDFF4",
+"v. c #CFD2E7",
+"w. c #D1D4E9",
+"x. c #D0D3E8",
+"y. c #CDCFE5",
+"z. c #D2D4EA",
+"A. c #DEE1F7",
+"B. c #E5E8FE",
+"C. c #D4D6EC",
+"D. c #D6D9EF",
+"E. c #DBDEF4",
+"F. c #D7DAEF",
+"G. c #D3D6EB",
+"H. c #DADDF2",
+"I. c #E1E4FA",
+"J. c #D7D9EF",
+"K. c #E3E6FB",
+"L. c #D7DAF0",
+"M. c #D8DBF1",
+"N. c #D4D7EC",
+"O. c #DCDFF5",
+"P. c #DCDEEF",
+"Q. c #DADDED",
+"R. c #B8BBEF",
+"S. c #C4C6E7",
+"T. c #DEE0F0",
+"U. c #CCCEE4",
+"V. c #BCBEEE",
+"W. c #D1D4EE",
+"X. c #D0D2EF",
+"Y. c #D8DAFA",
+"Z. c #C7C9F0",
+"`. c #BCBDF0",
+" + c #C4C5F6",
+".+ c #E4E4F7",
+"++ c #E1E3F5",
+"@+ c #B0B2F5",
+"#+ c #D7D8EA",
+"$+ c #DFE0EA",
+"%+ c #CFD1DA",
+"&+ c #D5D7E2",
+"*+ c #E5E7F3",
+"=+ c #DFE0ED",
+"-+ c #DADBE7",
+";+ c #D7D9E4",
+">+ c #D8D9E2",
+",+ c #E8EAF2",
+"'+ c #F0F1F8",
+")+ c #EBECF3",
+"!+ c #E6E7EF",
+"~+ c #E1E3EF",
+"{+ c #EBEDFB",
+"]+ c #E3E6F4",
+"^+ c #C4D1DA",
+"/+ c #CDDBE4",
+"(+ c #D7D9E7",
+"_+ c #E0E3F1",
+":+ c #E2E5F8",
+"<+ c #DEE1F4",
+"[+ c #E3E6F9",
+"}+ c #E0E3F6",
+"|+ c #DDDFF3",
+"1+ c #D2D5E7",
+"2+ c #D4D7E9",
+"3+ c #DDDFED",
+"4+ c #E2E4F4",
+"5+ c #DDDDED",
+"6+ c #D2D4E2",
+"7+ c #D1D3E1",
+"8+ c #DADCEB",
+"9+ c #DFE1F0",
+"0+ c #D9DBE9",
+"a+ c #DFE2EF",
+"b+ c #E3E4F3",
+"c+ c #E7E9F8",
+"d+ c #D8D9EA",
+"e+ c #DFE2F2",
+"f+ c #DDDFF0",
+"g+ c #D8DAEB",
+"h+ c #D8DAEA",
+"i+ c #E1E3F4",
+"j+ c #DADCED",
+"k+ c #D9DBEC",
+"l+ c #D9DBEB",
+"m+ c #DBDDED",
+"n+ c #DDE0F0",
+"o+ c #DCDEEE",
+"p+ c #E8EBFA",
+"q+ c #E2E3F5",
+"r+ c #E0E2F2",
+"s+ c #E1E3F3",
+"t+ c #D7DAEB",
+"u+ c #D3D5E6",
+"v+ c #CCCEDF",
+"w+ c #D5D7ED",
+"x+ c #D5D8ED",
+"y+ c #D2D5EA",
+"z+ c #D4D7EB",
+"A+ c #D4D6E9",
+"B+ c #E4E7F9",
+"C+ c #E4E7F8",
+"D+ c #D6D8EF",
+"E+ c #C1C4F0",
+"F+ c #CBCEE9",
+"G+ c #DADDEB",
+"H+ c #D5D8EF",
+"I+ c #C8CAF0",
+"J+ c #E3E5F4",
+"K+ c #E6E8F7",
+"L+ c #D8DBE9",
+"M+ c #EFF1F8",
+"N+ c #DCDEE5",
+"O+ c #EAECF5",
+"P+ c #E8E9F3",
+"Q+ c #E1E2EF",
+"R+ c #DBDCE9",
+"S+ c #E0E2ED",
+"T+ c #DEDFEB",
+"U+ c #EDEFF9",
+"V+ c #EEEFF8",
+"W+ c #E6E7F0",
+"X+ c #E2E4EC",
+"Y+ c #DEDFEE",
+"Z+ c #D6D8E7",
+"`+ c #D7D8E7",
+" @ c #D4D6E4",
+".@ c #DCDEED",
+"+@ c #D8DAEE",
+"@@ c #E9ECFC",
+"#@ c #D5D8EA",
+"$@ c #E1E3F2",
+"%@ c #E6E9F7",
+"&@ c #DFE0EF",
+"*@ c #DADCEA",
+"=@ c #E5E8F7",
+"-@ c #E7E9F5",
+";@ c #EEEFF6",
+">@ c #EEEFF7",
+",@ c #EDEEF5",
+"'@ c #DBDCE4",
+")@ c #D3D4DB",
+"!@ c #E3E4EB",
+"~@ c #F2F3FA",
+"{@ c #EFF0F8",
+"]@ c #E0E2E9",
+"^@ c #E1E3EA",
+"/@ c #E1E1EA",
+"(@ c #D3D4DC",
+"_@ c #EDEDF6",
+":@ c #E2E3EC",
+"<@ c #D6D8E0",
+"[@ c #E1E2EB",
+"}@ c #E9E9F2",
+"|@ c #F2F3FB",
+"1@ c #DCDDE6",
+"2@ c #E5E6EE",
+"3@ c #EDEFF7",
+"4@ c #E5E5EE",
+"5@ c #D5D7E6",
+"6@ c #CCCFEF",
+"7@ c #B6B8E7",
+"8@ c #D3D6EA",
+"9@ c #D8D9F2",
+"0@ c #C7CAEE",
+"a@ c #E4E6F5",
+"b@ c #DBDEF1",
+"c@ c #D9DCEF",
+"d@ c #D8DAE9",
+"e@ c #DEE1F2",
+"f@ c #E1E4F4",
+"g@ c #D9DBEA",
+"h@ c #E9EAF2",
+"i@ c #DADBE6",
+"j@ c #E9EAF7",
+"k@ c #E7E9F4",
+"l@ c #E0E1EA",
+"m@ c #D4D6DD",
+"n@ c #D8DAE7",
+"o@ c #DEDFF0",
+"p@ c #D8DBF0",
+"q@ c #D5D8EC",
+"r@ c #D1D4E6",
+"s@ c #DBDDF0",
+"t@ c #EAECFA",
+"u@ c #D4D9E6",
+"v@ c #C7D4DD",
+"w@ c #D6E0EA",
+"x@ c #E9EBF9",
+"y@ c #EAECFB",
+"z@ c #E1E4F1",
+"A@ c #E4E6F3",
+"B@ c #F1F2FA",
+"C@ c #F3F4FB",
+"D@ c #F4F5FD",
+"E@ c #F0F1F9",
+"F@ c #F1F2F9",
+"G@ c #F0F2F9",
+"H@ c #E7E8EF",
+"I@ c #E4E6ED",
+"J@ c #D7D8DF",
+"K@ c #D6D7DF",
+"L@ c #EFF0F4",
+"M@ c #E0E0E3",
+"N@ c #F5F5F7",
+"O@ c #F8F8FA",
+"P@ c #ECEDEF",
+"Q@ c #F4F4F6",
+"R@ c #F8F9FB",
+"S@ c #F6F7F9",
+"T@ c #E4E5E7",
+"U@ c #F3F3F6",
+"V@ c #EDEDF0",
+"W@ c #D7D7DA",
+"X@ c #F7F7FA",
+"Y@ c #E8E9EB",
+"Z@ c #F0F1F3",
+"`@ c #DCDDDF",
+" # c #F7F8FA",
+".# c #FBFBFE",
+"+# c #EEEEF1",
+"@# c #F8F8FB",
+"## c #D6D6D9",
+"$# c #E5E6E9",
+"%# c #F6F6F9",
+"&# c #E2E3E6",
+"*# c #EFF0F3",
+"=# c #F9F9FC",
+"-# c #E1E2E5",
+";# c #F4F4F7",
+"># c #EAEAED",
+",# c #ECECEF",
+"'# c #F2F2F5",
+")# c #E4E5E8",
+"!# c #DEDEE1",
+"~# c #F0F1F4",
+"{# c #F6F7FA",
+"]# c #DEDFE2",
+"^# c #E7E7EA",
+"/# c #F5F5F8",
+"(# c #EFEFF2",
+"_# c #F8F9FC",
+":# c #F4F4F9",
+"<# c #EBECF5",
+"[# c #CDCEF4",
+"}# c #9293E2",
+"|# c #B6B7E7",
+"1# c #E3E4F1",
+"2# c #E0E0ED",
+"3# c #D4D5F0",
+"4# c #B4B5F6",
+"5# c #A9AAEA",
+"6# c #E9EBF4",
+"7# c #D4D6ED",
+"8# c #CED0ED",
+"9# c #CFD1F2",
+"0# c #D3D6F2",
+"a# c #DDDFF1",
+"b# c #DEE0F2",
+"c# c #D3D5F5",
+"d# c #CDCFF2",
+"e# c #D3D6E8",
+"f# c #D5D8EB",
+"g# c #DADDF3",
+"h# c #D9DCF1",
+"i# c #D4D7ED",
+"j# c #DCDFEE",
+"k# c #DBDEEB",
+"l# c #E0E1EE",
+"m# c #DDDEE6",
+"n# c #C9CBD3",
+"o# c #DDDEE8",
+"p# c #ECEEF6",
+"q# c #EAEBF2",
+"r# c #E2E4F2",
+"s# c #DADBEA",
+"t# c #DADCF2",
+"u# c #DFE2F8",
+"v# c #DDE0F6",
+"w# c #D8DAE8",
+"x# c #DCDFED",
+"y# c #DDDEED",
+"z# c #E1E3F0",
+"A# c #C4C5CD",
+"B# c #7A7B82",
+"C# c #797C82",
+"D# c #C5C8CF",
+"E# c #DFE0E7",
+"F# c #F2F2F7",
+"G# c #F0F0F3",
+"H# c #E3E3E6",
+"I# c #EAEBED",
+"J# c #F5F6F8",
+"K# c #F9F9FB",
+"L# c #FAFBFD",
+"M# c #F6F6F8",
+"N# c #F1F2F3",
+"O# c #DBDBDB",
+"P# c #FBFBFB",
+"Q# c #FAFAFA",
+"R# c #E2E2E3",
+"S# c #D7D7D7",
+"T# c #ECECEC",
+"U# c #FCFCFC",
+"V# c #F2F2F2",
+"W# c #DADADB",
+"X# c #FDFDFD",
+"Y# c #EAEAEB",
+"Z# c #D5D5D5",
+"`# c #FEFEFE",
+" $ c #F4F4F4",
+".$ c #F3F3F3",
+"+$ c #F6F6F6",
+"@$ c #CFD0D0",
+"#$ c #D2D2D2",
+"$$ c #D4D5D5",
+"%$ c #F7F7F7",
+"&$ c #DFDFE0",
+"*$ c #DEDEDF",
+"=$ c #E4E4E5",
+"-$ c #F9F9F9",
+";$ c #F0F0F1",
+">$ c #F0F0F0",
+",$ c #E7E7E8",
+"'$ c #EBEBEC",
+")$ c #E9E9EB",
+"!$ c #E8E8EB",
+"~$ c #EBECEF",
+"{$ c #A5A5F7",
+"]$ c #9C9DF7",
+"^$ c #B1B1F3",
+"/$ c #A0A0E4",
+"($ c #9B9BEF",
+"_$ c #B0B0FC",
+":$ c #D2D2EF",
+"<$ c #EFEFF4",
+"[$ c #D3D4F7",
+"}$ c #A3A4E7",
+"|$ c #A5A5EC",
+"1$ c #CFD0FA",
+"2$ c #E0E2EC",
+"3$ c #D5D6DE",
+"4$ c #D1D2EB",
+"5$ c #B8B9F6",
+"6$ c #C8C9F8",
+"7$ c #F0F0F8",
+"8$ c #E4E6F2",
+"9$ c #DBDDEE",
+"0$ c #D5D7EB",
+"a$ c #DCDFEC",
+"b$ c #E5E8F6",
+"c$ c #E1E2F7",
+"d$ c #9EA0F3",
+"e$ c #B3B3EE",
+"f$ c #ECEDFA",
+"g$ c #E2E3EE",
+"h$ c #D4D4DC",
+"i$ c #D6D8EE",
+"j$ c #DDE0F1",
+"k$ c #E0E1E8",
+"l$ c #E2E4EB",
+"m$ c #E1E2E9",
+"n$ c #E2E3EA",
+"o$ c #7D7D80",
+"p$ c #222325",
+"q$ c #2D2E30",
+"r$ c #9D9EA0",
+"s$ c #DCDCDF",
+"t$ c #EBEBEE",
+"u$ c #E5E6E8",
+"v$ c #F3F3F5",
+"w$ c #E5E5E6",
+"x$ c #EAEAEA",
+"y$ c #D9D9D9",
+"z$ c #F1F1F2",
+"A$ c #E9E9EA",
+"B$ c #F3F3F4",
+"C$ c #EEEEEE",
+"D$ c #ECECED",
+"E$ c #EDEDED",
+"F$ c #FFFFFF",
+"G$ c #EFEFEF",
+"H$ c #E3E3E3",
+"I$ c #F5F5F5",
+"J$ c #E7E7E7",
+"K$ c #F8F8F8",
+"L$ c #F1F1F1",
+"M$ c #DFDFDF",
+"N$ c #D6D6D6",
+"O$ c #E6E6E6",
+"P$ c #CECECE",
+"Q$ c #DEDEDE",
+"R$ c #D7D7D8",
+"S$ c #D8D8D9",
+"T$ c #CAC9E5",
+"U$ c #B8B7F8",
+"V$ c #A3A3FD",
+"W$ c #4F4FEA",
+"X$ c #8685F7",
+"Y$ c #E2E2FC",
+"Z$ c #FCFCFD",
+"`$ c #C7C8FC",
+" % c #8586FD",
+".% c #7B7BF5",
+"+% c #B4B4F8",
+"@% c #E3E3FD",
+"#% c #E6E7ED",
+"$% c #CBCBF1",
+"%% c #8B8BEE",
+"&% c #BABBEB",
+"*% c #F4F5F9",
+"=% c #E4E5EC",
+"-% c #EDEEF7",
+";% c #EBEDF5",
+">% c #DADDEF",
+",% c #D9DAE9",
+"'% c #D0D2EE",
+")% c #BABCEB",
+"!% c #DEDFF3",
+"~% c #E8E9F8",
+"{% c #D0D1E0",
+"]% c #C0C1F4",
+"^% c #B1B3F1",
+"/% c #C8C9E1",
+"(% c #ABACEA",
+"_% c #DDDFEB",
+":% c #D4D6E2",
+"<% c #DDE0ED",
+"[% c #DBDEEC",
+"}% c #EFEFF8",
+"|% c #E4E6EE",
+"1% c #F3F3F8",
+"2% c #F1F2F4",
+"3% c #F4F5F7",
+"4% c #E6E6E9",
+"5% c #F9F9FA",
+"6% c #A6A6A7",
+"7% c #292934",
+"8% c #3B3B40",
+"9% c #C1C1C1",
+"0% c #EDEDEE",
+"a% c #E9E9E9",
+"b% c #E2E2E2",
+"c% c #EBEBEB",
+"d% c #E5E5E5",
+"e% c #E0E0E0",
+"f% c #DCDCDC",
+"g% c #E8E8E8",
+"h% c #C6C5C8",
+"i% c #D8D8E8",
+"j% c #DEDEFD",
+"k% c #6462D9",
+"l% c #8C8AF7",
+"m% c #EAEAF5",
+"n% c #CDCDCD",
+"o% c #B0B0DD",
+"p% c #9091F4",
+"q% c #8A8AF1",
+"r% c #9797F5",
+"s% c #9D9EFC",
+"t% c #BDBBF1",
+"u% c #F0EFF8",
+"v% c #DFDEFC",
+"w% c #8181F3",
+"x% c #C0C0E1",
+"y% c #E1E2E4",
+"z% c #E9EAEC",
+"A% c #F1F1F4",
+"B% c #EBECF1",
+"C% c #F1F3FA",
+"D% c #E3E5F1",
+"E% c #D6D8E6",
+"F% c #DDDFEE",
+"G% c #D5D7F4",
+"H% c #CBCDF1",
+"I% c #CDCFEA",
+"J% c #B8BAEB",
+"K% c #DADBF5",
+"L% c #E2E3FB",
+"M% c #BEBFF6",
+"N% c #B3B5E9",
+"O% c #DBDDE8",
+"P% c #E2E4F1",
+"Q% c #D3D5E3",
+"R% c #D8DAED",
+"S% c #E2E3F3",
+"T% c #E6E7F4",
+"U% c #D0D1D9",
+"V% c #E5E7EF",
+"W% c #E3E4E8",
+"X% c #D2D3D6",
+"Y% c #DBDBDE",
+"Z% c #FAFAFC",
+"`% c #6C6CAC",
+" & c #F4F4FA",
+".& c #E4E4E4",
+"+& c #D8D8D8",
+"@& c #E1E1E1",
+"#& c #D1D1D1",
+"$& c #DDDDDD",
+"%& c #C6C4E4",
+"&& c #8080FA",
+"*& c #DCDCE5",
+"=& c #E3E3FB",
+"-& c #CECEF1",
+";& c #C2C2EF",
+">& c #C6C6FD",
+",& c #C7C6DC",
+"'& c #C3C3F8",
+")& c #6F6FF5",
+"!& c #DCDCE9",
+"~& c #E6E6E7",
+"{& c #D9DADA",
+"]& c #E0E0E2",
+"^& c #FAFAFD",
+"/& c #D9D9DC",
+"(& c #E6E7EB",
+"_& c #EFF0F7",
+":& c #EBEDF9",
+"<& c #D7D8F8",
+"[& c #C2C4ED",
+"}& c #D7DAF1",
+"|& c #D1D4E8",
+"1& c #D0D2E6",
+"2& c #D6D8EC",
+"3& c #D2D5E8",
+"4& c #BDBFE6",
+"5& c #DEE0F9",
+"6& c #D7D8FC",
+"7& c #B8B9EE",
+"8& c #B4B5F9",
+"9& c #D6D7EF",
+"0& c #D8D9EC",
+"a& c #DBDCE7",
+"b& c #E1E2EC",
+"c& c #D8D9E6",
+"d& c #DADCEF",
+"e& c #D9DCEE",
+"f& c #E5E7FB",
+"g& c #E1E3F1",
+"h& c #E8E9F2",
+"i& c #DBDCE5",
+"j& c #DEDFE8",
+"k& c #E9E9EE",
+"l& c #ECEDF0",
+"m& c #DADBDE",
+"n& c #EDEDF5",
+"o& c #C7C7D6",
+"p& c #F5F5FD",
+"q& c #A0A0F7",
+"r& c #BBBBFE",
+"s& c #D0D0D0",
+"t& c #DADADA",
+"u& c #D3D3D3",
+"v& c #F7F7FB",
+"w& c #C4C4FC",
+"x& c #6666EC",
+"y& c #F2F3F4",
+"z& c #DADBDD",
+"A& c #DADADC",
+"B& c #D1D1D4",
+"C& c #EDEEF2",
+"D& c #E2E3F8",
+"E& c #9091E9",
+"F& c #CCCEF3",
+"G& c #C3C4EE",
+"H& c #CED0F4",
+"I& c #DBDDF3",
+"J& c #D2D5E9",
+"K& c #E6E9FB",
+"L& c #D5D7EF",
+"M& c #BEC1E9",
+"N& c #CACDEE",
+"O& c #E7E9F3",
+"P& c #E8EAF4",
+"Q& c #E0E3F0",
+"R& c #E8E9F0",
+"S& c #F4F5FA",
+"T& c #F9FAFD",
+"U& c #E6E7EA",
+"V& c #EEEEF0",
+"W& c #DBDBDC",
+"X& c #E8E8E9",
+"Y& c #EBEAF0",
+"Z& c #E4E4FF",
+"`& c #BCBDFC",
+" * c #8485FB",
+".* c #8B8CFE",
+"+* c #C6C5FB",
+"@* c #F2F1F9",
+"#* c #DEDEE6",
+"$* c #DCDCF4",
+"%* c #7878DF",
+"&* c #A3A3F7",
+"** c #CFCFCF",
+"=* c #F8F8FF",
+"-* c #CBCBFD",
+";* c #9090F4",
+">* c #E0E0E1",
+",* c #ECEDEE",
+"'* c #ACABCB",
+")* c #8C8CF2",
+"!* c #9898F9",
+"~* c #9797F2",
+"{* c #A6A7F5",
+"]* c #DFE0F9",
+"^* c #CCCFF0",
+"/* c #D1D3F2",
+"(* c #DFE1F3",
+"_* c #C6C8EF",
+":* c #D3D5E8",
+"<* c #F0F1FA",
+"[* c #E5E6F1",
+"}* c #E7E8F4",
+"|* c #E1E2EE",
+"1* c #E9EAF3",
+"2* c #E1E2F3",
+"3* c #E0E3EF",
+"4* c #EFEFF7",
+"5* c #E6E7EE",
+"6* c #D4D5D9",
+"7* c #E3E4E6",
+"8* c #BBBBEA",
+"9* c #A9A8FF",
+"0* c #9898F5",
+"a* c #9C9BE9",
+"b* c #8A89EB",
+"c* c #7372E8",
+"d* c #BABAF1",
+"e* c #FDFDFF",
+"f* c #C8C8F6",
+"g* c #9B9BFE",
+"h* c #C1C1FE",
+"i* c #E6E6F8",
+"j* c #CDCDF5",
+"k* c #8B8BEF",
+"l* c #BDBDFD",
+"m* c #CFD4DE",
+"n* c #AFBEEC",
+"o* c #A6B1E7",
+"p* c #CCCCCD",
+"q* c #B4B4E1",
+"r* c #E1E1F9",
+"s* c #F6F7FB",
+"t* c #D8D9E1",
+"u* c #CCCDE0",
+"v* c #A7A9F6",
+"w* c #9495F8",
+"x* c #9B9EF1",
+"y* c #B8BAF3",
+"z* c #D9DBF9",
+"A* c #B4B6ED",
+"B* c #D9DBF0",
+"C* c #D3D6E9",
+"D* c #D9DCED",
+"E* c #DCDDE5",
+"F* c #E0E1EC",
+"G* c #CDCED8",
+"H* c #D9DBF1",
+"I* c #ECEEF5",
+"J* c #D6D7DE",
+"K* c #F5F5F9",
+"L* c #D8D8DB",
+"M* c #E1E1E2",
+"N* c #DCDCDD",
+"O* c #EEEEEF",
+"P* c #7C7CF1",
+"Q* c #B6B6FF",
+"R* c #EAE9F9",
+"S* c #F7F7FD",
+"T* c #9796F4",
+"U* c #9E9EF7",
+"V* c #ECECFE",
+"W* c #CCCCEB",
+"X* c #A8A8FD",
+"Y* c #8585F6",
+"Z* c #C3C3F2",
+"`* c #A6A6CF",
+" = c #9E9EE5",
+".= c #E0E0FE",
+"+= c #CACACA",
+"@= c #DDEBE6",
+"#= c #ACD7D1",
+"$= c #B6D0D2",
+"%= c #E7E8EB",
+"&= c #BFC0E0",
+"*= c #B9BAE8",
+"== c #CACBF8",
+"-= c #DBDCFB",
+";= c #DDDFE8",
+">= c #8F91DD",
+",= c #A3A6EF",
+"'= c #D0D2F1",
+")= c #E8EAF8",
+"!= c #D7D9EC",
+"~= c #DCDEF4",
+"{= c #D6D9E9",
+"]= c #DADCEC",
+"^= c #E4E5F2",
+"/= c #E4E6F7",
+"(= c #D9DCF2",
+"_= c #DBDEF3",
+":= c #DADBE3",
+"<= c #ECECF0",
+"[= c #DEDEE0",
+"}= c #F9FAFB",
+"|= c #CCCCCC",
+"1= c #4143EA",
+"2= c #DBDBFD",
+"3= c #CAC9FD",
+"4= c #A0A0FE",
+"5= c #E8E8FE",
+"6= c #DADAF9",
+"7= c #8F8FFA",
+"8= c #CCCCF1",
+"9= c #9E9E9E",
+"0= c #2D2D38",
+"a= c #5A5A71",
+"b= c #DADAE4",
+"c= c #F3FCFA",
+"d= c #BCEFD6",
+"e= c #D8F0E3",
+"f= c #F9FAFC",
+"g= c #D6D6E8",
+"h= c #D1D2E5",
+"i= c #D9DAE7",
+"j= c #DFE1F1",
+"k= c #D6D9EE",
+"l= c #CCCFE4",
+"m= c #CDD0E5",
+"n= c #E7E8F3",
+"o= c #D4D6E3",
+"p= c #D8DAE4",
+"q= c #C6C7C9",
+"r= c #E8E9EC",
+"s= c #E3E3E4",
+"t= c #393AEF",
+"u= c #F7F6FE",
+"v= c #C9C9C9",
+"w= c #C2C2C3",
+"x= c #A4A3DE",
+"y= c #8C8EFD",
+"z= c #F5F5FF",
+"A= c #D9D9FB",
+"B= c #9191FE",
+"C= c #E7E7F8",
+"D= c #464646",
+"E= c #040404",
+"F= c #161616",
+"G= c #9999A7",
+"H= c #C9C9DB",
+"I= c #E3E3EB",
+"J= c #E1E1E7",
+"K= c #F7F7F8",
+"L= c #D9F0E4",
+"M= c #A2DFC0",
+"N= c #DEEBE4",
+"O= c #FCFCFE",
+"P= c #F2F2F6",
+"Q= c #DDDEE5",
+"R= c #DBDCE3",
+"S= c #DFE0F1",
+"T= c #D3D5E5",
+"U= c #CFD1E2",
+"V= c #DBDEEE",
+"W= c #ECEEF4",
+"X= c #F1F3F7",
+"Y= c #FBFBFC",
+"Z= c #E1E0F0",
+"`= c #9291FF",
+" - c #D6D6FF",
+".- c #F8F7FF",
+"+- c #DBDBE9",
+"@- c #6767CB",
+"#- c #9193FF",
+"$- c #D0D0D2",
+"%- c #B6B6FE",
+"&- c #6767E4",
+"*- c #818181",
+"=- c #060612",
+"-- c #3B3B42",
+";- c #6262E6",
+">- c #5757F4",
+",- c #8E8EFE",
+"'- c #A3A3FF",
+")- c #9292E7",
+"!- c #B4B4F3",
+"~- c #EEEEFD",
+"{- c #D3D3E6",
+"]- c #C3C3D5",
+"^- c #F1F1F9",
+"/- c #D4D4D4",
+"(- c #D0EDDE",
+"_- c #8CD0AC",
+":- c #D3D6D5",
+"<- c #EBECEE",
+"[- c #EEEEF3",
+"}- c #D8D8E0",
+"|- c #D9DCF0",
+"1- c #EAECF9",
+"2- c #EDEEF8",
+"3- c #D4D5E1",
+"4- c #D8DAE3",
+"5- c #DCDDEE",
+"6- c #E1E2F0",
+"7- c #FDFDFE",
+"8- c #B4B4B4",
+"9- c #969696",
+"0- c #767676",
+"a- c #5D5D5D",
+"b- c #515151",
+"c- c #434343",
+"d- c #494949",
+"e- c #555555",
+"f- c #696969",
+"g- c #8C8C8C",
+"h- c #ACACAC",
+"i- c #D4D3DC",
+"j- c #C4C4F4",
+"k- c #A9AAFD",
+"l- c #BFBEFA",
+"m- c #E8E5FD",
+"n- c #B5B4F5",
+"o- c #5656E1",
+"p- c #C7C7FC",
+"q- c #DEDEE7",
+"r- c #B8B8FA",
+"s- c #7979E4",
+"t- c #D1D1DB",
+"u- c #363673",
+"v- c #8C8CBC",
+"w- c #E2E2E5",
+"x- c #B9B9D9",
+"y- c #CBCBFF",
+"z- c #ABABFB",
+"A- c #5B5BCD",
+"B- c #5C5CE6",
+"C- c #8D8DFE",
+"D- c #6767FC",
+"E- c #4B4BE2",
+"F- c #9292FF",
+"G- c #9C9CFF",
+"H- c #B5B5FD",
+"I- c #DDDDFE",
+"J- c #C5C5D9",
+"K- c #CFCFE0",
+"L- c #E9E9F3",
+"M- c #E7E7EE",
+"N- c #FEFEFF",
+"O- c #DFF9EF",
+"P- c #A5E2C2",
+"Q- c #EAEAEC",
+"R- c #E0E0E5",
+"S- c #E5E8FB",
+"T- c #E8EBF9",
+"U- c #F0F2F8",
+"V- c #E0E3EB",
+"W- c #EAECF3",
+"X- c #DBDDE9",
+"Y- c #DBDCED",
+"Z- c #F5F6FA",
+"`- c #A2A3A3",
+" ; c #525252",
+".; c #424242",
+"+; c #4D4D4D",
+"@; c #9A9A9A",
+"#; c #C5C5C5",
+"$; c #B8B8F9",
+"%; c #4F50EA",
+"&; c #2E2FED",
+"*; c #8282FC",
+"=; c #BCBAF0",
+"-; c #E9E8F2",
+";; c #D3D3E7",
+">; c #D2D2F4",
+",; c #C4C4FE",
+"'; c #9999F2",
+"); c #D8D8F4",
+"!; c #8282E7",
+"~; c #B7B7FF",
+"{; c #E9E9F5",
+"]; c #B1B1D9",
+"^; c #AFAFEC",
+"/; c #8F8FEA",
+"(; c #8080F8",
+"_; c #7979FE",
+":; c #5D5DFC",
+"<; c #4141E9",
+"[; c #5757E6",
+"}; c #9797FD",
+"|; c #8E8EEE",
+"1; c #9D9DE4",
+"2; c #E6E6FF",
+"3; c #F9F9FE",
+"4; c #CCCCDF",
+"5; c #F3F3FF",
+"6; c #EEEEF6",
+"7; c #D6D6DC",
+"8; c #FBFBFD",
+"9; c #FBFCFB",
+"0; c #CED6D2",
+"a; c #D0F5E3",
+"b; c #A8DBC0",
+"c; c #EAEBF0",
+"d; c #E6E8F5",
+"e; c #DEE1EC",
+"f; c #E1E3ED",
+"g; c #EDEFF5",
+"h; c #E4E6EF",
+"i; c #E5E7F4",
+"j; c #E5E6F4",
+"k; c #ECEDF1",
+"l; c #C6C6C7",
+"m; c #585858",
+"n; c #5F5F5F",
+"o; c #F7F6F7",
+"p; c #CAC8FB",
+"q; c #ACAAFE",
+"r; c #DDDCFA",
+"s; c #9999E0",
+"t; c #5757F0",
+"u; c #4E4EFE",
+"v; c #3434ED",
+"w; c #9999EB",
+"x; c #FBFBFF",
+"y; c #C1C1EC",
+"z; c #7E7EE5",
+"A; c #C8C8DD",
+"B; c #B1B1F8",
+"C; c #6363E1",
+"D; c #7878FC",
+"E; c #5D5DFD",
+"F; c #5353F3",
+"G; c #7F7FFF",
+"H; c #A8A8FF",
+"I; c #A4A4FA",
+"J; c #9F9FDF",
+"K; c #E0E0FF",
+"L; c #D4D4E7",
+"M; c #EEEEFB",
+"N; c #ECECF5",
+"O; c #C7C7C7",
+"P; c #E3EDE8",
+"Q; c #DDEAE3",
+"R; c #EFF4F1",
+"S; c #E8ECEC",
+"T; c #D2F6E6",
+"U; c #B7E0CB",
+"V; c #DFE0E3",
+"W; c #E2E5F7",
+"X; c #E3E6FA",
+"Y; c #D4D7E5",
+"Z; c #E8EAF3",
+"`; c #D9DCEC",
+" > c #E4E5F6",
+".> c #E2E5FB",
+"+> c #D3D5EB",
+"@> c #F1F1F5",
+"#> c #F5F5F6",
+"$> c #5A5A5A",
+"%> c #6E6E6E",
+"&> c #8F8F8F",
+"*> c #A1A1A1",
+"=> c #A4A4A4",
+"-> c #A6A6A6",
+";> c #949494",
+">> c #6F6F6F",
+",> c #E5E4F5",
+"'> c #BFBEFF",
+")> c #E6E5FF",
+"!> c #FAFAFF",
+"~> c #D5D5F8",
+"{> c #DCDCF8",
+"]> c #B4B4EF",
+"^> c #9191F2",
+"/> c #CBCBF6",
+"(> c #DCDCDE",
+"_> c #BFBFDD",
+":> c #C1C1F5",
+"<> c #B3B3FC",
+"[> c #7E7EED",
+"}> c #5656DE",
+"|> c #6C6CFE",
+"1> c #6F6FFD",
+"2> c #5A5AF4",
+"3> c #7979F7",
+"4> c #9E9EFD",
+"5> c #AAAAF9",
+"6> c #CECEFF",
+"7> c #E1E1FE",
+"8> c #EAEAFD",
+"9> c #E3E3F4",
+"0> c #E9E9F7",
+"a> c #B7DBC9",
+"b> c #9FCEB5",
+"c> c #E1EFE8",
+"d> c #D3E3DB",
+"e> c #C3F5DB",
+"f> c #D4F3E3",
+"g> c #E5E5E8",
+"h> c #EAEBEF",
+"i> c #DFE1F7",
+"j> c #E7E9FA",
+"k> c #D7D9EA",
+"l> c #D3D5DE",
+"m> c #E4E5E9",
+"n> c #9B9B9B",
+"o> c #5B5B5B",
+"p> c #C8C8C8",
+"q> c #A9A9A9",
+"r> c #C3C3C3",
+"s> c #BDBDBD",
+"t> c #454545",
+"u> c #BCBCBC",
+"v> c #DDDDE8",
+"w> c #E0E0E4",
+"x> c #9F9FE9",
+"y> c #ADADF8",
+"z> c #EDEDFF",
+"A> c #EBEBF4",
+"B> c #C0C0E6",
+"C> c #8484DF",
+"D> c #7C7CEF",
+"E> c #7676FD",
+"F> c #4F4FFA",
+"G> c #4B4BF5",
+"H> c #6969F8",
+"I> c #7F7FF3",
+"J> c #7E7EE0",
+"K> c #9494DE",
+"L> c #C2C2EE",
+"M> c #F8F8FE",
+"N> c #E7E7F4",
+"O> c #D2D2DF",
+"P> c #F7F7FC",
+"Q> c #B7E2CC",
+"R> c #EAF4EF",
+"S> c #C8CFCC",
+"T> c #A1CBB5",
+"U> c #A7D5BD",
+"V> c #D7E6DE",
+"W> c #E0E1E1",
+"X> c #F4F4F8",
+"Y> c #E9EAF0",
+"Z> c #D5D6DF",
+"`> c #D5D6DD",
+" , c #D3D6EC",
+"., c #F1F1FA",
+"+, c #EDEDF2",
+"@, c #727272",
+"#, c #979797",
+"$, c #CBCBCB",
+"%, c #B8B8B8",
+"&, c #C0C0C0",
+"*, c #BABABA",
+"=, c #AEAEAE",
+"-, c #BFBFBF",
+";, c #A3A3A3",
+">, c #C2C2C2",
+",, c #7373CC",
+"', c #9595F3",
+"), c #F1F1FE",
+"!, c #EAEAFE",
+"~, c #D1D1FD",
+"{, c #B2B2F8",
+"], c #8181E6",
+"^, c #5D5DDD",
+"/, c #5B5BEC",
+"(, c #5959FE",
+"_, c #4A4AEC",
+":, c #5959E1",
+"<, c #9494FD",
+"[, c #A0A0F2",
+"}, c #E4E4FD",
+"|, c #F9F9FF",
+"1, c #E4E4EC",
+"2, c #93C7AC",
+"3, c #9BC9B0",
+"4, c #F9FBFA",
+"5, c #EAF8F1",
+"6, c #94CEB0",
+"7, c #D2F4E5",
+"8, c #E0ECE7",
+"9, c #D9DBDA",
+"0, c #F4F4F5",
+"a, c #E6E7F8",
+"b, c #E3E4ED",
+"c, c #E2E3EF",
+"d, c #D4D6E7",
+"e, c #E4E5EE",
+"f, c #EBEBED",
+"g, c #A5A5A5",
+"h, c #B3B3B3",
+"i, c #B9B9B9",
+"j, c #B1B1B1",
+"k, c #B0B0B0",
+"l, c #BEBEBE",
+"m, c #A7A7A7",
+"n, c #B5B5B5",
+"o, c #7A7A7A",
+"p, c #FAFBFC",
+"q, c #6878B5",
+"r, c #8B94E5",
+"s, c #CCCCE7",
+"t, c #B5B5EB",
+"u, c #ABABFD",
+"v, c #7A7AE7",
+"w, c #5858E1",
+"x, c #5151F5",
+"y, c #2F2FE2",
+"z, c #4747DF",
+"A, c #8181F9",
+"B, c #9595F7",
+"C, c #A2A2F5",
+"D, c #CACAFC",
+"E, c #ECECFD",
+"F, c #EDEDF9",
+"G, c #E6E6F5",
+"H, c #DFE6E2",
+"I, c #78AD92",
+"J, c #ACD5BF",
+"K, c #EFF0EF",
+"L, c #CDD3D0",
+"M, c #DDF5E9",
+"N, c #A2DFBF",
+"O, c #AAC4B6",
+"P, c #FCFEFD",
+"Q, c #F1F2F7",
+"R, c #E3E4F4",
+"S, c #E0E2EE",
+"T, c #D5D8E6",
+"U, c #E2E2E7",
+"V, c #838383",
+"W, c #AAAAAA",
+"X, c #C4C4C4",
+"Y, c #AFAFAF",
+"Z, c #ADADAD",
+"`, c #B7B7B7",
+" ' c #B6B6B6",
+".' c #B2B2B2",
+"+' c #636363",
+"@' c #ABABAB",
+"#' c #E6EEEB",
+"$' c #90BEAC",
+"%' c #C0E9DA",
+"&' c #CDCDF1",
+"*' c #BEBEFB",
+"=' c #8C8CE4",
+"-' c #6E6EE4",
+";' c #6464F5",
+">' c #3D3DEA",
+",' c #2A2AD6",
+"'' c #4545D7",
+")' c #6E6EE3",
+"!' c #9696EE",
+"~' c #BFBFFA",
+"{' c #D5D5FD",
+"]' c #E1E1FB",
+"^' c #F0F0FB",
+"/' c #E3F1EA",
+"(' c #A3D7BC",
+"_' c #CEF0DE",
+":' c #E8F0EC",
+"<' c #B5D6C6",
+"[' c #C8F1DD",
+"}' c #DFF1E7",
+"|' c #E4E4E7",
+"1' c #F5F6FB",
+"2' c #E6E7F6",
+"3' c #DEE1F6",
+"4' c #DFE1EE",
+"5' c #E1E3EB",
+"6' c #E4E9F3",
+"7' c #BCD3CF",
+"8' c #B6CCCE",
+"9' c #D1DCE5",
+"0' c #CFD2E4",
+"a' c #EDEDEF",
+"b' c #BBBBBB",
+"c' c #565656",
+"d' c #CCDCD4",
+"e' c #8FC0A6",
+"f' c #CCF0DD",
+"g' c #E8E8F9",
+"h' c #C5C5F2",
+"i' c #A0A0E8",
+"j' c #7D7DE0",
+"k' c #7A7AF3",
+"l' c #5D5DF3",
+"m' c #1C1CD1",
+"n' c #3E3EE1",
+"o' c #6D6DF3",
+"p' c #8181EF",
+"q' c #A4A4F6",
+"r' c #CECEFE",
+"s' c #DDDDFD",
+"t' c #E6E6FA",
+"u' c #F0F0FA",
+"v' c #CDE4D8",
+"w' c #8EC1A6",
+"x' c #C1DCCD",
+"y' c #DCEFE5",
+"z' c #AFD8C2",
+"A' c #BFDFD0",
+"B' c #F7FEFE",
+"C' c #F1F2F5",
+"D' c #F1F1F6",
+"E' c #DBDEF0",
+"F' c #E0E2EF",
+"G' c #E2E9F1",
+"H' c #C7D5DC",
+"I' c #ABB7C0",
+"J' c #A9B5BE",
+"K' c #D9DCE9",
+"L' c #EBEBF0",
+"M' c #DDDDE0",
+"N' c #4B4B4B",
+"O' c #A2A2A2",
+"P' c #898989",
+"Q' c #9C9C9C",
+"R' c #A8A8A8",
+"S' c #C6C6C6",
+"T' c #919191",
+"U' c #C7DDD1",
+"V' c #9CCDB3",
+"W' c #D2EDDF",
+"X' c #C1C1DA",
+"Y' c #B5B5EA",
+"Z' c #9090E0",
+"`' c #7979E5",
+" ) c #8383FA",
+".) c #5656F0",
+"+) c #2828DD",
+"@) c #5252ED",
+"#) c #7070EE",
+"$) c #9191F4",
+"%) c #B9C7E9",
+"&) c #D5E7E3",
+"*) c #EEF6F2",
+"=) c #F3F6F5",
+"-) c #E9EEEB",
+";) c #F3F5F4",
+">) c #C0DFCF",
+",) c #91C4A9",
+"') c #92C9AB",
+")) c #A2CEB6",
+"!) c #AFCABC",
+"~) c #D7E0DB",
+"{) c #E4E4E6",
+"]) c #EDEEF1",
+"^) c #E6E7EC",
+"/) c #DBDDEA",
+"() c #EBEEFC",
+"_) c #DEE0EA",
+":) c #C9DCE0",
+"<) c #B0BDC6",
+"[) c #CFD1E4",
+"}) c #D2D4E7",
+"|) c #BCCAD6",
+"1) c #CFDBE3",
+"2) c #E9EBF1",
+"3) c #F0F1F5",
+"4) c #909090",
+"5) c #8E8E8E",
+"6) c #9F9F9F",
+"7) c #484848",
+"8) c #C1DFD0",
+"9) c #B0E2C8",
+"0) c #E2F6EB",
+"a) c #E4E4EA",
+"b) c #D3D3F4",
+"c) c #A1A1DE",
+"d) c #8888E1",
+"e) c #8AA6CF",
+"f) c #72B19B",
+"g) c #4FA075",
+"h) c #56A87D",
+"i) c #87CCA8",
+"j) c #9FD8BA",
+"k) c #AEDDC4",
+"l) c #C9E9D8",
+"m) c #ADE2C5",
+"n) c #7ED8A9",
+"o) c #C5E8D5",
+"p) c #E1EBE6",
+"q) c #E2E6E4",
+"r) c #E8E9EA",
+"s) c #F5F5FA",
+"t) c #DCDEEB",
+"u) c #CEE0E6",
+"v) c #D1D3E6",
+"w) c #ADAEBD",
+"x) c #B6B8D3",
+"y) c #9EB6C4",
+"z) c #99CABC",
+"A) c #A0D2BD",
+"B) c #93C3AD",
+"C) c #A9D2BF",
+"D) c #C1E3D2",
+"E) c #C1D9CD",
+"F) c #CDDDD5",
+"G) c #EDF2EF",
+"H) c #989898",
+"I) c #929292",
+"J) c #FDFEFE",
+"K) c #F9FCFA",
+"L) c #F4F8F6",
+"M) c #EFF1F1",
+"N) c #F7FAF8",
+"O) c #FCFDFD",
+"P) c #F9FDFB",
+"Q) c #DEEEE6",
+"R) c #C6DFD2",
+"S) c #E4EEE9",
+"T) c #F3F4F3",
+"U) c #E9EBF8",
+"V) c #E8EAF1",
+"W) c #D8DAE6",
+"X) c #B0B6CE",
+"Y) c #ADB1CF",
+"Z) c #B5C5D8",
+"`) c #95C1BA",
+" ! c #CFEAE6",
+".! c #E8F9F9",
+"+! c #CAEDDD",
+"@! c #C8EADD",
+"#! c #BAE6D1",
+"$! c #99CEB3",
+"%! c #9DD5BA",
+"&! c #A1DFBF",
+"*! c #82C0A0",
+"=! c #89BDA2",
+"-! c #B5DFC9",
+";! c #B8D8C7",
+">! c #BAD0C5",
+",! c #5C5C5C",
+"'! c #8A8A8A",
+")! c #717171",
+"!! c #797D7B",
+"~! c #444544",
+"{! c #535454",
+"]! c #868686",
+"^! c #7E7E7E",
+"/! c #4E4E4E",
+"(! c #666666",
+"_! c #686868",
+":! c #505251",
+"<! c #69726D",
+"[! c #9EA7A2",
+"}! c #DADBDA",
+"|! c #9D9D9D",
+"1! c #7C7C7C",
+"2! c #5E5E5E",
+"3! c #D3DBE7",
+"4! c #A1B8C8",
+"5! c #85A8C6",
+"6! c #A6D1C2",
+"7! c #BCCCC7",
+"8! c #F5F6F6",
+"9! c #FDFEFD",
+"0! c #F2F8F5",
+"a! c #F8FEFD",
+"b! c #F2FFFA",
+"c! c #D4E8DE",
+"d! c #EAF9F7",
+"e! c #FCFEFE",
+"f! c #CFEEDE",
+"g! c #B1DAC5",
+"h! c #CFECDD",
+"i! c #ADD7C4",
+"j! c #97C0AB",
+"k! c #535459",
+"l! c #939393",
+"m! c #888888",
+"n! c #626262",
+"o! c #C9CAC9",
+"p! c #B2B9B5",
+"q! c #616161",
+"r! c #737373",
+"s! c #C5C5CA",
+"t! c #D1D4E7",
+"u! c #97AAD4",
+"v! c #95B4D6",
+"w! c #DDEAE4",
+"x! c #FAFDFC",
+"y! c #EBF3EF",
+"z! c #F4FEFC",
+"A! c #E0ECE6",
+"B! c #EDF0EF",
+"C! c #727296",
+"D! c #58588F",
+"E! c #54547E",
+"F! c #6B6B8A",
+"G! c #818190",
+"H! c #87878F",
+"I! c #959595",
+"J! c #848484",
+"K! c #4F4F4F",
+"L! c #6C6C6C",
+"M! c #9CA09E",
+"N! c #7CA992",
+"O! c #DBDBE0",
+"P! c #D7DAEE",
+"Q! c #E8E9F6",
+"R! c #DCDDF4",
+"S! c #A2A2F1",
+"T! c #AFAFFB",
+"U! c #7E7E9B",
+"V! c #69698B",
+"W! c #43437A",
+"X! c #484886",
+"Y! c #5A5A90",
+"Z! c #40408F",
+"`! c #49499D",
+" ~ c #6B6BB1",
+".~ c #6B6BAD",
+"+~ c #8484BB",
+"@~ c #B0B0D5",
+"#~ c #CACAE1",
+"$~ c #D2D2D9",
+"%~ c #8B8B8B",
+"&~ c #656565",
+"*~ c #6B6B6B",
+"=~ c #6D6D6D",
+"-~ c #7D9086",
+";~ c #6A6A6A",
+">~ c #7F7F7F",
+",~ c #606060",
+"'~ c #505050",
+")~ c #EFF0F1",
+"!~ c #E5E7F5",
+"~~ c #DDDEEB",
+"{~ c #C5C6E8",
+"]~ c #8585E5",
+"^~ c #AAAAF0",
+"/~ c #919195",
+"(~ c #838388",
+"_~ c #727284",
+":~ c #6E6E85",
+"<~ c #79798F",
+"[~ c #66668E",
+"}~ c #6E6E9D",
+"|~ c #9090B5",
+"1~ c #6969B2",
+"2~ c #5D5DB3",
+"3~ c #8888DD",
+"4~ c #7D7DE5",
+"5~ c #5050CF",
+"6~ c #6767DD",
+"7~ c #7979DD",
+"8~ c #9292E3",
+"9~ c #C2C2F9",
+"0~ c #D9D9FA",
+"a~ c #D3D3E8",
+"b~ c #F6F6F7",
+"c~ c #A0A0A0",
+"d~ c #484949",
+"e~ c #7D7D7D",
+"f~ c #F2F3F8",
+"g~ c #E7E9F7",
+"h~ c #EEF0FC",
+"i~ c #B7B7E8",
+"j~ c #8484EA",
+"k~ c #BEBEF2",
+"l~ c #A5A5A8",
+"m~ c #B4B4BB",
+"n~ c #ACACC1",
+"o~ c #A1A1BE",
+"p~ c #C5C5E2",
+"q~ c #BFBFE9",
+"r~ c #A8A8E7",
+"s~ c #AFAFF0",
+"t~ c #8888DE",
+"u~ c #7272D1",
+"v~ c #9E9EFC",
+"w~ c #9E9EF9",
+"x~ c #6161E1",
+"y~ c #7777FB",
+"z~ c #A0A0F4",
+"A~ c #9090DA",
+"B~ c #B8B8ED",
+"C~ c #D5D5E9",
+"D~ c #ECECEE",
+"E~ c #999999",
+"F~ c #787878",
+"G~ c #616462",
+"H~ c #EFEFF0",
+"I~ c #EBECED",
+"J~ c #EBECF6",
+"K~ c #ECEEFC",
+"L~ c #E8E8EC",
+"M~ c #F8F8F9",
+"N~ c #B0B0F0",
+"O~ c #9595F8",
+"P~ c #747474",
+"Q~ c #B6B6D3",
+"R~ c #D3D3F7",
+"S~ c #A6A6E3",
+"T~ c #B8B8F1",
+"U~ c #E3E3FC",
+"V~ c #B2B2F3",
+"W~ c #7979DA",
+"X~ c #8787EB",
+"Y~ c #9C9CEA",
+"Z~ c #EDEDF7",
+"`~ c #535353",
+" { c #616261",
+".{ c #777777",
+"+{ c #4C4C4C",
+"@{ c #9AB9A9",
+"#{ c #898F8C",
+"${ c #BFBFCA",
+"%{ c #C6C6E3",
+"&{ c #D7D7E4",
+"*{ c #C0C0C1",
+"={ c #808080",
+"-{ c #F2F3F7",
+";{ c #CED1E3",
+">{ c #E3E5F0",
+",{ c #F1F2F8",
+"'{ c #9797E4",
+"){ c #9696FB",
+"!{ c #F0F0FF",
+"~{ c #545454",
+"{{ c #878787",
+"]{ c #E5E5F3",
+"^{ c #C8C8E8",
+"/{ c #CACAEF",
+"({ c #C2C2E7",
+"_{ c #F7F7F9",
+":{ c #464647",
+"<{ c #474770",
+"[{ c #5D5D7E",
+"}{ c #78788E",
+"|{ c #898997",
+"1{ c #949496",
+"2{ c #898C8B",
+"3{ c #858585",
+"4{ c #BABBBA",
+"5{ c #95B0A2",
+"6{ c #BCC8C2",
+"7{ c #9C9CC3",
+"8{ c #6969E2",
+"9{ c #B0B0E8",
+"0{ c #E5E8F5",
+"a{ c #9393EC",
+"b{ c #9090FF",
+"c{ c #7B7B7B",
+"d{ c #434344",
+"e{ c #393968",
+"f{ c #414176",
+"g{ c #4D4D89",
+"h{ c #41418E",
+"i{ c #404A8A",
+"j{ c #759792",
+"k{ c #779B89",
+"l{ c #86A293",
+"m{ c #484948",
+"n{ c #8D8D8D",
+"o{ c #D6D6D7",
+"p{ c #8282BA",
+"q{ c #3232D8",
+"r{ c #8483E1",
+"s{ c #838392",
+"t{ c #8687A6",
+"u{ c #86868D",
+"v{ c #9696A4",
+"w{ c #9B9B9F",
+"x{ c #D2D3D4",
+"y{ c #D2D3D7",
+"z{ c #DADDEA",
+"A{ c #E9EBF2",
+"B{ c #DDDFEC",
+"C{ c #DBDCE2",
+"D{ c #D0D0D3",
+"E{ c #DADAEA",
+"F{ c #7C7CD9",
+"G{ c #8282E6",
+"H{ c #474747",
+"I{ c #4F4F50",
+"J{ c #636371",
+"K{ c #67677A",
+"L{ c #6C6C85",
+"M{ c #626285",
+"N{ c #717891",
+"O{ c #91A8A2",
+"P{ c #7B9B8A",
+"Q{ c #719683",
+"R{ c #FBFCFC",
+"S{ c #444444",
+"T{ c #C9C9D1",
+"U{ c #9191D0",
+"V{ c #5F5ED9",
+"W{ c #908FD9",
+"X{ c #8080A0",
+"Y{ c #5A5C9A",
+"Z{ c #61608E",
+"`{ c #99999A",
+" ] c #85859F",
+".] c #5657A0",
+"+] c #9090A1",
+"@] c #C6C6CA",
+"#] c #D4D5DD",
+"$] c #F2F5FE",
+"%] c #CACAE7",
+"&] c #7070D3",
+"*] c #8686DA",
+"=] c #A9ADAB",
+"-] c #A2A9A6",
+";] c #A1ADA8",
+">] c #828282",
+",] c #575757",
+"'] c #C1C1CF",
+")] c #9595D8",
+"!] c #8A89DE",
+"~] c #C2C1E0",
+"{] c #8C8D93",
+"]] c #61618A",
+"^] c #373786",
+"/] c #8A8A94",
+"(] c #585896",
+"_] c #2A2A90",
+":] c #5C5B8F",
+"<] c #ACACB2",
+"[] c #E0E2F6",
+"}] c #E7E9F6",
+"|] c #F1F2F6",
+"1] c #D8D8FB",
+"2] c #8E8EF0",
+"3] c #ADADEF",
+"4] c #777877",
+"5] c #A7A7BC",
+"6] c #7676C7",
+"7] c #8F8FD3",
+"8] c #C3C3D0",
+"9] c #84848B",
+"0] c #4F4F7C",
+"a] c #31317B",
+"b] c #80808F",
+"c] c #5E5D91",
+"d] c #4A498B",
+"e] c #45458E",
+"f] c #9898A3",
+"g] c #8989A3",
+"h] c #F1F1F7",
+"i] c #676767",
+"j] c #BEBEEF",
+"k] c #757575",
+"l] c #6E7A74",
+"m] c #7C7E7D",
+"n] c #777A78",
+"o] c #7A7D7C",
+"p] c #868786",
+"q] c #A3A3C0",
+"r] c #7777CC",
+"s] c #A3A3D1",
+"t] c #C8C7C8",
+"u] c #5C5C8C",
+"v] c #323378",
+"w] c #4A4B72",
+"x] c #727288",
+"y] c #646491",
+"z] c #747497",
+"A] c #6F6FA0",
+"B] c #8080AC",
+"C] c #8282AD",
+"D] c #D9DAE1",
+"E] c #D7D9DF",
+"F] c #F0F0F4",
+"G] c #A7A7EB",
+"H] c #6B6BDC",
+"I] c #D1D1EF",
+"J] c #295B41",
+"K] c #406B55",
+"L] c #375E4A",
+"M] c #436051",
+"N] c #7D807F",
+"O] c #707070",
+"P] c #ABABC3",
+"Q] c #7777D0",
+"R] c #BCBCD9",
+"S] c #52538A",
+"T] c #575674",
+"U] c #6D6D75",
+"V] c #646487",
+"W] c #55558B",
+"X] c #78788F",
+"Y] c #7D7DA0",
+"Z] c #6C6BB1",
+"`] c #9C9BB8",
+" ^ c #7C7CBA",
+".^ c #F1F1F3",
+"+^ c #E9EBF5",
+"@^ c #DEDFEC",
+"#^ c #DADBE8",
+"$^ c #B4B4FA",
+"%^ c #7979EE",
+"&^ c #F0F0FC",
+"*^ c #4F6A5D",
+"=^ c #7B807F",
+"-^ c #727875",
+";^ c #666F6B",
+">^ c #646464",
+",^ c #BBBBC0",
+"'^ c #A6A6C9",
+")^ c #D1D1D8",
+"!^ c #767678",
+"~^ c #5C5C8B",
+"{^ c #82828F",
+"]^ c #9A99A5",
+"^^ c #6160A8",
+"/^ c #7C7AB2",
+"(^ c #5F5EC0",
+"_^ c #CECFD1",
+":^ c #E9ECF9",
+"<^ c #E2E4F8",
+"[^ c #EBEBF3",
+"}^ c #DEE1F3",
+"|^ c #F1F2FC",
+"1^ c #A0A0F3",
+"2^ c #7676E7",
+"3^ c #75827C",
+"4^ c #6D827A",
+"5^ c #62628E",
+"6^ c #6A6A96",
+"7^ c #9A9A9F",
+"8^ c #A09FBC",
+"9^ c #7776C2",
+"0^ c #5050CB",
+"a^ c #E6E9FC",
+"b^ c #CACCD3",
+"c^ c #E7EAFC",
+"d^ c #E8EAF7",
+"e^ c #E5E7FA",
+"f^ c #A4A5F3",
+"g^ c #8E8EE9",
+"h^ c #787A79",
+"i^ c #62766B",
+"j^ c #546D60",
+"k^ c #7D7D7E",
+"l^ c #70708A",
+"m^ c #72728F",
+"n^ c #C1C1C2",
+"o^ c #7676CC",
+"p^ c #4243D2",
+"q^ c #595959",
+"r^ c #FBFCFD",
+"s^ c #D7D8E1",
+"t^ c #E8EBFC",
+"u^ c #E2E5F9",
+"v^ c #DBDDF4",
+"w^ c #A4A5EB",
+"x^ c #A6A6E8",
+"y^ c #797979",
+"z^ c #838484",
+"A^ c #576D62",
+"B^ c #5E7268",
+"C^ c #8C8E8D",
+"D^ c #B6B6B7",
+"E^ c #ADADBF",
+"F^ c #A9A9D7",
+"G^ c #E3E5ED",
+"H^ c #DADCE9",
+"I^ c #DCDEF1",
+"J^ c #DCE0F2",
+"K^ c #D5D7F1",
+"L^ c #B4B5E4",
+"M^ c #B9BAE7",
+"N^ c #F2F2F4",
+"O^ c #7E8683",
+"P^ c #6E867A",
+"Q^ c #87938E",
+"R^ c #5F5F61",
+"S^ c #F0F0F2",
+"T^ c #E5E6F3",
+"U^ c #EBEDF4",
+"V^ c #C1C3EB",
+"W^ c #CED0EC",
+"X^ c #E5E6EA",
+"Y^ c #858686",
+"Z^ c #748C80",
+"`^ c #859C91",
+" / c #AAAEAC",
+"./ c #D6D6E9",
+"+/ c #56565C",
+"@/ c #7B7B8E",
+"#/ c #838385",
+"$/ c #747486",
+"%/ c #858591",
+"&/ c #9C9CA1",
+"*/ c #DFDFE4",
+"=/ c #E1E4F8",
+"-/ c #E6E8EF",
+";/ c #587264",
+">/ c #6A8B7A",
+",/ c #A5AAA7",
+"'/ c #BFBFEF",
+")/ c #9999AA",
+"!/ c #6F6F7C",
+"~/ c #5F5F6A",
+"{/ c #79797A",
+"]/ c #79797F",
+"^/ c #3C3C7C",
+"// c #6D6D8E",
+"(/ c #7272A0",
+"_/ c #3D3DAC",
+":/ c #3C3CB4",
+"</ c #5C5DBA",
+"[/ c #8E8EBB",
+"}/ c #B7B7BF",
+"|/ c #E7E8F5",
+"1/ c #D7D9E5",
+"2/ c #D2D3DA",
+"3/ c #C5C8EB",
+"4/ c #878988",
+"5/ c #648071",
+"6/ c #6F8E7E",
+"7/ c #8585DA",
+"8/ c #C9C9E2",
+"9/ c #9E9EA7",
+"0/ c #7B7B7E",
+"a/ c #7B7B80",
+"b/ c #25257B",
+"c/ c #74748A",
+"d/ c #4C4C9C",
+"e/ c #5F5F94",
+"f/ c #7B7A9F",
+"g/ c #6969AE",
+"h/ c #4F4FAB",
+"i/ c #9495B5",
+"j/ c #C2C2C5",
+"k/ c #DFDFE1",
+"l/ c #F7F8FC",
+"m/ c #E4E7FA",
+"n/ c #C3C5F2",
+"o/ c #C5C7F1",
+"p/ c #D8DAE1",
+"q/ c #E3E4E9",
+"r/ c #818684",
+"s/ c #749181",
+"t/ c #859F91",
+"u/ c #CFCFD9",
+"v/ c #6262C5",
+"w/ c #7A7AE9",
+"x/ c #5E5E6C",
+"y/ c #252589",
+"z/ c #939398",
+"A/ c #5B5BA5",
+"B/ c #9494AD",
+"C/ c #B1B1B4",
+"D/ c #ACACBA",
+"E/ c #4545B0",
+"F/ c #7D7DB1",
+"G/ c #D3D3D4",
+"H/ c #E0E1E3",
+"I/ c #CBCCD0",
+"J/ c #EAECF8",
+"K/ c #BEBFF7",
+"L/ c #C8CAF6",
+"M/ c #DDDFF5",
+"N/ c #E5E6EB",
+"O/ c #6C7671",
+"P/ c #678474",
+"Q/ c #849A8E",
+"R/ c #D1D1E8",
+"S/ c #7C7CDB",
+"T/ c #9797E5",
+"U/ c #919196",
+"V/ c #BCBCD5",
+"W/ c #8E8EC4",
+"X/ c #B5B5C8",
+"Y/ c #D0D1F0",
+"Z/ c #D5D7E3",
+"`/ c #BCBDED",
+" ( c #697770",
+".( c #668274",
+"+( c #899991",
+"@( c #D0D0ED",
+"#( c #8E8EE1",
+"$( c #A0A0DB",
+"%( c #818185",
+"&( c #A7A7C0",
+"*( c #BBBBD4",
+"=( c #CBCBDE",
+"-( c #CBCBDC",
+";( c #ABABAC",
+">( c #D3D4D6",
+",( c #D9D9DE",
+"'( c #DEE0EC",
+")( c #D9DBE7",
+"!( c #D8DBEB",
+"~( c #EEEFF3",
+"{( c #F2F2F3",
+"]( c #7E8C85",
+"^( c #829A8E",
+"/( c #99A49E",
+"(( c #DFDFEE",
+"_( c #B6B6DC",
+":( c #B7B7CD",
+"<( c #959596",
+"[( c #B8B8B9",
+"}( c #C0C0C2",
+"|( c #C0C1C4",
+"1( c #D1D2D8",
+"2( c #D8D9E0",
+"3( c #D0D1DE",
+"4( c #DADCE8",
+"5( c #CED1E6",
+"6( c #DEE2E0",
+"7( c #E8EBE9",
+"8( c #AFB4B2",
+"9( c #9D9D9F",
+"0( c #A3A4A6",
+"a( c #B8B9BC",
+"b( c #C3C4CA",
+"c( c #BABBC1",
+"d( c #CACAD6",
+"e( c #D1D3E7",
+"f( c #D8DBE8",
+"g( c #D7D7DE",
+"h( c #E7E7EB",
+"i( c #4A4A4A",
+"j( c #A2A2A4",
+"k( c #A8A8AB",
+"l( c #ADAEB3",
+"m( c #BCBDC3",
+"n( c #BABBC6",
+"o( c #B8B9C6",
+"p( c #C4C6D3",
+"q( c #CED0E2",
+"r( c #DDDFEA",
+"s( c #D4D6EA",
+"t( c #D6D9ED",
+"u( c #E0E3F2",
+"v( c #DEE1F0",
+"w( c #D6D7DB",
+"x( c #D9DADB",
+"y( c #D9D9DA",
+"z( c #9E9E9F",
+"A( c #9A9A9C",
+"B( c #98999B",
+"C( c #939395",
+"D( c #999A9C",
+"E( c #A2A2A8",
+"F( c #A8A9AF",
+"G( c #ADAFB9",
+"H( c #B8BAC6",
+"I( c #C2C3D0",
+"J( c #C2C5D7",
+"K( c #C7CADD",
+"L( c #CFD2E5",
+"M( c #D4D7E6",
+"N( c #CECFDE",
+"O( c #D5D8EE",
+"P( c #E5E5EA",
+"Q( c #7F7F8C",
+"R( c #525286",
+"S( c #76769B",
+"T( c #9C9CA5",
+"U( c #7373A1",
+"V( c #62629F",
+"W( c #9D9E9E",
+"X( c #A3A3A5",
+"Y( c #A1A1A4",
+"Z( c #909196",
+"`( c #95969C",
+" _ c #A1A3AD",
+"._ c #A9ABB7",
+"+_ c #B1B3C0",
+"@_ c #B4B6C9",
+"#_ c #C1C3D6",
+"$_ c #C1C3D7",
+"%_ c #D1D3E3",
+"&_ c #E9EBF6",
+"*_ c #E7E8F8",
+"=_ c #D1D4EF",
+"-_ c #DEDFE6",
+";_ c #E3E4EA",
+">_ c #E6E6EB",
+",_ c #D5D5D7",
+"'_ c #73738B",
+")_ c #4D4D88",
+"!_ c #79799D",
+"~_ c #797983",
+"{_ c #494979",
+"]_ c #646497",
+"^_ c #AFAFB0",
+"/_ c #A8A8A9",
+"(_ c #AFAFB1",
+"__ c #A2A3A4",
+":_ c #9E9FA2",
+"<_ c #A1A2A7",
+"[_ c #A5A5AB",
+"}_ c #9E9FA7",
+"|_ c #9E9FA9",
+"1_ c #A2A4AE",
+"2_ c #ACAEBA",
+"3_ c #B4B6C8",
+"4_ c #B9BBCE",
+"5_ c #BABCCF",
+"6_ c #C1C3D2",
+"7_ c #C9CBDB",
+"8_ c #D3D4DF",
+"9_ c #9899F1",
+"0_ c #9596EC",
+"a_ c #D7D8E5",
+"b_ c #E0E1E9",
+"c_ c #D1D2D9",
+"d_ c #DADAE0",
+"e_ c #D8D9DC",
+"f_ c #C8C8CA",
+"g_ c #C8C8C9",
+"h_ c #707092",
+"i_ c #4F4F90",
+"j_ c #80809F",
+"k_ c #333333",
+"l_ c #0A0A0A",
+"m_ c #A9A9AA",
+"n_ c #B5B6B7",
+"o_ c #B8B8BA",
+"p_ c #B7B8BA",
+"q_ c #B3B3B7",
+"r_ c #B0B0B5",
+"s_ c #A9AAB0",
+"t_ c #AAABB0",
+"u_ c #A1A2AC",
+"v_ c #A2A3AD",
+"w_ c #A7A8B2",
+"x_ c #A4A6B4",
+"y_ c #A3A6B4",
+"z_ c #ACAEBF",
+"A_ c #B8BBCD",
+"B_ c #C3C5D4",
+"C_ c #C9CADA",
+"D_ c #CCCEDC",
+"E_ c #DBDCF1",
+"F_ c #D1D2E0",
+"G_ c #D6D8E3",
+"H_ c #CBCCD3",
+"I_ c #CACBD1",
+"J_ c #CACBCE",
+"K_ c #BDBEBF",
+"L_ c #BEBEC1",
+"M_ c #BBBBBC",
+"N_ c #7D7DA4",
+"O_ c #6262A2",
+"P_ c #9292A8",
+"Q_ c #1F1F1F",
+"R_ c #020202",
+"S_ c #A7A7A8",
+"T_ c #B1B2B4",
+"U_ c #A2A2A5",
+"V_ c #B6B7BA",
+"W_ c #B5B6BB",
+"X_ c #A7A8AE",
+"Y_ c #B3B3B9",
+"Z_ c #ADAEB7",
+"`_ c #A5A7B2",
+" : c #A6A7B2",
+".: c #A9AAB5",
+"+: c #A5A7B5",
+"@: c #A9ABB9",
+"#: c #ABADBC",
+"$: c #B5B7C3",
+"%: c #BBBCCA",
+"&: c #BCBFCD",
+"*: c #C9CAD7",
+"=: c #DADBE2",
+"-: c #CDCED9",
+";: c #E7E9F9",
+">: c #CED1E4",
+",: c #D4D7E3",
+"': c #D0D2DD",
+"): c #CDCED4",
+"!: c #C1C1C8",
+"~: c #C6C7CA",
+"{: c #B7B8B9",
+"]: c #B0B0B2",
+"^: c #BFBFC0",
+"/: c #B3B3B4",
+"(: c #A6A7A7",
+"_: c #B2B2B3",
+":: c #6B6BA6",
+"<: c #6666AE",
+"[: c #A5A5B1",
+"}: c #454A47",
+"|: c #131A16",
+"1: c #7F807F",
+"2: c #C5C5C6",
+"3: c #CDCDCE",
+"4: c #BEBEBF",
+"5: c #B7B7B9",
+"6: c #A8A8AA",
+"7: c #ABABAD",
+"8: c #B9BABD",
+"9: c #B5B6BA",
+"0: c #AEAFB5",
+"a: c #B6B7BD",
+"b: c #B3B4BE",
+"c: c #ACAEB9",
+"d: c #ADB0BA",
+"e: c #AAACBB",
+"f: c #AAADBB",
+"g: c #AEB0BF",
+"h: c #AFB1C0",
+"i: c #BABBC8",
+"j: c #C2C4CE",
+"k: c #C8C9D2",
+"l: c #CDCEDA",
+"m: c #E9EAF5",
+"n: c #CFD0E3",
+"o: c #D9DBED",
+"p: c #D0D2DF",
+"q: c #C9CBD8",
+"r: c #C6C8D4",
+"s: c #C9CAD5",
+"t: c #CFD0D6",
+"u: c #C7C7CD",
+"v: c #C0C1C7",
+"w: c #C6C7CC",
+"x: c #BEBEC2",
+"y: c #BBBCBD",
+"z: c #C7C7CA",
+"A: c #B6B6B8",
+"B: c #A7A7A9",
+"C: c #464692",
+"D: c #5E5EAE",
+"E: c #9DACA6",
+"F: c #49755E",
+"G: c #C8C9C9",
+"H: c #DCDDE0",
+"I: c #C1C2C5",
+"J: c #BABAC0",
+"K: c #AFB0B5",
+"L: c #B1B2B8",
+"M: c #B8B9BF",
+"N: c #AFB0BB",
+"O: c #ADAFBB",
+"P: c #B3B5C0",
+"Q: c #B6B8C4",
+"R: c #B4B7C6",
+"S: c #B0B3C2",
+"T: c #B1B3C2",
+"U: c #B4B6C6",
+"V: c #B6B7C3",
+"W: c #B9BBC6",
+"X: c #BEBFCC",
+"Y: c #C1C2CD",
+"Z: c #C6C7CE",
+"`: c #CACBD4",
+" < c #EAECF4",
+".< c #DBDCEB",
+"+< c #CDD0E1",
+"@< c #CDCFE1",
+"#< c #C5C8D9",
+"$< c #D3D3E2",
+"%< c #C6C9D5",
+"&< c #C1C3CF",
+"*< c #C5C7D1",
+"=< c #C7C8CE",
+"-< c #C9CAD0",
+";< c #C5C5CB",
+">< c #C2C3C6",
+",< c #C7C7C9",
+"'< c #C0C1C3",
+")< c #B1B1B3",
+"!< c #BCBCBD",
+"~< c #BCBCC8",
+"{< c #6868B9",
+"]< c #7C7CC3",
+"^< c #B5CBC2",
+"/< c #71A48A",
+"(< c #C9C9CA",
+"_< c #D7D8D8",
+":< c #E5E5E7",
+"<< c #E6E7E9",
+"[< c #E3E3E8",
+"}< c #C6C8D2",
+"|< c #BEC0CD",
+"1< c #BCBECA",
+"2< c #BEC0CC",
+"3< c #B8BBC6",
+"4< c #B5B7C7",
+"5< c #B6B9C9",
+"6< c #BABCCC",
+"7< c #BCBFCF",
+"8< c #BEC1CC",
+"9< c #BDBECB",
+"0< c #BDBFCC",
+"a< c #C0C2CD",
+"b< c #C7C8CF",
+"c< c #C7C8D0",
+"d< c #B8B9C3",
+"e< c #CBCEDF",
+"f< c #CACDDF",
+"g< c #C7C9DA",
+"h< c #CDCFDC",
+"i< c #C4C7D3",
+"j< c #C4C6D2",
+"k< c #C5C7D2",
+"l< c #CDCED5",
+"m< c #BDBEC4",
+"n< c #C6C6C9",
+"o< c #BDBDC0",
+"p< c #D1D1D2",
+"q< c #D0D0D1",
+"r< c #C2C2D8",
+"s< c #8A8AD5",
+"t< c #9F9FD8",
+"u< c #D7DFDA",
+"v< c #A4C9B6",
+"w< c #81AE97",
+"x< c #E8E8EA",
+"y< c #E9EAEE",
+"z< c #D7D8DE",
+"A< c #CECFD7",
+"B< c #D2D3DC",
+"C< c #D0D1E1",
+"D< c #CDCEDE",
+"E< c #D0D3DF",
+"F< c #C1C2D3",
+"G< c #BCBECF",
+"H< c #BFC2D1",
+"I< c #C0C3D3",
+"J< c #C7C9D6",
+"K< c #C8CAD7",
+"L< c #CBCDD9",
+"M< c #C8C9D1",
+"N< c #C2C3CD",
+"O< c #E3E4EF",
+"P< c #DCDEEA",
+"Q< c #DCDDEC",
+"R< c #CCCFDC",
+"S< c #C1C4D5",
+"T< c #C2C4D5",
+"U< c #C9CCDD",
+"V< c #C9CBDD",
+"W< c #C2C5D6",
+"X< c #C8C9D6",
+"Y< c #D3D4E2",
+"Z< c #D1D3DF",
+"`< c #D2D3D9",
+" [ c #D8D9DF",
+".[ c #C4C5CB",
+"+[ c #DDDDDF",
+"@[ c #CCCDD0",
+"#[ c #D6D7DA",
+"$[ c #E7E7E9",
+"%[ c #CBCBCC",
+"&[ c #AFAFD8",
+"*[ c #7676D0",
+"=[ c #A8A8DB",
+"-[ c #E2EBE7",
+";[ c #B4DCC7",
+">[ c #B4D8C5",
+",[ c #CFCFD0",
+"'[ c #D2D2D4",
+")[ c #E8E9ED",
+"![ c #CED1E5",
+"~[ c #C8CBDF",
+"{[ c #CBCEE0",
+"][ c #CED1E2",
+"^[ c #CBCDDB",
+"/[ c #CDD0DD",
+"([ c #CFD1DE",
+"_[ c #D3D5E0",
+":[ c #CBCCD2",
+"<[ c #CACCD4",
+"[[ c #CACCD6",
+"}[ c #D5D7E4",
+"|[ c #D4D5E0",
+"1[ c #CED0DE",
+"2[ c #D7D9E8",
+"3[ c #D8D9E9",
+"4[ c #C9CBDF",
+"5[ c #D5D8E9",
+"6[ c #D6D9EA",
+"7[ c #D0D2E0",
+"8[ c #C9CBD7",
+"9[ c #D2D3DB",
+"0[ c #E8E9EE",
+"a[ c #9999D2",
+"b[ c #6C6CCD",
+"c[ c #B8B8E2",
+"d[ c #DFEAE6",
+"e[ c #A4D1BB",
+"f[ c #BEDACB",
+"g[ c #EDEEF0",
+"h[ c #DBDCDF",
+"i[ c #DFDFE3",
+"j[ c #E0E0E8",
+"k[ c #CCCCD4",
+"l[ c #DBDEF2",
+"m[ c #D8D9E7",
+"n[ c #D9DBE8",
+"o[ c #D5D8E5",
+"p[ c #D9DBE6",
+"q[ c #E0E0E7",
+"r[ c #DCDDE4",
+"s[ c #D9DAE3",
+"t[ c #CFD1DD",
+"u[ c #CFD1DC",
+"v[ c #DFE0EB",
+"w[ c #D5D6E6",
+"x[ c #CDD0DC",
+"y[ c #CCCFE1",
+"z[ c #CFD1E3",
+"A[ c #D2D5E3",
+"B[ c #D4D6E5",
+"C[ c #D8D9D9",
+"D[ c #8B8BD4",
+"E[ c #7474D9",
+"F[ c #E3F0E9",
+"G[ c #88BEA2",
+"H[ c #AABCB2",
+"I[ c #DDDDDE",
+"J[ c #CFCFD2",
+"K[ c #D1D3DA",
+"L[ c #DADBE9",
+"M[ c #DEE0F4",
+"N[ c #D5D7E5",
+"O[ c #E0E1ED",
+"P[ c #DFDFE9",
+"Q[ c #D1D4EA",
+"R[ c #DCDFF0",
+"S[ c #F6F6FA",
+"T[ c #F6F7F8",
+"U[ c #7171C9",
+"V[ c #6A6AD3",
+"W[ c #E6E6F3",
+"X[ c #F6FAFA",
+"Y[ c #A8E5C5",
+"Z[ c #DCE5E0",
+"`[ c #EEEFF4",
+" } c #E6E8F0",
+".} c #D6D7E8",
+"+} c #D5D7E8",
+"@} c #CFD0E0",
+"#} c #D2D4E4",
+"$} c #D7D8E2",
+"%} c #E5E7F1",
+"&} c #DEE0E8",
+"*} c #DDDFE6",
+"=} c #D0D3E1",
+"-} c #F4F5F6",
+";} c #EAEAF0",
+">} c #616299",
+",} c #8384C4",
+"'} c #E0E1E0",
+")} c #DEEDE9",
+"!} c #ACEDCB",
+"~} c #E7E8E9",
+"{} c #EEEFF1",
+"]} c #E0E0E9",
+"^} c #D9DAE2",
+"/} c #CFD1E7",
+"(} c #DEDFEF",
+"_} c #E2E3ED",
+":} c #D7D9E3",
+"<} c #DFE1E7",
+"[} c #DDDFF2",
+"}} c #898A92",
+"|} c #5D5F6B",
+"1} c #7A7B8A",
+"2} c #E9E9EC",
+"3} c #E2E3E5",
+"4} c #E2E2E4",
+"5} c #E7E9E9",
+"6} c #D7E4DE",
+"7} c #9CCEB4",
+"8} c #89BFA4",
+"9} c #DFEAE5",
+"0} c #DFDFE2",
+"a} c #E2E3E7",
+"b} c #D5D6E7",
+"c} c #E6E8F3",
+"d} c #D4D6E6",
+"e} c #D4D5E4",
+"f} c #CFD1E0",
+"g} c #A6A9B9",
+"h} c #8F919F",
+"i} c #7C7D85",
+"j} c #CFD1D9",
+"k} c #FAFBFE",
+"l} c #F3F4F6",
+"m} c #D0D1D3",
+"n} c #FAFCFB",
+"o} c #F9FCFB",
+"p} c #E6F4F0",
+"q} c #B8DCCD",
+"r} c #9EC9B6",
+"s} c #A6E0C7",
+"t} c #DCF7F1",
+"u} c #DADADD",
+"v} c #E6E6EA",
+"w} c #DEDFE1",
+"x} c #D4D4D7",
+"y} c #D2D5EB",
+"z} c #D2D5E5",
+"A} c #EAECF6",
+"B} c #DDE0F2",
+"C} c #B7BBCA",
+"D} c #C7CADA",
+"E} c #D7D9E9",
+"F} c #D3D4E5",
+"G} c #D4D7E7",
+"H} c #E8E8ED",
+"I} c #C7C7C8",
+"J} c #979798",
+"K} c #A2A2A3",
+"L} c #B1B1B2",
+"M} c #BFBFC1",
+"N} c #C8C8CB",
+"O} c #D7D7D9",
+"P} c #E1E1E4",
+"Q} c #D9DAF3",
+"R} c #E2E2F2",
+"S} c #F1F5F7",
+"T} c #D3E3DE",
+"U} c #A7CBBB",
+"V} c #C0E1D5",
+"W} c #D1ECE7",
+"X} c #A2D1C1",
+"Y} c #A3C8BD",
+"Z} c #DCE9EC",
+"`} c #ECF1F9",
+" | c #DEE1EE",
+".| c #D4D6DF",
+"+| c #E7E9F0",
+"@| c #D2D4E9",
+"#| c #D5D7E7",
+"$| c #F3F4FC",
+"%| c #DEE0E7",
+"&| c #EEEFF2",
+"*| c #E1E1E3",
+"=| c #BDBEC0",
+"-| c #CCCCCE",
+";| c #B5B6B9",
+">| c #B1B2B3",
+",| c #9F9FA0",
+"'| c #A2A3A5",
+")| c #A7A8AA",
+"!| c #ADADAF",
+"~| c #A6A6A9",
+"{| c #AFB0B2",
+"]| c #BEBEC0",
+"^| c #9E9EA0",
+"/| c #B3B4B5",
+"(| c #C5C6C8",
+"_| c #BABABC",
+":| c #AAAAAD",
+"<| c #BCBCBE",
+"[| c #A9A9AB",
+"}| c #AFB0B1",
+"|| c #A6A6A8",
+"1| c #B4B4B6",
+"2| c #ACACAF",
+"3| c #BDBEC1",
+"4| c #BFBFC7",
+"5| c #898AC6",
+"6| c #A0A2DC",
+"7| c #C8C9E5",
+"8| c #D6D7E0",
+"9| c #D6D7F3",
+"0| c #A3A4E5",
+"a| c #D2D3EC",
+"b| c #CAE4DF",
+"c| c #A8CEC1",
+"d| c #BADED4",
+"e| c #E0E9F5",
+"f| c #DADBEB",
+"g| c #EDEEF9",
+"h| c #C7D3DD",
+"i| c #C1CFD9",
+"j| c #D4D9E8",
+"k| c #D3D6E6",
+"l| c #E6E7F7",
+"m| c #DEDFE5",
+"n| c #CACAD1",
+"o| c #C0C1C8",
+"p| c #B1B1B7",
+"q| c #A6A6AC",
+"r| c #9EA0A4",
+"s| c #A1A1A7",
+"t| c #A2A3A8",
+"u| c #A6A6AD",
+"v| c #A7A7AE",
+"w| c #B0B0B6",
+"x| c #B3B4BB",
+"y| c #B6B6BD",
+"z| c #B4B5BB",
+"A| c #B5B5BC",
+"B| c #ACADB2",
+"C| c #B3B4BA",
+"D| c #B0B1B6",
+"E| c #A5A7AC",
+"F| c #B0B1B7",
+"G| c #B7B8BE",
+"H| c #BCBCC3",
+"I| c #C4C5CC",
+"J| c #C3C5D1",
+"K| c #ACADCD",
+"L| c #ABADDA",
+"M| c #BDBFE4",
+"N| c #CBCDDF",
+"O| c #B9BBE8",
+"P| c #D6D8EA",
+"Q| c #DEE2F0",
+"R| c #CFDBE4",
+"S| c #D3E1EA",
+"T| c #D9E3F0",
+"U| c #C3DAD9",
+"V| c #AECBC6",
+"W| c #E6EAF1",
+"X| c #D0D1DA",
+"Y| c #E5E6EF",
+"Z| c #E1E3F7",
+"`| c #D1D3E0",
+" 1 c #C2C4D1",
+".1 c #BBBCC8",
+"+1 c #B3B5C1",
+"@1 c #B0B1BD",
+"#1 c #ACAEB8",
+"$1 c #9D9FA9",
+"%1 c #9D9EAA",
+"&1 c #9899A4",
+"*1 c #9D9FAB",
+"=1 c #A3A4B0",
+"-1 c #A5A6B3",
+";1 c #A8AAB6",
+">1 c #A8ABB7",
+",1 c #AAACB8",
+"'1 c #ACADB9",
+")1 c #ACADB8",
+"!1 c #ABADB7",
+"~1 c #ABADB8",
+"{1 c #AFB1BB",
+"]1 c #A6A8B2",
+"^1 c #A3A5AF",
+"/1 c #ADAEBA",
+"(1 c #B4B6C3",
+"_1 c #B8BAC7",
+":1 c #BFC1CF",
+"<1 c #C4C6D5",
+"[1 c #C1C4D7",
+"}1 c #C7CADE",
+"|1 c #D4D5EB",
+"11 c #DCDFF3",
+"21 c #E1E3F9",
+"31 c #DEE3F1",
+"41 c #E5E8F8",
+"51 c #E2E5F5",
+"61 c #DEDFEA",
+"71 c #E8EAF5",
+"81 c #D6D7E2",
+"91 c #DDDEE7",
+"01 c #D0D3E5",
+"a1 c #CCCFE0",
+"b1 c #C3C6D7",
+"c1 c #BEC1D1",
+"d1 c #B8BACA",
+"e1 c #A7A9B8",
+"f1 c #9EA0AD",
+"g1 c #9EA0AE",
+"h1 c #9D9FAD",
+"i1 c #A2A5B3",
+"j1 c #A4A6B5",
+"k1 c #A1A2B1",
+"l1 c #A2A4B2",
+"m1 c #A7A9B7",
+"n1 c #A8A9B8",
+"o1 c #A6A7B6",
+"p1 c #ADAFBE",
+"q1 c #B1B4C2",
+"r1 c #A9ABBA",
+"s1 c #A3A5B4",
+"t1 c #A6A8B7",
+"u1 c #B2B4C5",
+"v1 c #BABCD0",
+"w1 c #BFC2D5",
+"x1 c #C5C8DC",
+"y1 c #C9CCE0",
+"z1 c #BFC1E6",
+"A1 c #DEDFF2",
+"B1 c #D1D3F1",
+"C1 c #C2C3EE",
+"D1 c #DBDDF7",
+"E1 c #D8DAF7",
+"F1 c #DFE1F4",
+"G1 c #DADFEC",
+"H1 c #E0E7F4",
+"I1 c #CEDCE5",
+"J1 c #CED9E3",
+"K1 c #C3DFDE",
+"L1 c #BAE7D7",
+"M1 c #E3E4F0",
+"N1 c #EAEAF4",
+"O1 c #EBEDF6",
+"P1 c #D9DBE5",
+"Q1 c #CDCFDD",
+"R1 c #C0C1CE",
+"S1 c #BABBC7",
+"T1 c #B8B9C5",
+"U1 c #AFAFBB",
+"V1 c #ADAEB9",
+"W1 c #AAACB7",
+"X1 c #ADAFBA",
+"Y1 c #ACAFBA",
+"Z1 c #AFB0BC",
+"`1 c #AEB0BB",
+" 2 c #AEAFBB",
+".2 c #BABCC8",
+"+2 c #B4B6C2",
+"@2 c #B5B6C2",
+"#2 c #B9BBC7",
+"$2 c #BDC0CD",
+"%2 c #C2C4D3",
+"&2 c #C8CAD9",
+"*2 c #CED1E0",
+"=2 c #CDCFE6",
+"-2 c #C0C2EC",
+";2 c #C0C1EF",
+">2 c #DFDFF1",
+",2 c #B3B4F1",
+"'2 c #8485EA",
+")2 c #A7A8F1",
+"!2 c #9E9FF5",
+"~2 c #999AF1",
+"{2 c #CFD1F5",
+"]2 c #E6EEF2",
+"^2 c #C4DED9",
+"/2 c #B5D3CC",
+"(2 c #CFE8E6",
+"_2 c #BBDBD5",
+":2 c #B6D3D0",
+"<2 c #DDE2ED",
+"[2 c #D2D4DF",
+"}2 c #D9DBE4",
+"|2 c #E7E9F1",
+"12 c #E5E7F0",
+"22 c #E3E5EC",
+"32 c #DFE1E8",
+"42 c #CECFD6",
+"52 c #CACCD2",
+"62 c #BCBEC4",
+"72 c #ABACB3",
+"82 c #B5B7BC",
+"92 c #BEBFC5",
+"02 c #AFAFB5",
+"a2 c #BDBEC5",
+"b2 c #B6B7BC",
+"c2 c #C6C7CF",
+"d2 c #BBBCC4",
+"e2 c #BCBDC4",
+"f2 c #C1C2C9",
+"g2 c #B9BBC2",
+"h2 c #BBBDC6",
+"i2 c #C6C7D1",
+"j2 c #C9CAD6",
+"k2 c #D3D4E0",
+"l2 c #CFD0DE",
+"m2 c #C3C5E2",
+"n2 c #C1C2EA",
+" . + @ # $ % & * = - ; ; > > , ' ' ' ) ! ~ { ' { , ] ^ ^ / ( _ : < [ } | 1 2 = 3 4 5 6 7 8 9 0 a b c d e e f ",
+" g h i j k & l m , n o p q r s t u v w x y y z A B C D E E F G v H I J K L M N O P Q R S T U V U W X X Y Z ` O .R ..+.@.U @.#.+.$.%.&.*.=.-.;.n >.,.'.).!.~.{.].^./.(._. ",
+" :.<.[.].2 }.|.1.2.3.4.5.6.D 7.v 8.9.0.a.v y u F b.a.c.d.e.f.g.h.i.g.j.k.i.l.m.n.o.p.n.q.o.r.s.t.u.v.w.v.x.y.z.A.B.A.C.D.E.F.v.G.H.A.I.H.J.t.I.K.L.M.G.v.N.O.P.&.Q.c.R.S.T.R U.V.W.z X.Y.Z.`. +.+, ++@+#+$+%+&+*+ ",
+" =+-+;+>+,+'+)+!+~+G F z {+]+^+/+D (+_+:+<+l.[+}+[+[+p.|+k.1+2+2+m.o.e.v 3+4+y 5+6+7+8+9+0+D F a+b+G f E u v w c+T.d+e+f+g+h+f+i+T.j+k+l+m+n+o+&.l+*.V p+q+r+s+m+k+t+u+v+` N.w+x+y+w.x+x.v.G.z+h.A+q.B+C+p.D+E+F+G+H+I+J+K+0+L+t M+N+} O+P+8 Q+R+ ",
+" S+T+U+V+W+X+V+Y+&.m+Z+`+y E @.@p.h.+@@@f.#@m.h.:+q.o.Y+B w $@b+%@K u 3+&@8+*@E M =@-@M+;@>@,@'@( )+n )@!@r !@' ~@'+r {@~ ]@^@/@(@m >@2 < V+{@_@, :@<@[@3.;.( ^ }@; |@} 1@2@3@, _@V+4@5@l+i+P.k+6@7@8@o+o+o+9@0@%@x a@l.d.b@p.p.n.n.c@c@j.A+$@G d@e@U R @.f@g@, h@'@= ; 5 i@ ",
+" j@k@5 l@m@]@,@n@Q.r++.j+X W o@p@x+q@r@l.s@m.A+#@D $@t@u@v@w@9+x@y@z@A@B@{@{@C@D@E@F@' G@H@I@!@J@K@s L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@`@ #.#+#@#X@##$#%#&#*#=#+#-#;#=#>#U@@#,#'#=#)#!#~#{#]#^#/#(#;#_#:#^ ^ <#}.!+[#}#|#1#2#3#4#5#h@6#7#8#9#0#a#b#c#d#_+J+.@e#r@1+f#g#h#D.i#D.k+R r+%.j#k#F l#m#,@!@n#o#<.t ",
+" [.7 p#H@q#1#=.r#M s#3+F L+C.N.x+D.h#t#u#v#S .@w#E F x#3+y#z#p A#B#C#D#E#2@;@/ E#F#G#H#I#J#P@V@=#K#@#L#=#,###M#N#O#P#Q#R#S#P#Q#T#U#V#W#X#Q#Y#Z#`#X# $X#X#.$+$X#@$#$P#P#$$Q#%$&$Q#`#*$=$P#-$;$Q#X#>$+$P#,$'$-$)$!$/#'#~$/#R@{$]$^$/$($_$:$<$[$}$|$1$2$3$4$5$6$'+7$8$K 9+u 8+k+f+X 9$h#t#u#v#w+0$r@A+F a$3+.@z b$x z#c$d$e$f$s+ ",
+" g$<#[ ~ h$z#H x#E 3+*@i.i.o.b@s@c@p.i$j$o+g+o@e@j+l+u !+k$l$m$!@)+!@n$F#o$p$q$r$s$t$J#u$M@v$Q#w$x$+$y$Z#z$V#A$B$P#C$D$X# $E$F$F$P#%$U#G$H$I$J$O#K$P#K$>$F$%$S#G$L$T#F$P#M$N$F$X#O$`#V#P$F$`#Q$N$P#K$U#`#L$O$X#F$F$F$F$+$R$%$V#S$ $.$T$U$V$W$X$Y$Z$`$ %.%+%@%#%H#$%%%&%;#*%E#=%'+'+;@-%;%-%b.%.9$*.o@Z 8+w#e#d.A+2+1+>%q.<+,%'%)%!%~%b {%]%^%/%(% ",
+" _%g$[@/ r :%z <%a+[%f n.k.p.c@c@c@a.r#L+$@_+g@+.G {@1@}%V+|%' E@1%2%3%I#,#%#4%t$5%6%7%8%9%Q$;$Q#V#0%%$`#K$-$F$C$L$I$a%T#K$Q#b%a%-$O$C$F$ $ $X#`#Q# $ $E$V#F$`#P#Q#F$-$V#F$I$c%F$P#H$#$F$+$d%F$%$e%F$`#I$c%P#.$I$U#H$f%X#>$E$Q#F$`#g%`#`#M$V#T#h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%I$Z$y%z% #A%/#@#-#B%E@E@V+-%;%2 C%D%s#D y Y+E%F%c+c@e#b@i.<+<+D d@G%H%I%J%K%G@L%M%N% ",
+" O%* >@>@P%F%o@v x#Q%o.<+r.n.c@R%*@9+=.v S%T%, E#' !+U%V%>@W%X%;#/#Y%)#X@Z%`#X#V#K$X#-$P#X#F$`%/$ &.&K$P#c%.&+&@&O$E$%$c%Q#`#E$%$`#F$I$Q#T#S#G$F$M$#&G$F$F$F$-$g%L$`#c%$&.&>$I$Q#`# $>$X#F$V#x$F$+$C$F$L$O$F$ $f%b%U#P#U#X#+$C$U#O$n%a%F$P#T#X#U#`#F$`#L$+$Z$%&&&`#C$*&=&-&;&>&,&R$'&)&!&U#X#D$-$X#~&-$`#{&]&J#>#;#^&G#/&(&_&!@m ,@, !@s :&$@=@<&[&}&|&|&1&f#2&3&4&7#M 5&6&_.7&8&9&0& ",
+" a&b&,@m$c&[%*@[%a$d&b@e&d.g.f&{+J+$@G g&:.h&; i&j&B@k&s$;#l&m&=#X@0%,$%$n&o&,$L$V#F$K$O#a%U#T#d%Q#p&q&r&`#.$F$F$F$F$F$-$V#c%G$s&-$`##$g%X#>$ $`#-$t&+$F$O$u&.$F$H$%$U#Q$O$K$Q#.$C$E$d%O$.&S#Q$G$ $.$P#F$V#.$F$L$E$F$.$b%a%I$G$.$.$b%T#`#C$N$E$`#Q# $P#+$-$`#Q#V#F$U#%$X#X#`#Q#F$F$F$F$F$v&w&x&d%`#U##$F$`#f%.$`#P#X#X#S#-$X#X#;$y&Z@z&A&;#X@B&C&_&> {@D&E&F&9$D+G&H&I&J&h.c.k.b@K&L&M&N&0+R+;@' h&O& ",
+" <.P&<#[ 9+e@Q&K J+r.p.k.l.b@8+F%3+G+H A@R&,@M+_&,@S&T&!$U&^&V&,$%$Y#W& $I$X&Y&Z&`& *.*+*@*F$+$#*7$-$.&t& $$*%*&*Q#C$F$P#G$K$`#`#X#-$ $J$`#X#@& $`#e%S#`#G$#$X#`#T#f%U#F$e%I$`#G$H$S#K$F$F$F$%$U#`#d%C$.$C$t&c%L$**Q$-$-$X#F$-$%$Q#%$E$>$L$H$C$F$E$b%>$U#+$K$U#.$I$X#G$x$F$+$C$-$a%$&+$K$T# $X#X#=*-*;*T#F$K$$&X#Q#@&E$P#d%X#P#Z#a%P#%$P#X#Q#C$>*X#`#**,*+#V@{#>#'*)*!*~*{*]*S%^*/*(*q@_*q.o.l.f#:*(+f _+.@b <*}.[*}* ",
+" I |*%+1*F R .f@2*I&s@c@f.}+G C F a@3*;@4*)@5*q#6*##^#^#7*;$-$P#X#`#Q#P#F$F$F$`#U#@&8*9*0*a*b*c*d*e*+$f*g*h*i*V#K$j*k*l*.$E$F$L$#&f%U#-$`#F$`#U#`#`#P#`#X#I$G$X#C$b%`#U#O$**F$X#f%O$-$Q#`#F$x$@&X#F$-$`#F$Q$P#F$F$G$P#`#Z#Z#C$d%+$`#.&.&-$P#`#F$`#I$-$F$V#V#.$d%M$V#Q#a%.$F$G$>$F$V#V#F$L$E$U#G$y$d%+$e%m*n*o*T#`#K$%$`#Q#>$-$%$M$G$U#x$.& $@&f%`#P#T#g%F$P#b%U#K$-$X#L$p*!$=&q*r*s*t*u*v*w*x*y*z*W A*B*C*c@d.r.}+C +.D*%.f E*1@F*E% ",
+" R+G*i&c+s+j+o+T.F.M.H*t#g#a@f 9+5.-@E#' I*J*K*=#L*J#=#M*S#~&>*N*O*C$>$K$-$E$K$%$L$P#F$`#@&P*Q*R*5%S*T*U*V*d%W*X*Y*Z*Q#L$`* =.=K$%$F$C$Q$T#.$H$C$P# $I$U# $O$.$`#U#U#`#U#%$F$F$Q#T#F$-$H$H$T#O$Q#`#K$d%F$X#G$`#I$+=x$`#I$V#`#F$I$G$V#@&V#X#O#f%P#T#-$`#x$g%P#F$+$X#F$`#I$Q#Q#$&>$F$b%L$F$.&G$U#.$K$F$+$J$L$Q#>$@=#=$=E$Q#H$O$F$L$g%K$F$`#`#`#Q#+$-$E$.&K$L$+&O$F$+$f%.&H$-$X#%$O*X#P#O*`#K#U&%=F@&=*===-=;=>=,='=)=v F }+!=J.~=i$l+{=]=o+*@K@O&[* ",
+" ^=0 1*g&l+f+/=(=i$J.H._=P.i+W T.g n :={@;@<= #;#[=}=K$M*P#P#P#`#P#I$.$X#x$>$`#x$t&-$.$|=O$U#F$+&1=2=%$J$Q#3=4=5=S#@&6=7=8=Q#9=0=a=b=c%I$F$J$e%I$`# $+$Q#E$.$F$I$H$C$-$L$ $Q# $+$F$I$C$Q#`#X#K$ $E$$&g%G$>$x$C$V#P#F$U#E$ $U#a%Z#F$U#V#F$`#P#`#`#T#H$`#O$.$`#O#d%`#+$+&I$`#T#L$X#F$L$U#`#L$P#F$N$O$.$u&E$X#P#G$-$`#U#c=d=e=Q#-$t&@&Q#O$M$.$Q#U#`#Q#T#.$F$%$-$`#%$x$V#F$Q#V#O$b%-$K$.&Q$P#%$c%+$X#P#U#Q#w$M*f=R@+#(&g=h=H@,@i=9+3+j= .k=l=m=w.t#4+m+m+4.!@} n= ",
+" o=p=h@7.W +.X N.D.F.k=T.r+i+n+F } }.<#o 6*q=r=v$v$+$.$+$K$%$V#-$%$G$U#K$x$+$X#K$-$`#K$f%X#U#O#+$`#Q#s=t=u=C$v=w=x=y=z=Z#$&A=B=C=X#D=E=F=G=H=;#F$I=J=K=I$x$K$F$I$-$X#`#I$K$K$V#V#@&$&V#F$J$**g%-$C$I$F$X#K$P#%$ $+$a%e%E$X#%$L$`#X# $T#F$.$O#T#-$E$+$U#T#O#U#C$>$X#V#c%`# $N$c%U#y$y$`#V#Q#`#V#L$`#F$a%E$%$S#L$X#I$H$Q#%$e%L=M=N=U#F$`#`#`# $L$Q#T#C$P#%$e%>$F$b%E$F$I$T#%$F$X#`#P#K$X#%$Q$e%Q#c%y$T#U#L$L$U#T#X&`#B$0%O=v$>#2%P=Q=R=;@:@F%S=T=U=%.g#M.N.|&D k#3+~+q#h&}* ",
+" P&<#0+k+e+R p@w+x+k=V=j=9$F%W=X={#f=Y=U#`#`#`#P#P#%$+$I$d%M$I$L$L$%$x$e%K$G$y$.&-$x$.&`#V#+&.$I$f%X#`#P#Z=`= -.-Z$+-@-#-U#**$-%-&-f%`#*-=---;->-,-'-)-!-~-{-]-^-z=v&U#c%/-x$P#-$Q#`#U#>$-$F$V#y$G$`#M$.&Q#-$Q$H$P#X#`#%$a%d%V#J$J$U# $g%V#F$.$e%c%%$d%T#U#E$O$-$a%g%Q#c%x$F$-$G$`#F$-$E$X#V#+$Q#O#M$X#%$F$`#%$/-J$`#-$x$`#I$#$(-_-:-U#P#+$`#F$>$%$`#K$X#`#U#O$K$F$e%L$`#$&t&I$P#>$K$C$%$`#`#d%L$`#-$a%V#U#T#G$K$c%L$F$c%g%`#.$E$-$K#<->#^&[-3.V+X+}-0.T.]=k+|->%l.#@f F a.1-G@2- ",
+" 3-4-_ b.o+5-D.t#t#D.5-o+g+6- &/#7-`#E$$$8-9-0-a-b-c-d-e-f-g-h-P$g%I$H$O#G$M$#$J$.$Q$@&-$a%H$X#K$C$+$V#e%V#X#E$i-j-k-l-m-n-o-p-K$$&q-r-s-e%U#t-u-v-w-x-y-z-A-B-C-D-E-F-G-H-I-z=J-K-Y=L-M-X#N-@&Q#F$-$J$Q#F$T#L$U#K$f%#&@&g%-$F$-$X#F$U#Q#X#V#O#T#F$L$J$ $K$>$%$K$I$-$P#.$+$K$x$G$X#E$J$U#X#`#U#P#%$P#`#U#K$X#-$X#F$+$Z#H$K$L$%$`#+$:-O-P-@&`#>$/-F$X#y$E$`#@&T#`#a%n%Q#`#C$X#`#g%g%P#I$@&G$#&e%Q#`#**g%U#T#J$K$X#.$P#`#K$P#F$%$Q#F$+$C$%$%$W&=$`#Q-l&_#+#R-3., h@v j=0+ @#@p.}+S-T-0.l#U-W=V- ",
+" p#W-X-Y-g+5-N.N.L.4+{.D*3+;@Z-7-`#~&`- ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;+;@;M$E$O##;s&x$+&O#G$O$T#P#P#U#`#U#X#`#`#x$*$L-$;%;&;*;=;-;I$;;>;,;';x$F$);!;~;%$J$F$I$u&@&`#{;];^;/;(;_;:;<;[;};|;1;2;3;4;5;N-6;7;8;F$d% $`#Q#`#F$+$Q$-$F$.&+$`#E$a%P#F$T#+$`#+$+$U#.$O$ $H$#$g%G$ $U#K$I$K$`#O$a%%$d%C$F$c%J$-$P#V# $`#X#X#X#9;K$L$L$J$I$U#g%0;a;b;@&`# $.&F$U#T#G$`#%$I$U#g%+=-$P#O#`#`#L$E$F$`#V#`#E$+&X#F$#&P#`#Z#O#Q#U#H$L$a%e%I$+$G$K$`#X#Q#U#P#Q$M$ $=$G$U#B$*$I#(#c;s }%!@g 5.x@y@f&}+r.]+d;e;f;g;h; ",
+" 3 q#i;a@z h#E.t#p@F m+j;, E*k;`#U#l;m;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;n;**H$.&g%e%e%g%N$S#d%f%@&L$c%E$P#F$V#.$X#U#o;p;q;r;-$G$s;t;u;v;w;x;y;z;h*Q#+$F$+$T#Q#U#.$T#>$g%-$X#>$A;8*B;%*C;D;E;F;G;H;I;J;K;Z%L;M;7-N;x;e*`#V#F$F$M$C$`#a%O;L$`#H$g%U#E$U#F$`#`#F$U#g%a%y$O$-$$&t&+$P#Q$>$`#P#U#F$C$J$K$I$b%>$ $.$P#Q#P;Q;R;-$ $Q#-$c%S;T;U;.&U#.&S#-$-$T#C$U#Q#`#`#K$C$U#Q#O$E$P#c%b%F$P#g%`#%$/-`#Q#Z#`#`#c%O$`#U#+$`#Q$O#Q#>$O#O$%$G$M$P#F$P#`#`#-$P#`#F$C$K$P#Y#;#@#V;r _&, 8$x 0.f#W;X;d.Y;F%i;h@& ",
+" Z;' 0+`; >.>+>i$Q.]=j=8$n H@@>#>`#@&$>.;.;.;.;.;.;.;.;%>&>*>=>->=>;>>>.;.;.;.;.;.;.;.;.;>>u&Q$b%O$x$E$L$V#x$x$L$N$#$.$-$T#-$F$L$@&,>'>)>F$>$O#G$!>~>{>e*]>^>/>Q$c%F$E$G$`#`#Q#-$X#P#F$F$F$Q#Q#%$f%Z#T#(>_>:><>[>}>|>1>2>3>4>5>6>7>8>9>0>m%4*@#N--$t&K$`#c%a%@&P$T#+$x$U#`#`#P#K$d%x$X#L$V#U#U#/-L$`#E$C$U# $O$ $U#`#X#-$ $P#X#a>b>c>X#`#F$x$s&d>e>f>%$F$g%d%X#.$.&C$.$H$C$Q#.$%$P#Q#P#Q#%$J$g%F$Q#.$F$U#L$`#V##$+$-$O$g%P#C$%$F$Q#%$`#Q#c%F$`#+$S#F$`#J$X#F$V#C$U#K$.$`#`#%$U#`#X&g>/#h>E#;@P%F T-$@y+x+i>j>k>,%t*l> ",
+" h&,@t j=P.p@t#E.f+R g@:=> s m>I#X#P#n>.;.;.;.;.;.;.;o>@;p>P$v=p>h-q>|=v=r>s>n>t>.;.;.;.;.;.;.;.;u>9%y$N$f%a%C$>$I$-$H$d%U#T#S#Q#F$c%/-%$v>w>P#G$/- $F$+$U#X#x>y>z>-$Q#F$Q$g%U#K$O#a% $V#P#F$`#F$F$X#G$C$-$g%x$P#P#H$$&Q#A>B>J;C>D>E>F>G>H>I>J>K>L>M>N>O>N-O=P>N-`#%$%$V#Z#%$P#@&c%`#-$M$Q#U#`#F$`#S#V#`#V#L$`#.$O#c%C$x$U#F$L$P#`#Q>b>R>U#`#F$T#S>T>U>V>Q#F$+$P#`#P# $-$I$O$L$c%M$L$-$E$+$`#c%+&c%U#P#%$K$F$F$F$K$>$U#K$T#L$K$$&$&`#Q# $F$Q#>$P#`#X#I$F$K$f%+$P#T#%$U#L$b%K$H$b%`#-$W>I$X#K#^#X>Y>s F@8+e@T.t#E.L.2* .9+> <# ",
+" Z>`>e G y |& ,N.T j>c+.,q +,%#O@M#`#Q#@,.;.;.;.;.;.;.;#,$,$,$,p>O;#;%,q>&,*,=,-,-,=,%>.;.;.;.;.;.;.;.;;,$,r>>,f%|=$,d%V#$&$&U#K$O;L$`#P#I$`#Q#T#`#>$P$P#U#t&P#X#,,',), $X#F$y$b%Q#F$E$+$V#@&I$F$Q$a%P#F$E$%$F$E$ $F$F$g%E$F$X#K$E$+&O$I$V#!,~,{,],^,/,(,_,:,<,[,~.},x;|,F$%#1,@#N-%$c%F$K$e%c%S#H$F$K$S#c%`#`#X#`#Q#G$K$E$@&U#.$Q$ $-$2,3,4,K$T#X#5,6,7,8,9,-$F$g%x$P#I$V#U#U#.$U#Q#x$+$F$O$.$F$a%#$T#Q#G$H$**Q$%$P#.$-$`#`#I$%$F$C$J$-$b%b%F$.$f%O$X# $G$+$L$E$F$X#Q#F$`#X#U#Q#O$a%`#L$v=H$X#>$W&0,3% #Z-I*} B T a,v#I&H*r+4+*+H@b, ",
+" c,n 1#&@E S-k.k=d,&.F e,/ <$z%f,-$X#`#U#%>.;.;.;.;.;.;D=g,h,h-i,9%j,k,*,l,s>l,h,m,n,u>=,h-o,.;.;.;.;.;.;.;.;->v=**S#S#u&.&a%y$@&Q#L$P$E$Q#x$c%F$`#U#X#.$Z#F$X#@&F$p,q,r,`#S#V#`#$&b%U#`#V#X#K$O#-$F$t&x$U#F$O$%$F$Z#M$-$F$O$I$F$F$F$F$L$+$F$+$T#%$F$P#Q#X#U#s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,!>`#X#O@D$>$F$ $t&d%-$.&a%F$K$c%-$P#Q#`#K$T#L$H,I,J,X#K,L,M,N,O,P,U#f%`#F$.&>$`#x$M$U#+$M$Q#L$Q$Q#F$+&I$F$Q#d%+$F$.$P#J$s&L$-$O#a%P#V#$&>$`#%$P#`#L$V#F$%$g%T#P#U#%$+$>$V#F$>$e%g%x$x$-$`#P#-$F$+$O$I$Q#d%N$G$0%z$Y=R@Q,/ , R,9$9$N.w+F.G a.4.^ 9 ",
+" V%S,T,3+b@f.<+$@l+ @h&' U,g>N@M*Z#-$I$`#V,.;.;.;.;.;.;.;W,X,Y,@;Z,`,g,9==,%,k, 'Y,*>.'l,u>*,#;+'.;.;.;.;.;.;.;.;@'s>$,u&+&b%O$e%x$K$G$b%K$+$@&O$+$c%+$P#O$#$`#K$J$`##'$'%'P#a%P#P#e%L$U#$&t&`#K$t&F$`#+&f%`#P#P#`#`#Q#E$U#F$H$Q#F$@&H$P# $V#P#I$$&I$F$-$L$Q#U#/-a%X#+$-$F$A>&'*'='-';'>',''')'!'~'{']'^'F$X@(#+$5%c%T#F$L$Q$C$x$O$F$Q#+$F$/'('_'`#:'<'['}'Z#>$G$S#X#P#x$-$`#%$C$F$`#V#-$O#s&`#F$$,E$`#-$g%X#F$.&P#U#>$P#F$e%L$X#>$@&+$+$d%%$F$ $Q#F$+$P#`#`#F$F$F$X#`#F$K$V#V#O$**d%X#x$c%U#+$>$Q#`#+$>$%$g%O$+$T#A$|'1'{@2 2'P.j+3's@k.u 9+4'5' ",
+" 6'7'8'9'0'1+c@G D g > ] S&X@a'=$X#V#+&X#`# '.;.;.;.;.;.;.;g-j,h,k,->Z,k,@'->Z,.' 'b'*,m,*,>,k,n,i,**.;.;.;.;.;.;.;.;c'=> 'v=9%P$b%+&M$I$.&.&Q#U#-$X#`#Q#P#U#c%H$.$O$T#P#d'e'f'%$C$`#V#t&I$X#P#G$`#Q#C$F$Q#t&S#L$.& $U#U#U#-$`#-$+&-$`#%$e%X# $Q$C$X#+$X#F$F$K$X#`#g%V# $V#P#X#X#U#X#e%J$Q#`#g'h'i'j'k'l'm'n'o'p'q'r's't'u'N--$.$-$-$%$F$L$a%-$v'w'x'y'z'A'B'U#X#U# $a%X#L$u&G$`#%$E$ $%$`#X#C$e%F$Q#t&T#U#.&$&F$U#+=T#`#C$C$I$.$U#`#-$L$X#V##&-$ $t&I$P#$&L$X#a%@&K$ $O$+$`#`#`#F$U#f%a%U#e%T#U#V#f%a%U#>$ $K$.&c%`#I$&$,$8;C'D''+{@J+T.3+n.E'>%9+F'{@D% ",
+" G'H'I'J'l.1+K'v A@)+_&L'M'N@X#;$M$F$ $f%F$ $c-.;.;.;.;.;.;N'n,O'*>;>P'Q'R'*>j,`,i,-,>,S'`,#;p>W,Y,s>&,9=.;.;.;.;.;.;.;.;T'k,s>&,+=t&f%d%V#T#H$E$C$b%E$X#`#`#`#I$K$X#P#Q#P#U'V'W'V#G$`#T#S#x$-$C$T#F$K$I$F$`#X#%$I$g%C$-$d%$&-$X#L$#$J$U#.$J$F$X#L$`#L$J$.$G$g%F$`#%$K$P# $O#%$U#Q$+$P#a%g%-$X#U#U#-$T#K$`#M$X'Y'Z'`' ).)+)@)#)$)%)&)*)X#`#=)-);)>),)')))!)~)+$V#c%L$ $%$`#x$y$>$I$a%x$c%J$-$Q#.&y$P#U#-$`#`#.$x$`#+$/-d%Q#x$a%C$O$L$P#.&J$X#I$**`#X#f%U#U#f%c%`#-$t&P#V#+=g%K$x$O$P#-$e%%$U#a%+$U#U# $-$K$e%c%G$f%c%K$U#+$K$`#w${)])^)> , /)(+D k.f#_+()*+_) ",
+" l@:)<)[)})C*|)1)>@2)3)f=V&=$V#`# $T#F$V#a%F$4).;.;.;.;.;.;.;T'j,q>=>9=5)@;6)5)h-%,k,m,v=-,n,#&s&n%+=O;-,N$.;.;.;.;.;.;.;.;7)Q'=,u>#;#$y$$&c%L$C$G$g%Z#Z#O$a%K$X#d%a%K$V#%$U#8)9)0)I$+$P#V#c%.$x$**H$X#O$e%-$P#X#`#U#G$O$%$+$C$Q#P#+$a%V#L$S#J$%$a%E$Q#-$ $-$T#S#`#-$M$M$X#%$+&+$-$H$a%K$C$J$-$Q#s& $-$c%P#X#U#K$K$C$b%-$`#a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)c%C$O$a%Q$S#C$X#g%b%I$ $L$Q#K$>$%$`#O$$& $T#x$P#`#>$x$`#%$V#X#U#%$+$I$c%V#I$J$V#U#E$#$U#%$M$K$-$C$T#U#`#+$F$X#d%-$L$@&L$P#.$#&-$>$Z#+$-$d%C$K$-$ $I$C$g%-$`#X#%$U#F$.$-$`#r)2%s)R&)@t)a.E'n.c@u b , ",
+" m S,u)A+v)w)x)y)z)A)B)C)D)E)F)G)-$C$ $-$ $P#I$.;.;.;.;.;.;.;.;m,n>;>@;n>9=O'*>9-W,-,b'%,s&S'u>+&u&r>r>#&S'$,H).;.;.;.;.;.;.;.;I)->*>s>v=#;-,J$>$O$%$P#P#P#Q#Q#X#P#g%s&#&+=E$U#J)K)L)d%>$K$.$V#%$P#T#V#U#c%H$ $d%$& $Q#d%s&O$V#J$L$.$c%.$P#.$c% $+$H$Q$a%`#`#F$-$C$U#%$E$+$X#`#X#`#X#-$G$%$C$x$ $ $a%I$.$N$-$-$-$P#P#T#c%U#`#X#U#>$x$%$I$T#M)N)O)`#P)Q)R)S)T)I$I$ $.$+$V#g%.$Q#g%@& $a%O$-$+$ $U#`#c%C$+$y$O# $C$N$M$%$J$O#c%K$-$Q#L$E$I$K$%$-$P#+$L$X#I$a%Q#K$x$H$t&@&O$C$V#x$X#P#%$X#F$`#`#U#K$E$-$.$O;|=+$+$%$%$G$+&K$Q#y$S#d%>$ $Q#`#Y#%$Y=f=W%,@U)v a$c@:+j=D%] ",
+" V)W)[%l.J&X)Y)Z)`) !.!+!@!#!$!%!&!*!=!-!;!>!O)n,.;.;.;.;.;.;.;,!O'4)'!I)T'9-g,q>m,8-v=|=u&f%Z##&e%#&&,v=t&$,s>Q$.;.;.;.;.;.;.;.;f-@;*>h,s>8-8-H$g%S#O$%$ $P#`#-$*,)!%$%$I$+$F$a%!!~!{!]!$,G$c%N$O$I$>$%$P#U#%$U#X#`#`#F$`#+$I$K$a%G$g%#$H$%$G$a% $P#U#`#T#Z#d%K$I$K$X#F$P#y$@'^!a-/! ;(!V,Z,+&c%C$d%@&L$J$S#I$L$b%-$ $M$O#%$U#U#P#+$-$X#F$Q#u&@;_!d-c-:!<![!}!H$c%H$u&G$ $C$+$-$P#P#U# $C$Q#E$Z#V#X#@& $U#/-g%K$L$O$L$U#P#`#`#P#P#Q#H$+&a%c%O#d%I$L$ $Q#%$+$`#`#F$F$`#K$>$C$V#U#`#E$X,|!1!2! ;b-n;1!R's&a%M$G$a%u&V#c%P$g% $+$>$C$C$b%a%b%|=O$L$z$V&s)E@[@$@%.A.I&r+4';. ",
+" > b w#g.f#3!4!5!6!7!8!9!0!a!b!c!d!e!f!g!h!i!j!X#k!.;.;.;.;.;.;.;'!Q'4)&>l!]!4)g,j,Y,s>n%>,s&d%Z#S#a%g%g%H$b%s&&,E$D=.;.;.;.;.;.;.;.;#,;>=>`,&,>,$&.&d%G$P#F$V#W,c-.;.;x$x$+$`#-,.;.;.;.;m;M$T#x$$,v=a%J$Z#x$K$`#U#/-T'n;t>d-a-m!s>J$V#a%N$.&L$y$s&T#>$T#I$U#%$+$P#.$F$L$;>.;.;.;.;.;.;.;.;.;.;.;t>q>/-f%J$$&e%.$I$+$ $V#J$e%K$K$Q#L$E$`#+$O'.;.;.;.;.;.;.;.;.;.;n!|=o!p!a%Q$v=T#C$x$I$P#Q#Q#U#U#.&P#F$`#G$*,q!@&V#d%V#`#g%|!+'c-t>+';>$,d%E$b%n%O#T#f%.&I$c%V#X#>$E$-$X#X#U#`#P#-,m;.;.;.;.;.;.;.;.;.;.;.;.;r!/-b%u&J$x$Q$Z#S#%$-$P#Q#I$`#-$H$+$I$x$y$v$u$s!m r#Y p@t!.@A@>@ ",
+" X+~+9+f#f#z V=u!v!w!S#>*y$n%K$U#/-x$`#x!y!X#z!A!B!.;.;.;.;.;.;.;.;C!D!E!F!G!H!9=h-*,l,|=t&p>f%T#e%H$G$M$Q$g%a%/-s&c%'!.;.;.;.;.;.;.;.;I!J!&>m,u>e%L$-$F$-$Q$5).;.;.;.;.;+&J$`#l,.;.;.;.;.;q!f%O$O$J$Q$T#E$J$U#`#$,K!.;.;.;.;.;.;.;.;.;L!s&$&a%E$E$b%>$T#Q$E$+$Q#P#X#`#h,.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;d-X,M$$&$&f%s&u>n>b%$&H$T#L$K$U#`#s>t>.;.;.;.;.;.;.;.;.;.;.;.;.;M!N!e%S#-,O$e%X,+&C$E$L$P#`#`#E$u>+'.;.;.;>$V#P#-$g,.;.;.;.;.;.;.;.;t>n,e%e%b%a%M$T#L$@&V#P#$&**>$K$U#`#/-N'.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;o,r>u&M$d%T#d%S#@&K$+$+$U#L$.&F$F$Q#V#`#V#$-O!}..@U P!p.M Q!^ ",
+" [*n@0+k.h.(+D%R!S!T!`#F$F$ $$&P#%$#$**U#C$Q$Q#C$ $Z#.;.;.;.;.;.;.;.;U!V!W!X!Y!Z!`! ~.~+~@~#~$~x$V#>$ $%$N$f%C$e%s&s&H$l,.;.;.;.;.;.;.;.;'!V,%~|!`,+$|=g,f-.;.;.;.;.;.;.;.;a%F$Z#.;.;.;.;.;.;&~ 'n%$&y$Z#d%+$`#H$f-.;.;.;.;.;.;.;.;.;.;.;.;.;9-t&H$.&b%T#O$T#L$u&#&I$U#J!.;.;.;.;.;4)8-X,v=*>5).;.;.;.;.;.;.;.;.;.;.;.;.;*~y$s&y$u&N$F$E$=~.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;-~N$P$p>.&@&s&Q$-$H$Z#u>g-d-.;.;.;.;.;.;G$`#.$;~.;.;.;.;.;.;.;.;.;.;.;>~+=e%$&S#x$C$O$ $-$O#O#%$%$X#9=.;.;.;.;.;.;&>s>|=N$O;q>,~.;.;.;.;.;.;'~i,#;**e%J$$&b% $>$L$K$Q$/-L$-$>$%$F$`#I$)~k&/ !~j=m.#@y#~~# ",
+" E@F h.i.w#n@5*{~]~^~>$%$`#.$x$F$U#c%M$F$-$C$-$d%.$q>.;.;.;.;.;.;.;.;/~(~_~:~<~[~}~|~1~2~3~4~5~6~7~8~9~0~a~b~+$J$N$+&f%+&.;.;.;.;.;.;.;.;o,J!4)c~%,O$.;.;.;.;.;.;.;.;.;.;.;U#J$c-.;.;.;.;.;.;>>n,-,u&$,v=K$K$#,.;.;.;.;]!9%+&M$>,g,c-.;.;.;.;.;'!** '#$f%v=#$f%a%.$`#%~.;.;.;.;.;m,Q$t&N$u&S'$,h-.;.;.;.;.;.;.;.;.;.;.;.;1!y$y$@&a%C$G$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;d~-,>,O;y$M$d%>$G$.;.;.;.;.;.;.;.;.;.;.;`#y$d-.;.;.;.;.;.;.;.;.;.;.;.;.;I)/-n%i,b%H$#$V#.$u&@&U#`##,.;.;.;.;.;c-=>N$|=X,|=S'9%v=e~.;.;.;.;.;.;+;k,-,+=#&u&N$f%g%I$-$.$>$-$+$Q$a%F$I$K$`#K#f~|@g~u g.d.f s ",
+" -%h~1-p.u X-)+s)i~j~k~f%J$Q#@&O$`#+$d%c%`#`#U#`#+$U#'!.;.;.;.;.;.;.;.;V,>~0-*-I)Q'l~m~n~o~p~q~r~s~t~u~v~w~x~y~$;z~A~B~C~D~.;.;.;.;.;.;.;.;q!r!%~E~=,t&.;.;.;.;.;.;.;.;.;.;.;c%+;.;.;.;.;.;.;.;F~Z,`,p>s&-$ $_!.;.;.;.;%~M$**|=+&O;-,**.;.;.;.;.;.;c~X,u&Z#$,n%N$C$U#P$.;.;.;.;.;>>$,s&>,-,p>r>*,e%a-.;.;.;.;.;.;.;.;.;.;.;m!v=|=S#t&c%c%.;.;K!q>O;Z#+&&,i,g,G~.;.;.;.;.;.;.;.;n>s>X,P$n%+&O$%,.;.;.;.;.;.;.;.;.;.;.;g,.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;c-u>9%`,y$+&n%T#T#f%g%`#p>.;.;.;.;.;.;n>v=P$>,s>u>->Z,X,y$'~.;.;.;.;.;.;>>u>|=v=Z#y$P$#$g%+$a%+$X#-$T#%$F$b%$&+$H~I~s)>@/)3+d.G+F'J~",
+" '+K~K&l.E !@L~M~N~O~K;T#+$F$T#.$`# $@&>$P#E$c%I$ $`#&~.;.;.;.;.;.;.;.;^!e~P~^!4)4)|!b'b'u>M$x$>$7$L;Q~I-R~S~T~U~V~W~X~Y~Z~.;.;.;.;.;.;.;.;`~)!m!l!T'I!%>m;c-.;.;.;.;.;.;.;.; {.;.;.;.;.;.;.;.;e~Q'@'n,g%%$_!.;.;.;.;N'n%+&>,#;**u>h,f%.{.;.;.;.;.;+{j,>,#&+&M$e%G$Q# ;.;.;.;.;.;*>-,S'j,R'u>Y,->p>b'.;.;.;.;.;.;P~j,Y,->W,n,h,`,+=8-n%x$.;.;6)f%t&O#Z#p>#;>,@{#{.;.;.;.;.;.;.;F~=,i,X,`,$,Q$**${%{&{*{.;.;.;.;.;.;.;.;.;e~q>b'9%b'q>={.;.;.;.;.;.;.;.;9==,@'+=u&+&O$@&f%%$%$t>.;.;.;.;.;N'R's>9%i,b'u>i,.'l,r>X,.;.;.;.;.;.;.;T'`,v=s&+&N$#&O#>$P$>$P#g%b%P#F$g%M$K$>$=$N@-{m$E ;{3&v > ",
+">{d;5.[+F%4.,{K# $'{){!{>$Q#`#g%C$U#K$$&I$`#L$.$K$J$`#~{.;.;.;.;.;.;.;.;>~={={{{9-6)=,>,S'+=$&$&@&Q#H$s&>$K$ $K=.#]{^{/{({_{.;.;.;.;.;.;.;.;:{<{[{}{|{1{`,u>l,+=.;.;.;.;.;.;.;.;.;2{;>;,m,h-/!.;V,=>@'l,F$n>.;.;.;.;.;3{|=**s>r>#;u>l,#&v=.;.;.;.;.;.;;>j,r>r>s&f%+$t&.;.;.;.;.;.;Y,k,u>n,j,`,8-.'u>H$.;.;.;.;.;.;~{->->q>=,8-j,i,+=#;X,**.;K!n%p>j,%,**l,Y,4{5{6{q!.;.;.;.;.;.;~{'!q>%,R'8-/-O#7{8{9{#>.;.;.;.;.;.;.;.;|!H)c~j,.'n,i,h-=,.;.;.;.;.;.;.;J!6)O'h,=,r>M$**v=`#j,.;.;.;.;.;.;J!m,=,n,W,h-n,Y,->b'i,g%c-.;.;.;.;.;.;n!@;@'n,**N$t&a%G$L$%$Q#g%Z#F$F$g%g%`#V#c%U#+#,@4.w#d.0{q#",
+"e,f r.}+C r k;}==#a{b{`#U#-$`#H$d%X#K$P$-$F$@&Q#U#b%`#t>.;.;.;.;.;.;.;.;>~o,c{m!#,m,`,p>N$b%T#C$ $P#V#H$x$d%O#C$`#T#M$E$L$`#.;.;.;.;.;.;.;.;d{e{f{g{h{i{j{k{l{8!.;.;.;.;.;.;.;m{|!9-n{4)9=|!6)d-E~*>h-@&c%.;.;.;.;.;.;@;j,8-@;q>=,@'h,9%a%.;.;.;.;.;.;e~j, 'W,&,s&Q#|!.;.;.;.;.;.;m,6)R'->q>k,W,=,i,I$.;.;.;.;.;.;c-H)9-%~#,@'h-j,>,|=#$$,O'h-e%N$s>n,p>b'8-8-9=->O;.;.;.;.;.;.;.;n{*>h-->*>>,o{p{q{r{Y=.;.;.;.;.;.;.;s{t{u{E~m,v{w{h-Y,P$=~.;.;.;.;.;.;=~I!->`,8-X,+&v=t&Q#d-.;.;.;.;.;.;9=m,R'R'9=;,k,W,q>*,i,t&V,.;.;.;.;.;.;.;g,->m,#;O;>,e%d%O#.&Q#%$g%Q#X# $Q#X#E$g%P#x{y{q#z{f#8.A{",
+"~ u k.J+B{C{D{X&E{F{G{P#+$K$`#P#%$F$X#d%F$U#v=%$P#$&U#H{.;.;.;.;.;.;.;.;*-F~r!m!l!I!Y, 'l,$&T#L$K$P#`#P#+$b%+&O$C$H$**d%V#`#.;.;.;.;.;.;.;.;I{J{K{L{M{N{O{P{Q{R{.;.;.;.;.;.;.;9-5)5)g-n{;>T'P'6)@;;>R'%$h-.;.;.;.;.;.;Y,s>%,g,->m,9-c~*> $.;.;.;.;.;.;$>W,=,;,-,r>U#(!.;.;.;.;.;.;8-R'=>H)c~@'#,|!.'P#.;.;.;.;.;.;S{n{;>'!T'O'O'=>i,X,.'=,9%|=/-+&Z#**+=>,-, '=>;,T#.;.;.;.;.;.;.;'!n>;,Z,*,v=T{U{V{W{`#.;.;.;.;.;.;.;X{Y{Z{`{ ].]+]W,h-u>@].;.;.;.;.;.;m;3{|!h-j,>,#&+=G$H$.;.;.;.;.;.;.;6)E~O'E~5)|!@'Z,h,u>-,|=u>.;.;.;.;.;.;.;9-g,W,b'-,l,/-Q$+=+=L$L$@&E$%$>$F$`#`#F$`#K$T@m w#o.J+#]",
+"p $@<+$]{ 3)~&Y#%]&]*]K$J$H$K$d%d%U#Q#.$F$-$e%P#K$O$U#~{.;.;.;.;.;.;.;.;m!o,P~g-n>;,i,r>@'S#T#O#g%Q#E$+$`#P#`#X#Q#C$M$>$ $`#.;.;.;.;.;.;.;.;2!F~e~3{'!E~=]-];]`#.;.;.;.;.;.;.;]!3{>]^!]!5)4);>6)9=|!8-`#n;.;.;.;.;.;.;Y,h,Y,@'q>W,->Y,k,U#.;.;.;.;.;.;t>6)g,E~h,s>X#d-.;.;.;.;.;.;Y,q>g,#,O'W,q>;,i,U#.;.;.;.;.;.;,]3{n{5)g-n>6)c~ 'v=#&P$**p>v=P$S'v=p>&,l,n,@'8-K$.;.;.;.;.;.;.;e~I)H)@;q>r>'])]!]~]N-.;.;.;.;.;.;.;{]]]^]/](]_]:]R'@'<]/@.;.;.;.;.;.;N'J!@;@;5)*,+=b'+$*,.;.;.;.;.;.;.;q>;,6)9-J!#,9=#,W,s>l,l,O#.;.;.;.;.;.;.;*-E~c~W,n,r>Z#b%t&$&.$.$x$J$N$+&C$E$G$X#X#X#%#n&K []v 5*",
+"'@B g.}]p |]}=`#1]2]3]`#.$T#>$u&N$K$G$H$`#>$f%.$K$.$P#*~.;.;.;.;.;.;.;.;%~F~)!{{9-g,s>$,#;+&J$s&g%P#@&c%`#c%.$`#`#@&O$%$I$P#.;.;.;.;.;.;.;.;)!%>o,>~>~@;Z,=>k,F$.;.;.;.;.;.;.;4]1!.{F~J!m!]!I)*>Q'c~r> $.;.;.;.;.;.;.;+$U#P#P#U#P#P#P#U#X#.;.;.;.;.;.;.;l!@;T'->b'K$t>.;.;.;.;.;.;l!O'|!J!4)R'k,j,p>P#.;.;.;.;.;.;)!={m!3{V,E~n>E~`,p>u&y$Q$S#/-#$-,+=#&/-M$d%L$F$K$.;.;.;.;.;.;.;V,n{T'J!l!i,5]6]7]8]F$.;.;.;.;.;.;.;9]0]a]b]c]d]e]f]E~g]h].;.;.;.;.;.;c->~;>Q'=>`,&,R'-$g-.;.;.;.;.;.;.;;,|!@;E~5)=>m,O'b'S'#;8-T#.;.;.;.;.;.;.;i]4)@;E~n>h-+=f%|=e%I$+$-$`#`#-$-$H$d%Q#>$M*(#B@a.}+]+,@",
+"> v })_+b E#Z@`#B~s-j]%$P#`#`#g%a%P#G$J$-$d%**a%>$O$%$5).;.;.;.;.;.;.;.;T'F~k]>~V,&>*,v=/-O$x$e%.$P#.$V#U#@&P$F$P#M$t&K$I$I$.;.;.;.;.;.;.;.;J!)!c{F~r!@;Z,E~*>F$.;.;.;.;.;.;.;l]m]n]o]p]%~{{#,->#,Q'p>d%.;.;.;.;.;.;.;d-N'N'N'N'N'N'N'N'd-.;.;.;.;.;.;.;I!H)n>q>.'c%&~.;.;.;.;.;.;;>|!9-3{]!I)|!n,N$L$.;.;.;.;.;.;&>3{'!g-4)Q'*>#,n,X,v=O#@&#$y$O$G$K$F$-$x$***>=~.;.;.;.;.;.;.;.;={m!I)P';>n,q]r]s]t]F$.;.;.;.;.;.;.;u]v]w]x]y]z]A]B]@'C]Y=.;.;.;.;.;.;.;@,g-I!|!j,n,q>U#i].;.;.;.;.;.;.;3{&>I!I!g-m,Y,R'S'P$#&`,+$.;.;.;.;.;.;.;'~4)9-@;@;R'S'S#9%b%G$e%L$P#X#F$F$V#I$X#F$E$2%E@I q.B D]",
+"V+7.1+n.z E]F]O=G]H]I]G$>$P#F$e%L$F$Q#X#F$+$d%L$L$x$L$h-.;.;.;.;.;.;.;.;n{o,={n{I)9=*,u>X,d%g%Q$c%K$G$C$F$V#Q$F$Q#O$t&%$G$O$.;.;.;.;.;.;.;.;T'P~e~J!^!c~Z,Z,Y,F$.;.;.;.;.;.;.;J]K]L]M]N]I)n>g,Z,k,j,#$O#.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.; ;9-l!E~->k,n%6).;.;.;.;.;.;5)H);>I!9=6)H)8-C$t&.;.;.;.;.;c-n{V,P'5)9-c~@'.'%,%,&,M$x$V#`#-$f%j,r!.;.;.;.;.;.;.;.;.;.;.;.;.;O]*-5)l!5)Y,P]Q]R]O#F$.;.;.;.;.;.;.;S]T]U]V]W]X]Y]Z]`] ^`#.;.;.;.;.;.;.;P~{{'!g-m,k,=,`#/!.;.;.;.;.;.;.;={'!T'T'5)R'h-E~%,u&u&9%Q#.;.;.;.;.;.;.;S{>~T'@;;,.'X,P$l,J$C$#$c%%$+=E$X#G$%$X#Q#.^-{_&x@q..@=%",
+"+^@^7+e&g&#^,@L#$^%^&^ $d%P#F$+&%$F$>$%$`#`#g%%$K$+$ $O#.;.;.;.;.;.;.;.;P~O]c{'!&>*>b'`,-,e%c%.&c%Q#x$g%F$J$y$-$I$f%O#K$P#S#.;.;.;.;.;.;.;.;{{%>1!>~>]*>=, 'X,F$.;.;.;.;.;.;.;*^=^-^;^>]H)Q'm, 's>r>f%y$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.; ;&~o,5)n>I)'!;>n{I);,.'u>S#.;.;.;.;.;.;'~9-&>&>Q'=>g,P$F$T'.;.;.;.;.;P'^!e~m!*-'!*>W,%,+=s&Z#%$`#C$Q't>.;.;.;.;.;.;>^m!t&.;.;.;.;.;.;.;k]1!g-E~P'@;,^'^)^u&F$.;.;.;.;.;.;.;'!!^*-V!~^{^]^^^/^(^F$.;.;.;.;.;.;.;={%~P';>m,W,h,U#c-.;.;.;.;.;.;.;1!={g-T'n>R' 'l,#;y$Z#$,X#.;.;.;.;.;.;.;t>0-n{I!|!R'&,O;h-H$G$x$Q#P#C$%$`#s&G$Q#&$_^J@F':^<^Q&)+",
+" [^(+r.}^w#5*|^1^2^`#P#.&X#`#Q$`#F$.$C$X#U#O#Q#K$C$V#L$.;.;.;.;.;.;.;.;H{F~o,P'{{c~b'8-u>f%c%g%V#U#G$.$F$.&a%`#Q#T#c%%$U#h-.;.;.;.;.;.;.;m;r!P~c{P~c{6)g,;,-,F$.;.;.;.;.;.;.;3^4^>]]!n{Q'9==,s> 'X,M$t&.;.;.;.;.;.;.;#,g-{{m!'!%~I)@;l!H)W,=>Q'=>*>T'5)9-&>#,;,j, '#;%>.;.;.;.;.;.;T'Z,n{I!Y,N$U#M$.;.;.;.;.;f-Q']!J!'!^!%~g,m,8-**Z#Q#K$T'.;.;.;.;.;.;*-g,u>X,X,F$.;.;.;.;.;.;.;.{r!g-I!O'j,>,S'+&#&F$.;.;.;.;.;.;.;%~r!J!5^6^7^j,8^9^0^F$.;.;.;.;.;.;.;>]'!{{9-m,9=Z,Q#d-.;.;.;.;.;.;.;1!o,>~]!E~R' '#;#&t&P$$,`#.;.;.;.;.;.;.;b-V,'!l!9=q>s>p>O;f%@&a%%$P#X#X#-$O#V#`#Y=F#R&f a^:+G+b^",
+" 1*z#c+c^0.d^e^f^g^X#K$g%L$Q#H$I$P#E$-$F$X#x$`#Q#J$.$E$(!.;.;.;.;.;.;.;.;5)e~P'9-m,i,b'S'M$b%u&>$ $b%+$F$T#.$X#P#.$+$-$`#>^.;.;.;.;.;.;.;m!>>0-*-c{*-c~R'W,9%F$.;.;.;.;.;.;.;h^i^j^V,9-=>j,s>O;|=#&M$M$.;.;.;.;.;.;.;&>3{={]!g-I)n>;,W,h-Y,->I)g,;,]!g-n>&>6)*>h,h,h-S't>.;.;.;.;.;.;J!H$P#F$.$9%t>.;.;.;.;_!6)c~{{'!I!]!;>=,Y,s>Z#K$.$$>.;.;.;.;.;={u>O;P$v=X,X,F$.;.;.;.;.;.;.;k]L!m!l!n>h,u>*,#$f%F$.;.;.;.;.;.;.;g-={k^l^m^4)j,n^o^p^F$.;.;.;.;.;.;.;{{'!V,9-g,E~m, $q^.;.;.;.;.;.;.;l!3{J!]!E~g,;,*,/-$&$,+=`#.;.;.;.;.;.;.;(!c{>~>]l!@'`,#;/-e%t&$&+$G$d%P#K$x$>$r^Z-'+D%g&:+)=P%s^",
+" 5*r#t^u^J+v^w^x^Z$X#`#F$`#-$Q#I$S#O$`#%$.& $L$V# $C$9%.;.;.;.;.;.;.;.;>~y^]!g-9=n, '+=@&c%$&+$K$O$Q#F$H$f%O$$&#$b%P#V#.;.;.;.;.;.;.;.;T'k]o,V,J!4)g,R'Z,S'F$.;.;.;.;.;.;.;={z^A^B^C^|!Y,-,&,#;y$e%f,.;.;.;.;.;.;.;^!>>=~c{V,>]T'c~|!g,.'Y,=>Z,->I!c~O'Q'W,@'b'9%s>+= 't>.;.;.;.;.;.;.;.;c-.;.;.;.;.;.;g-O'=>c~%~l!@;J!9=n,j,S'a%X#f-.;.;.;.;.;>~+=.'k,r>-,h-j,F$.;.;.;.;.;.;.;.{)!]!n{;>.' 'k,p>t&F$.;.;.;.;.;.;.;n{m!m!5)4)T'*>D^E^F^F$.;.;.;.;.;.;.;g-%~'!H)=>R'n,c%F~.;.;.;.;.;.;.;;>{{{{>]l!h-j,O;S#@&O#M$U#.;.;.;.;.;.;.;e~*-V,e~5)R'h-@'p>.&y$$&+$L$g% $P#V#.^1'G^H^z I^q.!~'+ ",
+" j S,8.J^o.K^L^M^S&N^B$X#Q#Q#F$Q#c%T#X#c%f%C$d%d% $d%d%c-.;.;.;.;.;.;.;c-{{V,V,I)W,m,i,y$b%G$+$I$E$`#`#F$F$P#G$#&O$`#8-.;.;.;.;.;.;.;1!V,^!^!]!P'n>h- 'Z,O;F$.;.;.;.;.;.;.;%~P'O^P^Q^#,m,u>h,u>y$S#[-.;.;.;.;.;.;.;R^>~1!^!={c{{{6)E~;>m,h-R'j,m,9-=>@'W,h,n,&,-,l,**p>W,y^.;.;.;.;.;.;.;.;.;.;.;.;^!=,Y,c~m,Q'9-Q'c~@;=,u>=,O;I$u&.;.;.;.;.;.;*,$,.'h-b'*,@'h,F$.;.;.;.;.;.;.;c{c{{{l!O'.'l,l,n%Q$F$.;.;.;.;.;.;.;&>m!m!9-*>=,u>p>**O#F$.;.;.;.;.;.;.;]!m!>]9-O'@'`,e%->.;.;.;.;.;.;.;5)3{{{e~>]@'h,b'+&+&N$E$-$.;.;.;.;.;.;.;T'J!{{{{;>m,@'h,P$H$u&O#V#%$Q$T#K$S^D'{@v .@l.r.a@T^O& ",
+" U^h 0{C.G.V^W^>@X^*$&$**y$L$V#O$V#F$.$G$%$d%J$L$**#;=,.;.;.;.;.;.;.;.;n{3{4)|!@'k,i,P$$,S#G$Q$#$+$P#+$F$`#K$t&P#Q#N'.;.;.;.;.;.;.;5)y^P~*-P'&>c~j,-,u>s&F$.;.;.;.;.;.;.;P'3{Y^Z^`^ /l,|=$,#&M$$&./+/.;.;.;.;.;.;.;@/y^>~#/$/%/&/q>@'j,j,k,`,h-|!@'Z,q>i,l,>,v=#;P$#;f%`#|=.;.;.;.;.;.;'~f-]!|!m,i,h,H)E~m,4)g-*>->g,%,>,s>s&P#T'.;.;.;.;.;.;X,X, '-> '`,h,`,F$.;.;.;.;.;.;.;.{1!]!n{H)=,l,#;s&y$F$.;.;.;.;.;.;.;4)J!={T'6)W,u>9%9%u&F$.;.;.;.;.;.;.;*-*-F~3{O'O'=>p>#&.;.;.;.;.;.;.;n{3{{{m!m!=,u>s>+&**l,G$.$.;.;.;.;.;.;.;J!^!3{J!H)R'8-S'Z#H$S#g%%$P#w$*$N**/~ 8$F%e&=/8.A@3@ ",
+" -/}]2*(=E.g#a@B@P>^&a'H~%$E$u&E$F$O$>$U#b%.& $J$$&$&b-.;.;.;.;.;.;.;.;@;%~#,W,Y,b'S#e%J$>$g%M$.$L$**S#`#>$.&`#R'.;.;.;.;.;.;.;P'={P~L!3{'!>]I) 'r>r>u&F$.;.;.;.;.;.;.;5)*-F~;/>/,/*,P$n%9%e%x$'/)/.;.;.;.;.;.;.;!/~/{/]/^///(/_/:/</[/}/9%&,-,-,s>%,r>s&/-/-/-.&-$-$n,.;.;O]E~J!^!&>I!@;g,->R'k,.'Z,->->I!g-O'g,9-W,S'&,$,`#n;.;.;.;.;.;.;`,i,.'|!j,h-9-#$F$.;.;.;.;.;.;.;k]e~]!]!{{#,R'&,|=-,F$.;.;.;.;.;.;.;4)'!P';>Q'6)`,X,u>s&F$.;.;.;.;.;.;.;5)g-n{l!O'->c~j,J$.;.;.;.;.;.;.;>>V,]!g-9-Z,u>+=S#+&s&I$@&.;.;.;.;.;.;m;3{V,]!.{H)R'*>k,N$@&|=E$K$K$5%'#m>=%|/v s@p.v 1/|% ",
+" 2/5@3/k=J...9+2 ^-s)8;`#`#L$P#F$x$K$X#H$y$c%O#@&@&#;.;.;.;.;.;.;.;.;&~P'n{->*>j,P$S#d%G$L$ $-$P#V#C$U#%$`#O#.;.;.;.;.;.;.;r!l!m!e~.{P'5){{&>u>p>$,Z#F$.;.;.;.;.;.;.;4)%~4/5/6/R'Y,s&t&9%f%M$7/8/.;.;.;.;.;.;.;.;9/0/a/b/c/d/e/f/g/h/i/j/v=X,S'**#&#&S#$&s&V#`#H$q!.;.;.;6)H)m!^!^!.{3{Q'#,4)=>Z,W,R'W,=>O'=,n, '*,$,O;**U#D=.;.;.;.;.;.;Z,k,W,=>W,k,S#F$S#.;.;.;.;.;.;.;.{>]'!9-;,Z,`,+=#$%,F$.;.;.;.;.;.;.;T'J!3{9-=>Y,&,n%#$O#F$.;.;.;.;.;.;.;P''!%~I!=>k,`,&,$&={.;.;.;.;.;.;.;{{^!e~&>R'*,+=#$/-Q$U#u>.;.;.;.;.;.;4)P'{{{{V,E~R'm,8-N$N$u>>*V#k/l/~@3.h K+m/}+6.A@K@ ",
+" J+n/o/g#E.k+o@I p/q/_#z$G$X#F$K$`#`#P#I$K$p>#$b%v==>.;.;.;.;.;.;.;.;1!m,*>*>h,r>%,$,J$t&y$g%.$%$-$U#F$.&c-.;.;.;.;.;.;>^l!>~*-e~c{'!#,@;;,>,+=u&$&F$.;.;.;.;.;.;.;4)'!r/s/t/j,-,s&f%$&@&u/v/w/x/.;.;.;.;.;.;.;.;b'n>y/z/A/B/C/D/E/F/Y%K$E$Z,&,|=#$f%b%a%-$E~.;.;.;.;.;y$$&+&S#S##$N$t&+&u&t&Q$S#N$**`,g,j,i,9%v=#&S#e%Q# ;.;.;.;.;.;.;I)r>.'9%e%P#+$k,.;.;.;.;.;.;.;.;P~1!{{4)*>k,`,**t&M$F$.;.;.;.;.;.;.;&>={P~g-@;m,&,&,+=Q$F$.;.;.;.;.;.;.;J!={k]J!6)k,j,u>|=#$.;.;.;.;.;.;.;l!*-.{m!6)->s>v=l,e%`#_!.;.;.;.;.; ;>]P~c{3{%~|!h-b'+=y$f%G/k/H/I/H@g K'$@<+f.K+J/C% ",
+" K/L/ >I&M/E.W E ] 4*N/B&8;K$y$ $U# $K$-$V#a%g%y$u>6).;.;.;.;.;.;.;.;@,|=m,j,X,O;y$H$M$t&e%g%T#P#`#9%.;.;.;.;.;.;.;f-g,E~T'P'>~^!5)Q'I!@;.'i,+=@&`#.;.;.;.;.;.;.;4)V,O/P/Q/m,n,**y$Q$T#R/S/T/u&.;.;.;.;.;.;.;.;.;U/V/@]W/X/u&M'Y/Y=Q#/->^L!n%**$&H$O$U#h-.;.;.;.;.;.;c-'!;,q>q>g,R'q>R'=>R'W,R'Z, 'S'Q$t&h-@'9%>,r>/-V#r!.;.;.;.;.;.;.;m!u&M$u&;,d-.;.;.;.;.;.;.;.;.;1!e~e~c{5)@'R'%,u&Z#`#.;.;.;.;.;.;.;4)'!>]n{I)@;n,=,u>N$F$.;.;.;.;.;.;.;5)n{3{*-6)k,h-.'v=|=>].;.;.;.;.;.;7)Q'>~T'->8->,|=X,Q#@&.;.;.;.;.;.;#,5)>~.{y^={E~h-j,S'f%=$I#k;H@H@d;a.d.i.i.E%Z/1* ",
+" `/t@Y g+M.M.T.Y x } '@K*2%s=+$I$M$C$-$>$H$x$y$>,p>m,.;.;.;.;.;.;.;.;d-%,H$b%M$H$x$G$+$P#`#-$S#_!.;.;.;.;.;.;.;={m,n>I)4)5)%~n{E~R'q>b'+=#;#$g%U#.;.;.;.;.;.;.;I)]! (.(+(Q'=,$,v=#$a%@(#($(@&*>.;.;.;.;.;.;.;.;.;.;%(&(*(=(-(X/z/d-.;.;E~M$b%H$d%a%X#,].;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;/!j,r>v=#;*,p>#&@'.;.;.;.;.;.;.;.;.;.;.;.;.;~{e%.;.;.;.;.;.;.;{{J!P'5)n>Z,8-u>**$,`#.;.;.;.;.;.;.;4)n{&>E~;,k,9%+=#&S#F$.;.;.;.;.;.;.;V,5)n{={=>k,l,p>****>,q^.;.;.;.;.;.;P~.'H)O'Y,#;@&-$+$,!.;.;.;.;.;%~9-l!g-m!m!{{|!n,;(D^>(,(J@n$'(u _+>%p.$@y )(j& ",
+" }]p#D R h#N.h#W !(D >@,@~(@#{(Q$Y# $y$/-E$N$&,$,b';,&~.;.;.;.;.;.;.;.;c-J! '#&t&Z#n%`,J!c-.;.;.;.;.;.;.;`~6);,;,I)k]m!4)m!g-;,Y,b'$,O#@&x$-$I$.;.;.;.;.;.;.; 'c~](^(/(Q'j,P$u&y$J$((_(:(P$*,]!.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;S{Y,$,S#$&@&g%+$d-.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;>^s>#&s&+&**S#.;.;.;.;.;.;.;.;.;.;.;.;P~g,F$.;.;.;.;.;.;.;i,S#g,%~@;Y,u>+=S#.&X#.;.;.;.;.;.;.;4)]!'!#,Q'R'&,**t&e%F$.;.;.;.;.;.;.;V,5)P'e~Q'->Y,&,**#&O;&,e-.;.;.;.;.;.;a-#&.$K$F$-$**q^.;.;.;.;.;I)q>n>I!'!5)#,<(g,[(}(|(1(2(3( @g@c.o.<+K i;G@4( ",
+" P+H Y +.L.y+5(X Y+:%J*o L@H#D$P#D$J$V#b%Z#N$-,j,W,I!,].;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;`~I!*,.'O'g,n>]!I!H)g-g-=,j,->N$X# $V#a%n{.;.;.;.;.;.;.;k]Z#6(7(8(|!Y,p>O;&,+&c%G$T#d%S'n,H).;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.; ;;,v=n%**#&t&O$e%l!.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;%>`,&,u&Z#Z#c~.;.;.;.;.;.;.;.;.;.;P'@;=>F$.;.;.;.;.;.;.;.;c{%~P'I!h->,u&$&I$.$.;.;.;.;.;.;.;n,R'W,c~I!@;=,i,+=Q$F$.;.;.;.;.;.;.;h,=,Y,I!6)O'9=@'b' 'h,>,8-r!.;.;.;.;.;.;.;.;m;e-.;.;.;.;.;.;e-g,=>m,6)E~I!9-|!9(0(a(b(c(d(6+(+1+r@d.F 3+X-; ",
+" d;-%g&W X z.F.e(f(B z#!@g(h(X@,$0%L$H$@&Q$#$#;*,;,n>n>c{i(.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;N'={@'b'->`,;,I)|!|!E~Q'6)6)Q'%,n,g,t&C$.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;q>s>+=u&p>y$e%d%T#a%>,j,r>Z,={.;.;.;.;.;.;.;.;.;.;.;.;,~c~9%v=**#$#&**u&+&+=*,F~.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;6)=,v=+=+=S'&>.;.;.;.;.;.;.;b-E~&>@;c~F$.;.;.;.;.;.;.;.;.;.;&>n>&,%$g%g%e%{{.;.;.;.;.;.;.;V,+&@&`,=>k,&,#;s&$&F$.;.;.;.;.;.;.;'!Q$H$g,g,@'.'X,**O;r>$,&,q>H)+'.;.;.;.;.;.;.;.;.;.;.;.;o>@;u>Y,H)=>9=n>Q'9=j(k(l(m(n(o(p(q(n.c@z{A 4.' r( ",
+" $+>@g&T.%.s(8@t(u(v(:.> ;@w(<-(#x(y(M$N$|=-,@'m,g,Q'H)Q'9-3{0-,~K!H{c-i(~{>^c{&>=>=,*,O;S'9%b'8-->#,E~|!;>@;R'W,h-r>X,9%e%>,.;.;.;.;.;.;7)i(d-.;.;.;.;.;.;.;*> 'v=Z#y$H$O#u&E$c%O#`,+=u>=,;,4)]!=~ ;7).;D=2!c{9-9=h,l,h-n,S'9%P$S#O#Q$O#Z#P$=,m,>>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;>]8-*,8-i,r>n,;,g-(!/!c-,]={l!g-&>#,9=O'.;.;.;.;.;.;.;.;.;.;5)T'O'6).;.;.;.;.;.;.;.;.;.;.;.;.;.;.;E~=,&,&,n%+&t&.;.;.;.;.;.;.;.;.;.;.;->W,%,$,**p>P$+&#&p>s>@'@;4)y^q!+;c-D= ;;~^!T'k,>,>,s>=,z(g,A(B(C(D(E(F(G(H(I(J(K(L(M(8+@^U%]. ",
+" b,N(P% .Q.H*O(H.9$j$0.} ^ )+P(H#&$S#N$O;k,Y,k,*>*>c~I)9-6)=>W,Y,j,Z,*,*,k,s>v=8-g,.'*,`,`,.'Z,->g,R'm,@'8-%,-,P$X,&,@&S##;Z#t&S#y$$,h,j,Y,c~l!I!Q(R(S(Q'l!Q'h- '|=Q$e%d%G$E$J$/-u&|=-,j,9-6)#,c{*-T'J!P'6)|!#,Y,`,i,s>X,l,9%p>N$$&M$M$c%U# $]!.;.;q^I)%~'!>~@,c{]!3{4)E~l!m!c-.;.;.;.;.;.;.;a-->k,R'Z,-,n,Y, 'W,c~@;3{F~P'P'J!T'E~#,O'T(U(V(@;4)J!>~n{n{J!H)R'O'8-S'n%+&y$#$p>&,.'E~6)E~3{#,9=H)W,s>i,p>**p>S#O##;i,`,W,@;@;E~;>Q'W,h-%,+=/-u>#;N$Z#P$#;*,Z,->n>H)@;9=g,W,j,m,->8-O'->n,m,W(X(Y(7^Z(`( _._+_@_#_$_%_Z+g@^ O+ ",
+" &_*_d#=_n+C.C.O(j=j+r+z#-_;_>_|'s$,_p>>,l,9=;,q>9-E~=>c~=>Z,h,m,`,l,n,l,r>b';,Z,Y,E~*>->=>;,=>q>W,n,&,>,|=+&y$e%c%x$d%x$b%u&N$#&n,R'->6)Q'H)'_)_!_;,@'i,s>-,#$f%#$#&>$d%P$s&$,O;#;s>k,q>c~n{'!#,n{n{6)E~&>h-.'.'j,>,S'%,q>|=N$$,V#`#+&/!.;.;=~|!T'^!={r!>^F~J!.{3{5)>~3{s>e-.;.;.;.;.;.;D=n>m,E~*>8-@'W,=,R'->O'#,g-&>'!{{I!H);>@;~_{_]_c~I)J!'!l!I!n>;,=,.' 'i,8-O;s&i,s>l,R'9-;,H)3{l!;,@'n,r>+=u&Z#$,s&f%i,l,s>m,I)c~6)5)=>=,Y,b'n%S#S##$$&t&Z#P$ '`,.'E~9=;,=>q>=,.'j, 'u>^_/_(___:_<_[_}_|_1_2_3_4_5_6_7_w#E*8_ ",
+" 9_0_(*P.l+D.H*g#u.v @a_b_c_d_e_q=f_g_9%*,n,m,->h-I!T'j,Y,I!%,u>q>u>l,-,->*,i,Q'j,8-Z,@'g,O'9- '&,j,&,S#$&.&C$c%c%G$E$O$M$N$X,8-=>n>9=6)h_i_j_R'k,s>#;P$O#@&f%$&>$c%t&u&v=u>r>h,->=,@'*>9=c~6)6);,O'Q'W,h,8-8-l,s>p>-,+&e%Q#K$;>.;.;.;i(E~#,5)P'3{V,)!>]m!^!P'T'F~1!O'+=.;.;.;.;.;.;7);>Q'|!R'j,Z,h-m,;>*>q>6)|!9=l!9-*>g,;,^!k_l_n!R'@;P'4)@;#,@;=>j,l,p>**/-+&N$$,#;l,O'H)W,n>J!4)R'q>q>n,9%N$Q$O#b%M$/-n%r>k,Q'W,=>P'9=W,9==,P$P$y$Q$O#Z#f%N$9%r>l,;,;,@'H)c~=,=,m_n_o_p_q_r_s_t_u_v_w_x_y_z_A_B_C_D_D]b& ",
+" E_3 F%Y Y T v#:+l.E% @F_G_2(H_I_J_K_L_M_m_m_`,Z,Q' '.'@;u>i,I!->&,s>*>-,u>H)s>l,b'-,r>O;-,**#$&,+=Z##$>,Q$Z##$b%e%Q$e%y$**#; '=,h-R'N_O_P_Z,k,l,>,u>s&H$g%O$T#V#E$a%Q$Z#S#&,h,b'8-;,*>q>|!Q'R'=>O'm,h,*,l,>,9%S'v=y$>$-$n;.;.;.;.;n{I!H)'!]!'!J!r!g-5)5)9-H)I)'!|!>$.;.;.;.;.;.;,]{{l!P'*>=,8-*,s>m,8-j,I!=>R'9=@;R'W,O')!Q_R_+;|!->l!|!;,I!I)Q'O' '+=$,|=/-y$P$$,+=8-h-.'@'O';,=,Y,n,-,&,P$#$$,M$f%X,*,X,>,%,h,j,Z,Y,h,h-%,$,8-i,H$O#9%$&O#O;P$p>&,h, '=,S_8-T_U_V_W_X_Y_Z_`_ :.:+:@:#:$:%:&:*:=:-: ",
+" t)J~m#$@;:9+3&>:t!f#,:Q%e ':):!:b(~:{:]:^:/:(:&,_:9=u>9%i,Y,X,-,j,X,l,6)8-X,l, '$,**|=f%e%$&c%>$.$+$ $c%e%H$P$>,>, 'b'S'8-->j,k,::<:[:.'u>p>**$,+&d%d%f%M$Q$S#H$x$.&e%y$s&n%X,.'.'i,R'q>Y,m,*>n>@;=,&,>,O;#;p>t&%$*,.;.;.;.;.;W,O'9=5)3{&>{{e~;>9-l!|!O'c~I!=>U#.;.;.;.;.;.;P~*-J!e~5)6)O'%,&,W,9%l,n>Z, 'j,g, 'i,->O'}:|:1:n,h-I!@'h,8- 'i,m,*,P$p>>,/-|=9%|=+=.'%,s>n,n,i,s>9%v=s&/-y$N$#$M$b%u&r>O;O;u>*,b'b'&,#;|=u&O#Q$t&a%.&P$y$S#2:3:X,4:5:5:6:7:8:9:0:a:b:c:G(d:e:f:g:h:H(i:j:c_k:l: ",
+" m:{@z#0+*@Y;l.n:o:x#p:q:r:s:t:u:v:w:x:y:z:A:B:s>X,-,-,$,X,&,$,|=v=S's&+=9%/-Z#n%Q$s&N$G$T#E$K$-$K$%$ $T#E$O$y$**P$%,*>h-=>C:D:]:O'k,n%N$P$b%a%T#L$I$T#/-J$C$@&S#>,#&S#O;u>9%r>b'l,s>%,u>b'Y,s>n%O;+=s&t&H$`#@,.;.;.;.;.;R'O'c~T'%~l!5)n{6)*>c~=>=,=>9=`,U#.;.;.;.;.;.;5){{n{;>n>=>R'*,9%h-+=S'R'j,r>&, 'S'O;%,|=E:F:G:+=>,8--,9%i,r>p>q> '#$Z#f%@&u&s&S#|==>u>X,m,Y,9%&,&,P$y$M$d%d%b%a%x$d%O#N$P$r>S'u>%,r>#;O;/-Q$y$#$b%G$>$G$c%{)H:B&q=I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z:`: ",
+" 8$ <6;~+B .<P%s@+<@<#<D_$<%<&<*<u:=<-<;<><,<'<)<^:s&!<D^3:/-s&#$O#f%Q$H$d%a%x$e%b%.$e%+=.&.$a% $V#a%T#c%O$@&O#N$#$**~<{<]<&,=,h-b'8-j,+&$&y$x$+$%$f%+$+$ $L$b%d%H$#&b'>,-,W,v=**%,#;s&#&/-S#N$$,>,/-d%`#H{.;.;.;.;.;W,=>O';>4)9-l!9-g,g,q>`,u>%,8-/-I$.;.;.;.;.;.;5)J!P'I)Q'=>Z,l,p>|=u&s&r>S'P$>,`,#&p>s>:-^</<u&N$s&S'|=|=n,#;#$9%b'f%**u&O$Z#+=e%M$k,S'#&%,l,P$>,n,s&$,S'O#M$s&J$H$/-e%b%Q$t&Z#u&**u&n%v=/-u&(<r>_<Y#:<<<$#[<( '@K@1(}<|<1<2<3<4<5<6<7<8<9<0<a<b<c<d< ",
+" >{1*_&h f 8+w#e<e<1+f<g<h<i<p(j<k<1(1(l<m<I/L*n<o<p<N$b'l,p>q<@&.&H$C$G$d%c%-$.$c% $Q# $+$T#N$t&+&S's&e%y$N$y$r<s<t<t&f%M$b%M$t&@&t&X,+=K$E$v=g%a%T#.$V#>$T#g%$&b%Q$|=O#t&k,O;O#>,S#@&$&S#**f%u&K$d-.;.;.;.;.;9==>=>6)9=*>=>q>h,q>g,u>p>%,*,G$t&.;.;.;.;.;i]^!V,J!J!#,O'R's>S'v=/-/-|=N$$&N$s&Q$+&#$u<v<w<O;p>b'%,P$+&|=S'$&O#t&O$J$H$c%J$O#a%.&P$S#f%-,>,f%f%$,b%d%M$O$.&S#G$x$$,y$N$#$f%O#>,#$f%O#e%J$A$x<T@!$y<=:z<A<B<*@C<D<E<D_F<G<H<I<I<J<p(K<L<t:M<N< ",
+" O<Z;q#P<w#E Q<R<S<T<U<V<W<X<Y<p:Z<s:`< [):.[m&H#+[Y%@[#[$[M$%[d% $@$#$c%.$G$+$V#C$%$+$x$C$V#Q$$&g%O#/-b%&[*[=[e%f%e%a%T#G$V#.$C$g%Q#C$+&x$H$$&M$S'n%M$Q$M$.&O$J$O$.&u&O#H$P$M$a%J$C$G$>$L$%$@,.;.;.;.;.;4)=>O';>Q'=>g,h,l,l,`,|=#& 'y$`#m!.;.;.;.;.;9-]!P'n{;>9=q>.'r>S'X,#$P$#;/-Q$M$O$O$M$b%-[;[>[T#O$u&+=t&H$s&`,u&M$b%b%.&T#L$>$C$G$x$M$a%O$+&O;H$@&$,M$b%a%.$ $>$+$I$C$c%&$,[$&$&8-p<H/'[_^H/)[r o H@!+b &@Q &.W ![~[{[][f<J<^[/[([_[:[<[[[ ",
+" }[|[} W+1[5@5@2[3[4[{[5[k>6[F_ @}[7[8[=:-_b_:@9[#]0[A%r=A%;#A$R#a%M*W&B$M*O# $%$a%V#%$L$>$V#C$E$E$a[b[c[J$s&/-+&|=$&L$ $+$Q#U#Q#%$U#U#Q#-$O$+&M$Z#u&t&s&u&a%J$y$M$x$E$T#L$G$a%C$.$G$a%n,.;.;.;.;.;L!m,6)g-I);>]!g,s>u>%,+&$&t&U#Q$.;.;.;.;.;>]J!*-g-%~#,;,m,`,v=S#M$d%H$N$e%$&Z#.&@&v=+&d[e[f[V#V#O#O#T#C$C$e%**y$J$Q$P$Z#b%Q$O$ $E$a%C$C$g%M$c%a%O#f%v=+='$0%w$L$x$c%+$N#g[,#r=h[i[j[3$k[`>!@Z/a.=.(+F o.v)t!l[3&m[F n[o[p[q[r[s[t[ ",
+" u[v[V%= 8+w[x[n[F%d.y[z[2+e#Q%A[B[&.`;k+ @}.W+m#; W=*%O@ #%#^&^&Q@w$-$.$C[D$M*M$J$M$b%L$ $D[E[@( $.&T#+$H$H$.$ $V#K$Q#T#L$%$ $Q#`#P#I$V#a%C$>$S#S#>$x$Z#Z#M$t&Q$.&b%Q$.&.$e%n%+&.;.;.;.;.;.;->q>c~=>R'R'%,X,s>8-M$E$U#E$+;.;.;.;.;_!;,3{3{I)={g-->;,Y,|=S#O#a%G$N$C$I$>$ $.$@&g%F[G[H[g%%$+&u&T#V#>$.$T#E$I$L$.&.&H$s&@&%$H$#$.&I$c%J$G$V#.$+$~&I[;$t$^#])Y%J[e_N/5'}.}.K@K[L[3[A 8+G+z M[r.A+k.!=N[B[F E%1/2@R&n [* ",
+" O[P[#]}.i;M N[w#w#C*f#2&i#Q[ ,O(R[&.l+Q o+e 9[,@_&o >@'+S[<-O@;#>#X@T[{(L$N*S'L$%$U[V[W[%$c%%$-$C$V#-$Q#+$U#X#t&a%I$.& $`#C$%$X#V#%$P#b%a%K$+$G$C$H$@&L$V#C$e%.&Q#%$c%@&R'.;.;.;.;.;.;|!#$l,h, '-,$,y$J$Q#`#s&d-.;.;.;.;_!Z,;,%~P'H)E~@;Z,j,*,u&#&r>G$ $O;V#.$E$-$Q#+$-$X[Y[Z[%$P#G$@&.$C$S#M$@&b%G$I$.$-$-$.&C$-$X&|=s=K$.$L$z$^#,#/#&#w-`[A{<#, ; }/ e,D .}l++}@}#}G.3&t!j.p.c@7.&@G %@4.)+>@b_$} ",
+" %}&}*},@)(=}2[$@P.!(P.D.t#x.N.G.O(x#f(0.%@_+f P%}.n$^ / k$_&s*-}S@3%!#t$;}>},}-$%$W&Q#V#s&>$%$E$E$P#`#T#K$X#J$Q#F$#$>$X#g%+$U#M$f%>$T#>$-$K$V#%$X#X#J$C$-$E$C$>$e%'!.;.;.;.;.;.;+;Z,e%.$P#F$P#>$P$f-.;.;.;.;.;J!n>=>g,I)g-n>E~I!@'8-X,+&e%d%V#.$b%I$T##&V#K$y$'})}!}y!X#X# $>$P#U#U#-$I$H~{(L$>*w$.$&$~}/#/#z&.^J#{}3%~(b_h@1 ]}^}l@`+&.5-j$h+h+%.9$5(z./}l=x.q@8+u 0+2[(}i;-/, <#_} ",
+" g$:}<}{@e,:@f l+Y-]=j+h+x+p.h.n.}+r.[}u v z H 8+w#4'm$!@5*;@s 9[}}|}1},#U@2} #;#3}/#U@4}I[Y#N**$`#X#A$X#`#s&+$`# $P#X#`#-$Q#b%@&Q#.$Z#+$%$U#.$%$G$P$+&x$J$Z#9=.;.;.;.;.;.;.;.;.;.;t>.;.;.;.;.;.;.;n!=,r>*,k,q>n>#,=>->q>n,8--,$&f%t& $>$g%K$Q# $X#U#G$5}6}7}8}9}+$o{o{>$I$-$p,=#f==#=#@#R@S@0}a}_&)+l<Q=Q=t*;@>@x V W X n+h+P z.x+L.m=v.G.G.+>o@b}h+%.]=P%{@;@> 9 c} ",
+" *+0 n 3.m#5@d}e}z w 9+2[o.d&i.e&c.l.s@b.v ]+L a@M f}g}h}i}j}m#[@2 h&G^V+, :#k}=#*#H:=#;#H#T&l}m}a'X#K$X#X#X#`#X#;$W>X#`#w$X#Q#-$P#X#X#+$G$>$a%s&#$`,^!c-.;.;.;.;.;.;.;.;.;.;.;.;c-^!=>b'X,-,k,Z,R'@;9=q>=,`,&,X,n%@&Q$M*+$c%R#B$%$%$U#X#n}o}p}q}r}s}t}$#u}v}w}x}m>s n h@q#q#_&_&)+V)t f .@b$p+_+]+H X x+y+k=N.i#y}v.9$]=z}h+/=l+%.f ^}!+;%A}$+ ",
+" F'O&3.r W-5*n[.@B w#k#C u >%<+o.B}S-d&#@>%P!C}D}d,T=d}E}d}F}G}Q<m <#>@3.:@3.3.3.E@R&J*H};#>#S@U@W@>#K#V@H/S@ #X@R@3%>#f,-$P#C$C$L$x$I}+&P$^_Z,c~n{)!,!i(c-7) ;&~e~#,m_#;s&l,8--,h,9-q>h-J}K}h-m_L}M}N}O}P}U&+#l}Q}R};#P@2}S}T}U}V}W}X}Y}Z}`} <W+> X+k$o :.E z g@5@3+ |8+[%r#<+o.B}S-d&#@>%P!G.]=j+m+]=d}l+F :=s[^ V+.|%}t ",
+" 2$6#U^+|5*=%~~9+I $@g&T-Y+*@x#@|z.v.5(v.y+F.~=M.G.Y-d}!(o+T=#|k+k>h+T.g&~+)+;@) ^ ~@'+_&$|o / A{m$D]r[%|R&m>&|3%M@[=g[*|=|,_-|;|]:>|6:,|'|0()|!|~|{|]|p_^|/|(|_|:|<|_|[|}|)<||{|1|2|3|4|5|6|7|8|W+9|0|a|B@D@{@~ b|c|d|e|Y d}P.i+g+.}h+5-G 0..@r@0'l.#@#@k.d&d&n.q.v g&b$Q<*@B f|9$u ;%, ^ } g|Q! ",
+" g a 4 ( {@~@;.R=b h|i|j|g+k|&.X r+f+v.x+Q[ ,g#m=x.t#F.y+q@b@E $@l|u M c+)=K+K+G K+v k#_+C D b r h@_&H@-_n m|H_n|o|0:L:p|q|r|s|t|q|u|v|w|x|y|z|A|M:B|E(z|C|[_D|t_E|F|G|H|I|J|K|L|M|N|G}7#O|P|K+;:g&F Q|R|S|T|.>D.C.O.y+x.h#t#s(e#p.b@9+C C F r#_+G J+F%S,;@>@n +|b_.|4(w# ",
+" c}U|V|W|^ X|^}h&Y|=.5-l+Q.P.#.S T.e@o+%.4+b@b@r.Z|[][+:+f.b@B}o.m/s@k.m.f#c.x#g@D r#.@E%E%Q%`|h< 1.1+1@1#1$1%1&1%1*1=1-1;1>1,1'1)1!1~1{1c:]1#1^1.:/1(1_1:1<1[1}1m=|1D.g.c@s@r.}+e.g.o.c@11h#2131r++.8+%.4151K Y+.@3+P%5*n$, B@!+p 1 6171 ",
+" T%|*811@, 2 91e, <W+2 !~z@g&H J+9+y@]+y#b.J+F%g~a.Z+0+g&p.b@}+n.c@e.f#k.1+01a1b1c1d1U:T:e1y_f1g1h1i1j1k1l1m1n1+:o1p1q1h:r1s1t1h:u13_v1w1x1y1z10@V=A1B1C1|+D1E1F1I I G1H1I1J1K1L1J@J*o 3.M1N1' O1j # ",
+" }]P1$+4 >@n ~@{@~ E@|@3.~@'+;@_&b L+k#.<v $@F%f 0+E%0+w#Q1i<j<R1S1T1U1V1W1X1Y1X1)1#1~1Z1`1 2V:.2+2Z1@1@2#2$2%2&2*2T==2-2;2m#>2,2'2)2!2~2{2]2^2/2(2_2:2<2 ",
+" ~+4.|*[2O&5 }21*|212 }2232k[`>42=<526272829202M:92a2b2m(m(y|o|c2d2e2f2g2h2i2k<j2k2l2m2n2 "};
diff --git a/src/pixmaps/menu_zoom.xcf b/src/pixmaps/menu_zoom.xcf
new file mode 100644
index 0000000..b47209b
--- /dev/null
+++ b/src/pixmaps/menu_zoom.xcf
Binary files differ
diff --git a/src/pixmaps/menu_zoom.xpm b/src/pixmaps/menu_zoom.xpm
new file mode 100644
index 0000000..9182122
--- /dev/null
+++ b/src/pixmaps/menu_zoom.xpm
@@ -0,0 +1,64 @@
+/* XPM */
+static char * menu_zoom_xpm[] = {
+"16 16 45 1",
+" c None",
+". c #303030",
+"+ c #363636",
+"@ c #2F2F2F",
+"# c #191919",
+"$ c #A29FA2",
+"% c #4A4A4A",
+"& c #EAE8EA",
+"* c #FFFFFF",
+"= c #D3D0D3",
+"- c #262626",
+"; c #989598",
+"> c #3E3E3E",
+", c #DCDCDC",
+"' c #D8D7D8",
+") c #272727",
+"! c #9A979A",
+"~ c #E5E2E5",
+"{ c #E1E0E1",
+"] c #202020",
+"^ c #171717",
+"/ c #CAC8CA",
+"( c #323232",
+"_ c #0D0D0D",
+": c #343434",
+"< c #9B989B",
+"[ c #050505",
+"} c #DFDBDF",
+"| c #E5E3E5",
+"1 c #989698",
+"2 c #030303",
+"3 c #252525",
+"4 c #9C999C",
+"5 c #969396",
+"6 c #000000",
+"7 c #DEDADE",
+"8 c #DEDBDE",
+"9 c #101010",
+"0 c #949194",
+"a c #010101",
+"b c #020202",
+"c c #959295",
+"d c #0B0B0B",
+"e c #040404",
+"f c #060606",
+" ",
+" .+@# ",
+" $%& *=-; ",
+" > ,' )! ",
+" #~ { ~] ",
+" ^ / (!",
+" _ :<",
+" [} |)1",
+" 2 345",
+" 6667**8915 ",
+" 666066ab00 ",
+" 66600 0000 ",
+" 6660c ",
+" a660c ",
+"dea00 ",
+"<f00 "};
diff --git a/src/pixmaps/mini_icon.xpm b/src/pixmaps/mini_icon.xpm
new file mode 100644
index 0000000..d14a7e7
--- /dev/null
+++ b/src/pixmaps/mini_icon.xpm
@@ -0,0 +1,31 @@
+/* XPM */
+static char * mini_icon_xpm[] = {
+"16 16 12 1",
+" c None",
+". c #000000",
+"+ c #D89C90",
+"@ c #D06458",
+"# c #843424",
+"$ c #505448",
+"% c #E0E4E0",
+"& c #9CACA4",
+"* c #D0D4C4",
+"= c #077C51",
+"- c #61A58A",
+"; c #909894",
+" ",
+" .............. ",
+" .+@@@@@@@#+@#. ",
+" .$$$$$$$$$$$$. ",
+" .%&%&%&%&%&%&. ",
+" .&*&*&=-*=-&;. ",
+" .%&*&*=-=-&*&. ",
+" .&*&*&==-&*&;. ",
+" .%=====-&*&*&. ",
+" .&*---==*&*&;. ",
+" .%&*&*=-=*&*&. ",
+" .&*&*&=--=*&;. ",
+" .%&*&*=-&-=*&. ",
+" .&;&;&;&;&;&;. ",
+" .............. ",
+" "};
diff --git a/src/pixmaps/mini_icon_plot.xcf b/src/pixmaps/mini_icon_plot.xcf
new file mode 100644
index 0000000..6e37d85
--- /dev/null
+++ b/src/pixmaps/mini_icon_plot.xcf
Binary files differ
diff --git a/src/pixmaps/mini_icon_plot.xpm b/src/pixmaps/mini_icon_plot.xpm
new file mode 100644
index 0000000..174729e
--- /dev/null
+++ b/src/pixmaps/mini_icon_plot.xpm
@@ -0,0 +1,33 @@
+/* XPM */
+static char * mini_icon_plot_xpm[] = {
+"16 16 14 1",
+" c None",
+". c #000000",
+"+ c #D89C90",
+"@ c #D06458",
+"# c #843424",
+"$ c #505448",
+"% c #E0E4E0",
+"& c #9CACA4",
+"* c #D0D4C4",
+"= c #686868",
+"- c #909894",
+"; c #D14B12",
+"> c #964537",
+", c #EF825B",
+" ",
+" .............. ",
+" .+@@@@@@@#+@#. ",
+" .$$$$$$$$$$$$. ",
+" .%&%&%&%&%&%&. ",
+" .&*&*=*&*&*&-. ",
+" .%&*;>,*&*&;&. ",
+" .&*;,>;,*&*;-. ",
+" .%;,&=&;&*;,&. ",
+" .&;&*=*;,&;,-. ",
+" .%======>>>=&. ",
+" .&*&*=*&;&;&-. ",
+" .%&*&=&*,;&*&. ",
+" .&-&-&-&-&-&-. ",
+" .............. ",
+" "};
diff --git a/src/pixmaps/plot.xpm b/src/pixmaps/plot.xpm
new file mode 100644
index 0000000..7aba933
--- /dev/null
+++ b/src/pixmaps/plot.xpm
@@ -0,0 +1,72 @@
+/* XPM */
+static char * plot_xpm[] = {
+"16 16 53 1",
+" c None",
+". c #1E1E1E",
+"+ c #272727",
+"@ c #2E2E2E",
+"# c #932F3D",
+"$ c #993242",
+"% c #A33142",
+"& c #962E3D",
+"* c #70232E",
+"= c #932F3F",
+"- c #A23243",
+"; c #292929",
+"> c #7F2836",
+", c #922F3E",
+"' c #9F3040",
+") c #963141",
+"! c #2C2C2C",
+"~ c #9D3243",
+"{ c #6D232F",
+"] c #933040",
+"^ c #8A2D3B",
+"/ c #952D3C",
+"( c #1E1D1D",
+"_ c #9B3444",
+": c #AF3547",
+"< c #491D23",
+"[ c #932C3B",
+"} c #2B2B2B",
+"| c #2D2D2D",
+"1 c #333333",
+"2 c #2A2A2A",
+"3 c #2C2B2B",
+"4 c #552930",
+"5 c #8A313E",
+"6 c #872A38",
+"7 c #9F3141",
+"8 c #813944",
+"9 c #AE384A",
+"0 c #571D26",
+"a c #9E3948",
+"b c #3E2D2F",
+"c c #94303F",
+"d c #7D2532",
+"e c #5D2A32",
+"f c #641E29",
+"g c #8E2B3A",
+"h c #AE3A4B",
+"i c #AC3445",
+"j c #6B2F38",
+"k c #A53445",
+"l c #A13141",
+"m c #63212B",
+"n c #6A212C",
+" . ",
+" + ",
+" @ ",
+" #$% . &",
+" *= - ; >,",
+" ' ) ! ~ ",
+"{] ^/ ( _ ",
+":< [ } ] ",
+"_|;1!2_}}1231451",
+"6 78. 90 ",
+" ab c ",
+" de fg ",
+" h i ",
+" jk_l ",
+" +mn ",
+" . "};
diff --git a/src/pixmaps/tool_arrow.xpm b/src/pixmaps/tool_arrow.xpm
new file mode 100644
index 0000000..e58a43a
--- /dev/null
+++ b/src/pixmaps/tool_arrow.xpm
@@ -0,0 +1,26 @@
+/* XPM */
+static char * tool_arrow_xpm[] = {
+"16 20 3 1",
+" c None",
+". c #000000",
+"+ c #FFFFFF",
+" ",
+" . ",
+" .. ",
+" ... ",
+" .... ",
+" ..... ",
+" ...... ",
+" ....... ",
+" ........ ",
+" ..... ",
+" .. .. ",
+" . .. ",
+" .. ",
+" .. ",
+" .. ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/src/pixmaps/tool_text.xpm b/src/pixmaps/tool_text.xpm
new file mode 100644
index 0000000..9f2aaa7
--- /dev/null
+++ b/src/pixmaps/tool_text.xpm
@@ -0,0 +1,27 @@
+/* XPM */
+static char *tool_text_xpm [] = {
+"20 20 3 1",
+". c None",
+"a c #000000",
+"e c #777777",
+ "....................",
+ "....................",
+ "....................",
+ "....aaaaaaaaaaa.....",
+ "....aaeeaaaeeaae....",
+ "....aee.aaae..ae....",
+ ".....e..aaae...e....",
+ ".......eaae.........",
+ ".......eaae.........",
+ ".......eaae.........",
+ ".......aaae.........",
+ ".......aae..........",
+ "......eaae..........",
+ "......eaae..........",
+ "......aaae..........",
+ ".....aaaaa..........",
+ "......eeeee.........",
+ "....................",
+ "....................",
+ "...................."
+};
diff --git a/src/pixmaps/tool_wire.xpm b/src/pixmaps/tool_wire.xpm
new file mode 100644
index 0000000..a843587
--- /dev/null
+++ b/src/pixmaps/tool_wire.xpm
@@ -0,0 +1,36 @@
+/* XPM */
+static char * tool_wire_xpm[] = {
+"24 21 12 1",
+" c None",
+". c #000000",
+"+ c #DCCB94",
+"@ c #8E7D45",
+"# c #0736F2",
+"$ c #D4C38D",
+"% c #AD8E30",
+"& c #756020",
+"* c #C5C5BF",
+"= c #A7A79A",
+"- c #060605",
+"; c #A3A395",
+" . ",
+" .+. ",
+" .+@. ",
+" .+@. ",
+" .+@. ",
+" ########## .+@. ",
+" # .+@. ",
+" # .+@. ",
+" # .+@. ",
+" # .$@. ",
+" #%&..*==== ",
+" #-.;;==== ",
+" # ",
+" # ",
+" # ",
+" # ",
+" # ",
+" # ",
+" # ",
+" # ",
+" ############# "};
diff --git a/src/plot-add-function.c b/src/plot-add-function.c
new file mode 100644
index 0000000..478595d
--- /dev/null
+++ b/src/plot-add-function.c
@@ -0,0 +1,126 @@
+/*
+ * plot-add-function.c
+ *
+ *
+ * Authors:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+
+#include "plot-add-function.h"
+
+int plot_add_function_show (OreganoEngine *engine, SimulationData *current)
+{
+ GladeXML *gui;
+ GtkDialog *dialog, * warning;
+ gchar *msg;
+ GtkComboBox *op1, *op2, *functiontype;
+ GtkListStore *model1, *model2;
+ GList *analysis = NULL;
+ int i;
+ gint result = 0;
+ GError *gerror = NULL;
+
+ SimulationFunction *func = g_new0 (SimulationFunction, 1);
+
+ if (!g_file_test (OREGANO_GLADEDIR "/plot-add-function.glade",
+ G_FILE_TEST_EXISTS)) {
+ msg = g_strdup_printf (
+ _("The file %s could not be found. You might need to reinstall Oregano to fix this"),
+ OREGANO_GLADEDIR "/plot-add-function.glade");
+ oregano_error_with_title (_("Could not create plot window"), msg);
+ g_free (msg);
+ return 0;
+ }
+
+ gui = glade_xml_new (OREGANO_GLADEDIR "/plot-add-function.glade", NULL, NULL);
+ if (!gui) {
+ oregano_error (_("Could not create plot window"));
+ return 0;
+ }
+
+ dialog = GTK_DIALOG (glade_xml_get_widget (gui, "toplevel"));
+ op1 = GTK_COMBO_BOX (glade_xml_get_widget (gui, "op1"));
+ op2 = GTK_COMBO_BOX (glade_xml_get_widget (gui, "op2"));
+ functiontype = GTK_COMBO_BOX (glade_xml_get_widget (gui, "functiontype"));
+
+ model1 = GTK_LIST_STORE (gtk_combo_box_get_model (op1));
+ model2 = GTK_LIST_STORE (gtk_combo_box_get_model (op2));
+
+ gtk_list_store_clear (model1);
+ gtk_list_store_clear (model2);
+
+ for (i = 1; i < current->n_variables; i++) {
+ if (current->type != DC_TRANSFER) {
+ if (strchr(current->var_names[i], '#') == NULL) {
+ gtk_combo_box_append_text (op1, current->var_names[i]);
+ gtk_combo_box_append_text (op2, current->var_names[i]);
+ }
+ } else {
+ gtk_combo_box_append_text (op1, current->var_names[i]);
+ gtk_combo_box_append_text (op2, current->var_names[i]);
+ }
+ }
+
+ result = gtk_dialog_run (GTK_DIALOG (dialog));
+
+ if ((result == GTK_RESPONSE_OK) &&
+ ((gtk_combo_box_get_active (op1) == -1) ||
+ (gtk_combo_box_get_active (op2) == -1) ||
+ (gtk_combo_box_get_active (functiontype) == -1)))
+ {
+ warning = gtk_message_dialog_new_with_markup (
+ NULL,
+ GTK_DIALOG_MODAL,
+ GTK_MESSAGE_WARNING,
+ GTK_BUTTONS_OK,
+ ("<span weight=\"bold\" size=\"large\">Neither function, nor operators have been chosen</span>\n\n"
+ "Please, take care to choose a function and their associated operators"));
+
+ if (gtk_dialog_run (GTK_DIALOG (warning)) == GTK_RESPONSE_OK) {
+ gtk_widget_destroy (GTK_WIDGET (warning));
+ plot_add_function_show (engine, current);
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+ return;
+ }
+ }
+ if ((result == GTK_RESPONSE_OK) &&
+ ((gtk_combo_box_get_active (op1) != -1) &&
+ (gtk_combo_box_get_active (op2) != -1) &&
+ (gtk_combo_box_get_active (functiontype) != -1))) {
+
+ for (i = 1; i < current->n_variables; i++) {
+ if (strcmp (current->var_names[i], gtk_combo_box_get_active_text (op1)) == 0)
+ func->first = i;
+ if (strcmp (current->var_names[i], gtk_combo_box_get_active_text (op2)) == 0)
+ func->second = i;
+ }
+ current->functions = g_list_append (current->functions, func);
+ }
+
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+}
+
diff --git a/src/plot-add-function.h b/src/plot-add-function.h
new file mode 100644
index 0000000..72b5663
--- /dev/null
+++ b/src/plot-add-function.h
@@ -0,0 +1,38 @@
+/*
+ * plot-add-function.h
+ *
+ *
+ * Author:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __PLOT_ADD__H
+#define __PLOT_ADD_H
+
+#include "simulation.h"
+#include "engine.h"
+#include "dialogs.h"
+
+int plot_add_function_show (OreganoEngine *engine, SimulationData *current);
+
+#endif
+
diff --git a/src/plot.c b/src/plot.c
new file mode 100644
index 0000000..a57fe5c
--- /dev/null
+++ b/src/plot.c
@@ -0,0 +1,753 @@
+/*
+ * plot.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <math.h>
+#include <string.h>
+
+#include "file.h"
+#include "main.h"
+#include "schematic.h"
+#include "dialogs.h"
+#include "plot.h"
+#include "smallicon.h"
+
+#include "gplot.h"
+#include "gplotfunction.h"
+#include "gplotlines.h"
+#include "plot-add-function.h"
+
+#define PLOT_PADDING_X 50
+#define PLOT_PADDING_Y 40
+#define PLOT_WIDTH 400
+#define PLOT_HEIGHT 300
+#define DEBUG_PLOT 0
+
+#define GET_Y_POINT(y_val,y_min,factor) \
+ (PLOT_HEIGHT-((y_val)-(y_min))*(factor))
+#define GET_Y_VALUE(y_point,y_min,factor) \
+ ((y_min)+(PLOT_HEIGHT-(y_point))/(factor))
+#define GET_X_POINT(x_val,x_min,factor) (((x_val)-(x_min))*(factor))
+#define GET_X_VALUE(x_point,x_min,factor) ((x_min)+(x_point)/(factor))
+
+const gchar *TITLE_FONT = N_("Sans 10");
+const gchar *AXIS_FONT = N_("Sans 10");
+const gchar *UPSCRIPT_FONT = N_("Sans 8");
+
+#define PLOT_AXIS_COLOR "black"
+#define PLOT_CURVE_COLOR "medium sea green"
+
+static guint next_color = 0;
+static guint n_curve_colors = 7;
+static char *plot_curve_colors[] = {
+ "white",
+ "green",
+ "red",
+ "yellow",
+ "cyan",
+ "pink",
+ "orange1",
+ 0
+};
+
+/* Hack! */
+#ifndef G_FUNC
+#define G_FUNC(x) (x)
+#endif
+
+typedef struct {
+ GtkWidget *window;
+ GtkWidget *canvas;
+ GtkWidget *coord; /* shows the coordinates of the mose */
+ GtkWidget *combobox;
+
+ GtkWidget *plot;
+
+ gboolean show_cursor;
+
+ OreganoEngine *sim;
+ SimulationData *current;
+
+ gboolean logx;
+ gboolean logy;
+
+ gchar *title;
+ gchar *xtitle;
+ gchar *ytitle;
+
+ gint width; /* width of the plot, excluding */
+ gint height; /* axes, titles and padding etc */
+
+ gdouble plot_min, plot_max;
+ gdouble x_min,x_max;
+
+ gdouble padding_x; /* padding around the plot. Note that */
+ gdouble padding_y; /* titles, axes etc live here */
+
+ gint selected; /* the currently selected plot in the clist */
+ gint prev_selected;
+} Plot;
+
+typedef enum {
+ X_AXIS,
+ Y_AXIS
+} AxisType;
+
+static GtkWidget *plot_window_create (Plot *plot);
+static void destroy_window (GtkWidget *widget, Plot *plot);
+static void zoom_100 (GtkWidget *widget, Plot *plot);
+static void zoom_region (GtkWidget *widget, Plot *plot);
+static void zoom_pan (GtkWidget *widget, Plot *plot);
+static gint delete_event_cb (GtkWidget *widget, GdkEvent *event, Plot *plot);
+static void plot_canvas_movement(GtkWidget *, GdkEventMotion *, Plot *);
+
+static void plot_toggle_cross (GtkWidget *widget, Plot *plot);
+static void plot_export (GtkWidget *widget, Plot *plot);
+static void add_function (GtkWidget *widget, Plot *plot);
+
+static const char *_plot_file_menu =
+"<ui>"
+" <popup name='plotMenu'>"
+" <menuitem action='Add-Function'/>"
+" <separator/>"
+" <menuitem action='Close'/>"
+" </popup>"
+"</ui>";
+
+static GnomeUIInfo plot_file_menu[] =
+{
+ GNOMEUIINFO_ITEM_NONE(N_("Add Function"),
+ N_("Add new function to the graph"), add_function),
+ GNOMEUIINFO_SEPARATOR,
+ GNOMEUIINFO_MENU_CLOSE_ITEM(destroy_window,NULL),
+ GNOMEUIINFO_END
+};
+
+static GnomeUIInfo plot_zoom_menu [] = {
+ { GNOME_APP_UI_ITEM, N_("100%"),
+ N_("Set the zoom factor to 100%"), NULL, NULL, NULL, 0,
+ 0, '2', 0 },
+ GNOMEUIINFO_END
+};
+
+static GnomeUIInfo plot_plot_menu [] = {
+ {GNOME_APP_UI_ITEM, N_("_Preferences..."), NULL, NULL, NULL, NULL,
+ GNOME_APP_PIXMAP_STOCK, GTK_STOCK_PREFERENCES, 0, 0 },
+ GNOMEUIINFO_TOGGLEITEM (N_("Show crosshairs"), "show or hide crosshairs", plot_toggle_cross, NULL),
+ GNOMEUIINFO_SUBTREE(N_("_Zoom"), plot_zoom_menu),
+ GNOMEUIINFO_END
+};
+
+static GnomeUIInfo plot_help_menu[] =
+{
+ GNOMEUIINFO_HELP(N_("Schematic Plot")),
+ GNOMEUIINFO_END
+};
+
+GnomeUIInfo plot_main_menu[] = {
+ GNOMEUIINFO_SUBTREE(N_("_File"), plot_file_menu),
+ GNOMEUIINFO_END
+};
+
+static gchar *
+get_variable_units (gchar *str)
+{
+gchar *tmp;
+
+ if (str == NULL)
+ return g_strdup ("##");
+
+ if (!strcmp (str, "voltage")) {
+ tmp = g_strdup ("Volt");
+ } else if (!strcmp (str, "db") ) {
+ tmp = g_strdup ("db");
+ } else if (!strcmp (str, "time") ) {
+ tmp = g_strdup ("s");
+ } else if (!strcmp (str, "frequency") ) {
+ tmp = g_strdup ("Hz");
+ } else if (!strcmp (str, "current") ) {
+ tmp = g_strdup ("A");
+ } else {
+ tmp = g_strdup ("##");
+ }
+ return tmp;
+}
+
+static gint
+delete_event_cb (GtkWidget *widget, GdkEvent *event, Plot *plot)
+{
+ plot->window = NULL;
+ g_object_unref (plot->sim);
+ if (plot->ytitle) g_free(plot->ytitle);
+ g_free(plot);
+ plot = NULL;
+ return FALSE; /* yes, please destroy me */
+}
+
+/* Call this to close the plot window */
+static void
+destroy_window(GtkWidget *widget, Plot *plot)
+{
+ /* TODO - chequear si no hay que destruir el combo box */
+ gtk_widget_destroy (plot->window);
+ g_object_unref (plot->sim);
+ plot->window = NULL;
+ if (plot->title) g_free (plot->title);
+ g_free (plot);
+ plot = NULL;
+}
+
+static void
+on_plot_selected (GtkCellRendererToggle *cell_renderer, gchar *path, Plot *plot)
+{
+ GPlotFunction *f;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ GtkTreeView *treeview;
+ gboolean activo;
+
+ treeview = GTK_TREE_VIEW(g_object_get_data(G_OBJECT(plot->window), "clist"));
+
+ model = gtk_tree_view_get_model (treeview);
+ if (!gtk_tree_model_get_iter_from_string (model , &iter, path))
+ return;
+
+ gtk_tree_model_get (model, &iter, 0, &activo, 4, &f, -1);
+ activo = !activo;
+ gtk_tree_store_set (GTK_TREE_STORE (model), &iter, 0, activo, -1);
+
+ g_object_set (G_OBJECT (f), "visible", activo, NULL);
+
+ gtk_widget_queue_draw (plot->plot);
+}
+
+static GPlotFunction*
+create_plot_function_from_simulation_data (guint i, SimulationData *current)
+{
+ GPlotFunction *f;
+ double *X;
+ double *Y;
+ double data;
+ guint len, j;
+
+ len = current->data[i]->len;
+ X = g_new0 (double, len);
+ Y = g_new0 (double, len);
+
+ for (j = 0; j < len; j++) {
+ Y[j] = g_array_index (current->data[i], double, j);
+
+ data = g_array_index (current->data[0], double, j);
+
+ /*if (plot->logx)
+ data = log10 (data);
+ */
+ X[j] = data;
+ }
+
+ f = g_plot_lines_new (X, Y, len);
+ g_object_set (G_OBJECT (f), "color", plot_curve_colors[(next_color++)%n_curve_colors], NULL);
+
+ return f;
+}
+
+static void
+analysis_selected (GtkEditable *editable, Plot *plot)
+{
+ int i;
+ const gchar *ca;
+ GtkWidget *entry;
+ GtkTreeView *list;
+ GtkTreeModel *model;
+ GtkTreeIter parent_nodes, parent_functions;
+ GList *analysis;
+ SimulationData *sdat;
+
+ list = GTK_TREE_VIEW (g_object_get_data (G_OBJECT (plot->window), "clist"));
+ entry = GTK_COMBO (plot->combobox)->entry;
+
+ ca = gtk_entry_get_text (GTK_ENTRY (entry));
+
+ plot->current = NULL;
+ analysis = oregano_engine_get_results (plot->sim);
+ for (; analysis; analysis = analysis->next) {
+ sdat = SIM_DATA (analysis->data);
+ if (!strcmp (ca, oregano_engine_get_analysis_name (sdat))) {
+ plot->current = sdat;
+ break;
+ }
+ }
+
+ if (plot->current == NULL) {
+ /* Simulation failed? */
+ g_warning (_("The simulation produced no data!!\n"));
+ return;
+ }
+
+ g_free (plot->xtitle);
+ plot->xtitle = get_variable_units (plot->current->var_units[0]);
+ g_free (plot->ytitle);
+ plot->ytitle = get_variable_units (plot->current->var_units[1]);
+
+ g_free (plot->title);
+ plot->title = g_strdup_printf (_("Plot - %s"),
+ oregano_engine_get_analysis_name (plot->current));
+
+ /* Set the variable names in the list */
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (list));
+ gtk_tree_store_clear (GTK_TREE_STORE (model));
+
+ /* Create root nodes */
+ gtk_tree_store_append (GTK_TREE_STORE (model), &parent_nodes, NULL);
+ gtk_tree_store_set (GTK_TREE_STORE (model), &parent_nodes, 0, FALSE, 1, _("Nodes"), 2, FALSE, 3, "white", -1);
+
+ gtk_tree_store_append (GTK_TREE_STORE (model), &parent_functions, NULL);
+ gtk_tree_store_set (GTK_TREE_STORE (model), &parent_functions, 0, NULL, 1, _("Functions"), 2, FALSE, 3, "white", -1);
+
+ g_plot_set_axis_labels (GPLOT (plot->plot), plot->xtitle, plot->ytitle);
+ g_plot_clear (GPLOT (plot->plot));
+
+ for (i = 1; i < plot->current->n_variables; i++) {
+ GtkTreeIter iter;
+ GPlotFunction *f;
+
+ if (plot->current->type != DC_TRANSFER) {
+ if (strchr(plot->current->var_names[i], '#') == NULL) {
+ gchar *color;
+
+ f = create_plot_function_from_simulation_data (i, plot->current);
+ g_object_set (G_OBJECT (f), "visible", FALSE, NULL);
+ g_object_get (G_OBJECT (f), "color", &color, NULL);
+
+ g_plot_add_function (GPLOT (plot->plot), f);
+ gtk_tree_store_append (GTK_TREE_STORE (model), &iter, &parent_nodes);
+ gtk_tree_store_set (GTK_TREE_STORE (model),
+ &iter,
+ 0, FALSE,
+ 1, plot->current->var_names[i],
+ 2, TRUE,
+ 3, color,
+ 4, f,
+ -1);
+ }
+ } else {
+ gchar *color;
+
+ f = create_plot_function_from_simulation_data (i, plot->current);
+ g_object_set (G_OBJECT (f), "visible", FALSE, NULL);
+ g_object_get (G_OBJECT (f), "color", &color, NULL);
+
+ g_plot_add_function (GPLOT (plot->plot), f);
+ gtk_tree_store_append (GTK_TREE_STORE (model), &iter, &parent_nodes);
+ gtk_tree_store_set (GTK_TREE_STORE (model), &iter,
+ 0, FALSE,
+ 1, plot->current->var_names[i],
+ 2, TRUE,
+ 3, color,
+ 4, f,
+ -1);
+ }
+ }
+
+ gtk_widget_queue_draw (plot->plot);
+}
+
+static void
+plot_canvas_movement (GtkWidget *w, GdkEventMotion *event, Plot *plot)
+{
+ gchar *coord;
+ gdouble x,y;
+
+ x = event->x;
+ y = event->y;
+
+ g_plot_window_to_device (GPLOT (plot->plot), &x, &y);
+
+ coord = g_strdup_printf ("(%g, %g)", x, y);
+
+ gtk_entry_set_text (GTK_ENTRY (plot->coord), coord);
+
+ g_free (coord);
+}
+
+static GtkWidget *
+plot_window_create (Plot *plot)
+{
+ GtkTreeView *list;
+ GtkTreeStore *tree_model;
+ GtkCellRenderer *cell;
+ GtkTreeViewColumn *column;
+
+ GtkWidget *outer_table, *window, *button, *plot_scrolled;
+ GladeXML *gui;
+ gchar *msg;
+
+ window = gnome_app_new("plot", _("Oregano - Plot"));
+
+ gnome_app_create_menus_with_data (GNOME_APP (window), plot_main_menu, plot);
+
+ g_signal_connect (G_OBJECT (window), "delete_event",
+ G_CALLBACK (delete_event_cb), plot);
+
+ if (!g_file_test (OREGANO_GLADEDIR "/plot-window.glade",
+ G_FILE_TEST_EXISTS)) {
+ msg = g_strdup_printf (
+ _("The file %s could not be found. You might need to reinstall Oregano to fix this."),
+ OREGANO_GLADEDIR "/plot-window.glade");
+ oregano_error_with_title (_("Could not create plot window."), msg);
+ g_free (msg);
+ return NULL;
+ }
+
+ gui = glade_xml_new (OREGANO_GLADEDIR "/plot-window.glade", NULL, NULL);
+ if (!gui) {
+ oregano_error (_("Could not create plot window."));
+ return NULL;
+ }
+
+ outer_table = glade_xml_get_widget (gui, "plot_table");
+ plot_scrolled = plot->canvas = glade_xml_get_widget (gui, "plot_scrolled");
+ plot->coord = glade_xml_get_widget(gui, "pos_label");
+
+ plot->plot = g_plot_new ();
+
+ gtk_widget_set_size_request (plot->plot, 600, 400);
+ gtk_container_add (GTK_CONTAINER (plot_scrolled), plot->plot);
+
+ g_signal_connect(G_OBJECT (plot->plot),
+ "motion_notify_event",
+ G_CALLBACK(plot_canvas_movement), plot
+ );
+
+ g_object_ref(outer_table);
+ gtk_widget_unparent(outer_table);
+ gnome_app_set_contents(GNOME_APP(window), outer_table);
+
+ button = glade_xml_get_widget (gui, "close_button");
+ g_signal_connect(G_OBJECT(button), "clicked",
+ G_CALLBACK(destroy_window), plot);
+
+ button = glade_xml_get_widget (gui, "zoom_panning");
+ g_signal_connect(G_OBJECT(button), "clicked",
+ G_CALLBACK(zoom_pan), plot);
+
+ button = glade_xml_get_widget (gui, "zoom_region");
+ g_signal_connect(G_OBJECT(button), "clicked",
+ G_CALLBACK(zoom_region), plot);
+
+ button = glade_xml_get_widget (gui, "zoom_normal");
+ g_signal_connect(G_OBJECT(button), "clicked",
+ G_CALLBACK(zoom_100), plot);
+
+ list = GTK_TREE_VIEW(glade_xml_get_widget (gui, "variable_list"));
+ tree_model = gtk_tree_store_new (5, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_POINTER);
+
+ /* One Column with 2 CellRenderer. First the Toggle and next a Text */
+ column = gtk_tree_view_column_new ();
+
+ cell = gtk_cell_renderer_toggle_new ();
+ g_signal_connect (G_OBJECT (cell), "toggled", G_CALLBACK (on_plot_selected), plot);
+ gtk_tree_view_column_pack_start (column, cell, FALSE);
+ gtk_tree_view_column_set_attributes (column, cell, "active", 0, "visible", 2, NULL);
+
+ cell = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start (column, cell, TRUE);
+ gtk_tree_view_column_set_attributes (column, cell, "text", 1, NULL);
+
+ cell = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start (column, cell, FALSE);
+ gtk_cell_renderer_set_fixed_size (cell, 20, 20);
+ gtk_tree_view_column_set_attributes (column, cell, "background", 3, NULL);
+
+ gtk_tree_view_append_column(list, column);
+ gtk_tree_view_set_model(list, GTK_TREE_MODEL(tree_model));
+
+ g_object_set_data (G_OBJECT(window), "clist", list);
+
+ gtk_widget_realize(GTK_WIDGET(window));
+
+ plot->combobox = glade_xml_get_widget (gui, "analysis_combo");
+ plot->window = window;
+ gtk_widget_show_all(window);
+
+ return window;
+}
+
+int
+plot_show (OreganoEngine *engine)
+{
+ GtkEntry *entry;
+ GtkTreeView *list;
+ GList *analysis = NULL;
+ GList *combo_items = NULL;
+ Plot *plot;
+ gchar *s_current = NULL;
+ SimulationData *first = NULL;
+
+ g_return_val_if_fail (engine != NULL, FALSE);
+
+ plot = g_new0(Plot, 1);
+
+ g_object_ref (engine);
+ plot->sim = engine;
+ plot->window = plot_window_create(plot);
+
+ plot->logx = FALSE;
+ plot->logy = FALSE;
+
+ plot->padding_x = PLOT_PADDING_X;
+ plot->padding_y = PLOT_PADDING_Y;
+
+ plot->show_cursor = TRUE;
+
+ next_color = 0;
+
+ /* Get the analysis we have */
+ analysis = oregano_engine_get_results (engine);
+ for (; analysis ; analysis = analysis->next) {
+ SimulationData *sdat = SIM_DATA (analysis->data);
+ gchar *str = oregano_engine_get_analysis_name (sdat);
+ if (sdat->type == OP_POINT) {
+ continue;
+ }
+ if (s_current == NULL) {
+ s_current = str;
+ first = sdat;
+ }
+ combo_items = g_list_append (combo_items, str);
+ }
+
+ gtk_combo_set_popdown_strings (GTK_COMBO (plot->combobox), combo_items);
+
+ entry = GTK_ENTRY (GTK_COMBO (plot->combobox)->entry);
+ g_signal_connect (G_OBJECT (entry), "changed",
+ G_CALLBACK (analysis_selected), plot);
+
+ gtk_entry_set_text (GTK_ENTRY (entry), s_current ? s_current : "?");
+
+ list = GTK_TREE_VIEW (g_object_get_data (G_OBJECT (plot->window), "clist"));
+
+ plot->title = g_strdup_printf (_("Plot - %s"), s_current);
+ plot->xtitle = get_variable_units (first ? first->var_units[0] : "##");
+ plot->ytitle = get_variable_units (first ? first->var_units[1] : "!!");
+
+ g_free (s_current);
+
+ analysis_selected (GTK_EDITABLE (entry), plot);
+
+ return TRUE;
+}
+
+static void
+plot_toggle_cross (GtkWidget *widget, Plot *plot)
+{
+ plot->show_cursor = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget));
+}
+
+static GPlotFunction*
+create_plot_function_from_data (SimulationFunction *func, SimulationData *current)
+{
+ GPlotFunction *f;
+ double *X;
+ double *Y;
+ double data;
+ guint j, len;
+
+ len = current->data[func->first]->len;
+ X = g_new0 (double, len);
+ Y = g_new0 (double, len);
+
+ for (j = 0; j < len; j++) {
+ Y[j] = g_array_index (current->data[func->first], double, j);
+
+ data = g_array_index (current->data[func->second], double, j);
+ switch (func->type) {
+ case FUNCTION_MINUS:
+ Y[j] -= data;
+ break;
+ case FUNCTION_TRANSFER:
+ if (data < 0.000001f) {
+ if (Y[j] < 0)
+ Y[j] = -G_MAXDOUBLE;
+ else
+ Y[j] = G_MAXDOUBLE;
+ } else {
+ Y[j] /= data;
+ }
+ }
+
+ X[j] = g_array_index (current->data[0], double, j);
+ }
+
+ f = g_plot_lines_new (X, Y, len);
+ g_object_set (G_OBJECT (f), "color", plot_curve_colors[(next_color++)%n_curve_colors], NULL);
+
+ return f;
+}
+
+static void
+add_function (GtkWidget *widget, Plot *plot)
+{
+ GtkTreeView *tree;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ GtkTreePath *path;
+ GList *lst;
+ gchar *color;
+
+ plot_add_function_show (plot->sim, plot->current);
+
+ tree = GTK_TREE_VIEW(g_object_get_data(G_OBJECT (plot->window), "clist"));
+ model = gtk_tree_view_get_model (tree);
+
+ path = gtk_tree_path_new_from_string ("1");
+ gtk_tree_model_get_iter (model, &iter, path);
+ gtk_tree_path_free (path);
+
+ gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
+
+ gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL);
+ gtk_tree_store_set(GTK_TREE_STORE(model), &iter, 0, FALSE, 1, _("Functions"), 2, FALSE, 3, "white", -1);
+
+ lst = plot->current->functions;
+ while (lst) {
+ GPlotFunction *f;
+ GtkTreeIter child;
+ int i;
+ gchar *str, *name1, *name2;
+ SimulationFunction *func = (SimulationFunction *)lst->data;
+
+ for (i = 1; i < plot->current->n_variables; i++) {
+ if (func->first == i) {
+ name1 = g_strdup (plot->current->var_names[i]);
+ }
+ if (func->second == i) {
+ name2 = g_strdup (plot->current->var_names[i]);
+ }
+ }
+ switch (func->type) {
+ case FUNCTION_MINUS:
+ str = g_strdup_printf ("%s - %s", name1, name2);
+ break;
+ case FUNCTION_TRANSFER:
+ str = g_strdup_printf ("%s(%s, %s)", _("TRANSFER"), name1, name2);
+ }
+
+ f = create_plot_function_from_data (func, plot->current);
+ g_object_get (G_OBJECT (f), "color", &color, NULL);
+
+ g_plot_add_function (GPLOT (plot->plot), f);
+
+ gtk_tree_store_append(GTK_TREE_STORE(model), &child, &iter);
+ gtk_tree_store_set(GTK_TREE_STORE(model), &child, 0, TRUE, 1, str, 2, TRUE, 3, color, 4, f, -1);
+
+ lst = lst->next;
+ }
+
+
+ gtk_widget_queue_draw (plot->plot);
+}
+
+static void
+plot_export (GtkWidget *widget, Plot *plot)
+{
+ gchar *fn = NULL;
+ gint w, h, format;
+ GladeXML *gui;
+ gchar *msg;
+ GtkWidget *window;
+ GtkRadioButton *export_png, *export_ps;
+ GtkSpinButton *width, *height;
+ GError *gerror=NULL;
+ guint error;
+
+ if (!g_file_test (OREGANO_GLADEDIR "/plot-export.glade", G_FILE_TEST_EXISTS)) {
+ msg = g_strdup_printf (
+ _("The file %s could not be found. You might need to reinstall Oregano to fix this."),
+ OREGANO_GLADEDIR "/plot-export.glade");
+ oregano_error_with_title (_("Could not create plot export window."), msg);
+ g_free (msg);
+ return;
+ }
+
+ gui = glade_xml_new (OREGANO_GLADEDIR "/plot-export.glade", NULL, NULL);
+ if (!gui) {
+ oregano_error (_("Could not create plot export window."));
+ return;
+ }
+
+ window = glade_xml_get_widget (gui, "plot_export");
+ export_png = GTK_RADIO_BUTTON (glade_xml_get_widget (gui, "radio_png"));
+ export_ps = GTK_RADIO_BUTTON (glade_xml_get_widget (gui, "radio_ps"));
+ width = GTK_SPIN_BUTTON (glade_xml_get_widget (gui, "export_width"));
+ height = GTK_SPIN_BUTTON (glade_xml_get_widget (gui, "export_height"));
+
+ if ((gtk_dialog_run (GTK_DIALOG (window)) != GTK_RESPONSE_ACCEPT)) {
+ gtk_widget_destroy (window);
+ return;
+ }
+
+ format = 0;
+ /*if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (export_png)))
+ format = GTK_CAIRO_PLOT_VIEW_SAVE_PNG;
+ else
+ format = GTK_CAIRO_PLOT_VIEW_SAVE_PS;*/
+
+ fn = dialog_file_open (_("Save PNG"));
+ if (fn == NULL) {
+ gtk_widget_destroy (window);
+ return;
+ }
+
+ w = gtk_spin_button_get_value_as_int (width);
+ h = gtk_spin_button_get_value_as_int (height);
+
+ gtk_widget_destroy (window);
+}
+
+static void
+zoom_100 (GtkWidget *widget, Plot *plot)
+{
+ g_plot_reset_zoom (GPLOT (plot->plot));
+}
+
+static void
+zoom_region (GtkWidget *widget, Plot *plot)
+{
+ g_plot_set_zoom_mode (GPLOT (plot->plot), GPLOT_ZOOM_REGION);
+}
+
+static void
+zoom_pan (GtkWidget *widget, Plot *plot)
+{
+ g_plot_set_zoom_mode (GPLOT (plot->plot), GPLOT_ZOOM_INOUT);
+}
+
diff --git a/src/plot.h b/src/plot.h
new file mode 100644
index 0000000..033e806
--- /dev/null
+++ b/src/plot.h
@@ -0,0 +1,37 @@
+/*
+ * plot.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __PLOT_H
+#define __PLOT_H
+
+#include "engine.h"
+
+int plot_show (OreganoEngine *engine);
+
+#endif
diff --git a/src/save-schematic.c b/src/save-schematic.c
new file mode 100644
index 0000000..f380aa5
--- /dev/null
+++ b/src/save-schematic.c
@@ -0,0 +1,561 @@
+/*
+ * save-schematic.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <gnome.h>
+#include <math.h>
+#include "xml-compat.h"
+#include "main.h"
+#include "schematic.h"
+#include "sheet-private.h"
+#include "sheet-pos.h"
+#include "load-library.h"
+#include "part.h"
+#include "textbox.h"
+#include "part-private.h"
+#include "part-label.h"
+#include "wire.h"
+#include "sim-settings.h"
+#include "node-store.h"
+#include "save-schematic.h"
+#include "xml-helper.h"
+
+typedef struct {
+ xmlDocPtr doc; /* Xml document. */
+ xmlNsPtr ns; /* Main namespace. */
+
+ xmlNodePtr node_symbols; /* For saving of symbols. */
+ xmlNodePtr node_parts; /* For saving of parts. */
+ xmlNodePtr node_props; /* For saving of properties. */
+ xmlNodePtr node_labels; /* For saving of labels. */
+ xmlNodePtr node_wires; /* For saving of wires. */
+ xmlNodePtr node_textboxes;
+} parseXmlContext;
+
+static void
+write_xml_sim_settings (xmlNodePtr cur, parseXmlContext *ctxt, Schematic *sm)
+{
+ xmlNodePtr sim_settings_node, child,analysis,options;
+ gchar *str;
+ SimSettings *s;
+ SimOption *so;
+ GList *list;
+
+ s = schematic_get_sim_settings (sm);
+
+ sim_settings_node = xmlNewChild (cur, ctxt->ns,
+ BAD_CAST"simulation-settings", NULL);
+ if (!sim_settings_node){
+ g_warning ("Failed during save of simulation settings.\n");
+ return;
+ }
+
+ /* Transient analysis */
+ analysis = xmlNewChild (sim_settings_node, ctxt->ns, BAD_CAST "transient",
+ NULL);
+ if (!analysis){
+ g_warning ("Failed during save of transient analysis settings.\n");
+ return;
+ }
+
+ if (sim_settings_get_trans (s))
+ str = "true";
+ else
+ str = "false";
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "enabled", BAD_CAST str);
+
+ str = g_strdup_printf ("%g", sim_settings_get_trans_start (s));
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "start", BAD_CAST str);
+ g_free (str);
+
+ str = g_strdup_printf ("%g", sim_settings_get_trans_stop (s));
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "stop", BAD_CAST str);
+ g_free (str);
+
+ str = g_strdup_printf ("%g", sim_settings_get_trans_step (s));
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "step", BAD_CAST str);
+ g_free (str);
+
+ if (sim_settings_get_trans_step_enable (s))
+ str = "true";
+ else
+ str = "false";
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "step-enabled", BAD_CAST str);
+
+ if (sim_settings_get_trans_init_cond(s))
+ str = "true";
+ else
+ str = "false";
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "init-conditions", BAD_CAST str);
+
+ /* AC analysis */
+ analysis = xmlNewChild (sim_settings_node, ctxt->ns, BAD_CAST "ac", NULL);
+ if (!analysis){
+ g_warning ("Failed during save of AC analysis settings.\n");
+ return;
+ }
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "enabled",
+ BAD_CAST (sim_settings_get_ac (s) ? "true" : "false") );
+
+ str = g_strdup_printf ("%d", sim_settings_get_ac_npoints (s));
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "npoints", BAD_CAST str);
+ g_free (str);
+
+ str = g_strdup_printf ("%g", sim_settings_get_ac_start (s));
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "start", BAD_CAST str);
+ g_free (str);
+
+ str = g_strdup_printf ("%g", sim_settings_get_ac_stop (s));
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "stop", BAD_CAST str);
+ g_free (str);
+
+ /* DC analysis */
+ analysis = xmlNewChild (sim_settings_node, ctxt->ns, BAD_CAST "dc-sweep",
+ NULL);
+ if (!analysis){
+ g_warning ("Failed during save of DC sweep analysis settings.\n");
+ return;
+ }
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "enabled",
+ BAD_CAST (sim_settings_get_dc (s) ? "true" : "false") );
+
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "vsrc1",
+ BAD_CAST sim_settings_get_dc_vsrc(s,0));
+
+ str = g_strdup_printf ("%g", sim_settings_get_dc_start (s,0));
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "start1", BAD_CAST str);
+ g_free (str);
+
+ str = g_strdup_printf ("%g", sim_settings_get_dc_stop (s,0));
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "stop1", BAD_CAST str);
+ g_free (str);
+
+ str = g_strdup_printf ("%g", sim_settings_get_dc_step (s,0));
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "step1", BAD_CAST str);
+ g_free (str);
+
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "vsrc2",
+ BAD_CAST sim_settings_get_dc_vsrc(s,1));
+
+ str = g_strdup_printf ("%g", sim_settings_get_dc_start (s,1));
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "start2", BAD_CAST str);
+ g_free (str);
+
+ str = g_strdup_printf ("%g", sim_settings_get_dc_stop (s,1));
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "stop2", BAD_CAST str);
+ g_free (str);
+
+ str = g_strdup_printf ("%g", sim_settings_get_dc_step (s,1));
+ child = xmlNewChild (analysis, ctxt->ns, BAD_CAST "step2", BAD_CAST str);
+ g_free (str);
+
+
+ /* Save the options */
+ list = sim_settings_get_options (s);
+ if ( list ) {
+ options = xmlNewChild (sim_settings_node, ctxt->ns, BAD_CAST "options",
+ NULL);
+ if (!options){
+ g_warning ("Failed during save of sim engine options.\n");
+ return;
+ }
+
+ while ( list ) {
+ so = list->data;
+ child=xmlNewChild (options, ctxt->ns, BAD_CAST "option", NULL);
+ xmlNewChild (child , ctxt->ns, BAD_CAST "name", BAD_CAST so->name);
+ xmlNewChild (child , ctxt->ns, BAD_CAST "value", BAD_CAST so->value);
+ list = list->next;
+ }
+ }
+}
+
+static void
+write_xml_property (Property *prop, parseXmlContext *ctxt)
+{
+ xmlNodePtr node_property;
+
+ /*
+ * Create a node for the property.
+ */
+ node_property = xmlNewChild (ctxt->node_props, ctxt->ns, BAD_CAST "property",
+ NULL);
+ if (!node_property){
+ g_warning ("Failed during save of property %s.\n", prop->name);
+ return;
+ }
+
+ /*
+ * Store the name.
+ */
+ xmlNewChild (node_property, ctxt->ns, BAD_CAST "name",
+ xmlEncodeEntitiesReentrant (ctxt->doc, BAD_CAST prop->name));
+
+ /*
+ * Store the value.
+ */
+ xmlNewChild (node_property, ctxt->ns, BAD_CAST "value",
+ xmlEncodeEntitiesReentrant (ctxt->doc, BAD_CAST prop->value));
+}
+
+static void
+write_xml_label (PartLabel *label, parseXmlContext *ctxt)
+{
+ xmlNodePtr node_label;
+ gchar *str;
+
+ /*
+ * Create a node for the property.
+ */
+ node_label = xmlNewChild (ctxt->node_labels, ctxt->ns, BAD_CAST "label", NULL);
+ if (!node_label){
+ g_warning ("Failed during save of label %s.\n", label->name);
+ return;
+ }
+
+ /*
+ * Store the name.
+ */
+ xmlNewChild (node_label, ctxt->ns, BAD_CAST "name",
+ xmlEncodeEntitiesReentrant (ctxt->doc, BAD_CAST label->name));
+
+ /*
+ * Store the value.
+ */
+ xmlNewChild (node_label, ctxt->ns, BAD_CAST "text",
+ xmlEncodeEntitiesReentrant (ctxt->doc, BAD_CAST label->text));
+
+ str = g_strdup_printf ("(%g %g)", label->pos.x, label->pos.y);
+ xmlNewChild (node_label, ctxt->ns, BAD_CAST "position", BAD_CAST str);
+ g_free (str);
+
+ /*
+ * Editable or not?
+ */
+/* xmlNewChild (node_property, ctxt->ns, "editable", prop->edit ? "true" : "false");*/
+}
+
+static void
+write_xml_part (Part *part, parseXmlContext *ctxt)
+{
+ PartPriv *priv;
+ xmlNodePtr node_part;
+ xmlNodePtr node_pos;
+ gchar *str;
+ SheetPos pos;
+
+ priv = part->priv;
+
+ /*
+ * Create a node for the part.
+ */
+ node_part = xmlNewChild (ctxt->node_parts, ctxt->ns, BAD_CAST "part", NULL);
+ if (!node_part){
+ g_warning ("Failed during save of part %s.\n", priv->name);
+ return;
+ }
+
+ str = g_strdup_printf ("%d", priv->rotation);
+ xmlNewChild (node_part, ctxt->ns, BAD_CAST "rotation",
+ xmlEncodeEntitiesReentrant (ctxt->doc, BAD_CAST str));
+ g_free (str);
+
+ if (priv->flip & ID_FLIP_HORIZ)
+ xmlNewChild (node_part, ctxt->ns, BAD_CAST "flip",
+ xmlEncodeEntitiesReentrant (ctxt->doc, BAD_CAST "horizontal"));
+
+ if (priv->flip & ID_FLIP_VERT)
+ xmlNewChild (node_part, ctxt->ns, BAD_CAST "flip",
+ xmlEncodeEntitiesReentrant (ctxt->doc, BAD_CAST "vertical"));
+
+ /*
+ * Store the name.
+ */
+ xmlNewChild (node_part, ctxt->ns, BAD_CAST "name",
+ xmlEncodeEntitiesReentrant (ctxt->doc, BAD_CAST priv->name));
+
+ /*
+ * Store the name of the library the part resides in.
+ */
+ xmlNewChild (node_part, ctxt->ns, BAD_CAST "library",
+ xmlEncodeEntitiesReentrant (ctxt->doc, BAD_CAST priv->library->name));
+
+ /*
+ * Which symbol to use.
+ */
+ xmlNewChild (node_part, ctxt->ns, BAD_CAST "symbol",
+ xmlEncodeEntitiesReentrant (ctxt->doc, BAD_CAST priv->symbol_name));
+
+ /*
+ * Position.
+ */
+ item_data_get_pos (ITEM_DATA (part), &pos);
+ str = g_strdup_printf ("(%g %g)", pos.x, pos.y);
+ node_pos = xmlNewChild (node_part, ctxt->ns, BAD_CAST "position", BAD_CAST str);
+ g_free (str);
+
+ /*
+ * Create a node for the properties.
+ */
+ ctxt->node_props = xmlNewChild (node_part, ctxt->ns, BAD_CAST "properties",
+ NULL);
+ if (!ctxt->node_props){
+ g_warning ("Failed during save of part %s.\n", priv->name);
+ return;
+ }
+ else{
+ g_slist_foreach (priv->properties, (GFunc) write_xml_property,
+ ctxt);
+ }
+
+ /*
+ * Create a node for the labels.
+ */
+ ctxt->node_labels = xmlNewChild (node_part, ctxt->ns, BAD_CAST "labels", NULL);
+ if (!ctxt->node_labels){
+ g_warning ("Failed during save of part %s.\n", priv->name);
+ return;
+ }
+ else{
+ g_slist_foreach (priv->labels, (GFunc) write_xml_label, ctxt);
+ }
+}
+
+static void
+write_xml_wire (Wire *wire, parseXmlContext *ctxt)
+{
+ xmlNodePtr node_wire;
+ gchar *str;
+ SheetPos start_pos, end_pos;
+
+ g_return_if_fail (wire != NULL);
+ g_return_if_fail (IS_WIRE (wire));
+
+ /*
+ * Create a node for the wire.
+ */
+ node_wire = xmlNewChild (ctxt->node_wires, ctxt->ns, BAD_CAST "wire", NULL);
+ if (!node_wire){
+ g_warning ("Failed during save of wire.\n");
+ return;
+ }
+
+ wire_get_start_pos (wire, &start_pos);
+ wire_get_end_pos (wire, &end_pos);
+
+ str = g_strdup_printf ("(%g %g)(%g %g)",
+ start_pos.x, start_pos.y, end_pos.x, end_pos.y);
+ xmlNewChild (node_wire, ctxt->ns, BAD_CAST "points", BAD_CAST str);
+ g_free (str);
+}
+
+static void
+write_xml_textbox (Textbox *textbox, parseXmlContext *ctxt)
+{
+ xmlNodePtr node_textbox;
+ gchar *str;
+ SheetPos pos;
+
+ g_return_if_fail (textbox != NULL);
+
+ /*
+ * FIXME: just a quick hack to get this working.
+ */
+ if (!IS_TEXTBOX (textbox))
+ return;
+
+ g_return_if_fail (IS_TEXTBOX (textbox));
+
+ /*
+ * Create a node for the textbox.
+ */
+ node_textbox = xmlNewChild (ctxt->node_textboxes, ctxt->ns,
+ BAD_CAST "textbox", NULL);
+ if (!node_textbox){
+ g_warning ("Failed during save of text box.\n");
+ return;
+ }
+
+ item_data_get_pos (ITEM_DATA (textbox), &pos);
+
+ str = g_strdup_printf ("(%g %g)", pos.x, pos.y);
+ xmlNewChild (node_textbox, ctxt->ns, BAD_CAST "position", BAD_CAST str);
+ g_free (str);
+
+ str = textbox_get_text (textbox);
+ xmlNewChild (node_textbox, ctxt->ns, BAD_CAST "text", BAD_CAST str);
+}
+
+/*
+ * Create an XML subtree of doc equivalent to the given Schematic.
+ */
+static xmlNodePtr
+write_xml_schematic (parseXmlContext *ctxt, Schematic *sm, GError **error)
+{
+ xmlNodePtr cur;
+ xmlNodePtr grid;
+ xmlNsPtr ogo;
+ gchar *str;
+ /*
+ * Unused variables
+ double zoom;
+ */
+
+ cur = xmlNewDocNode (ctxt->doc, ctxt->ns, BAD_CAST "schematic", NULL);
+ if (cur == NULL) {
+ printf("%s:%d NULL que no debe ser NULL!\n", __FILE__,
+ __LINE__);
+ return NULL;
+ }
+
+ if (ctxt->ns == NULL) {
+ ogo = xmlNewNs (cur,
+ BAD_CAST "http://www.dtek.chalmers.se/~d4hult/oregano/v1",
+ BAD_CAST "ogo");
+ xmlSetNs (cur,ogo);
+ ctxt->ns = ogo;
+ }
+
+ /*
+ * General information about the Schematic.
+ */
+ str = g_strdup_printf ("%s", schematic_get_author (sm));
+ xmlNewChild (cur, ctxt->ns, BAD_CAST "author", xmlEncodeEntitiesReentrant (ctxt->doc, BAD_CAST str));
+ g_free (str);
+
+ str = g_strdup_printf ("%s", schematic_get_title (sm));
+ xmlNewChild (cur, ctxt->ns, BAD_CAST "title", xmlEncodeEntitiesReentrant (ctxt->doc, BAD_CAST str));
+ g_free (str);
+
+ str = g_strdup_printf ("%s", schematic_get_comments (sm));
+ xmlNewChild (cur, ctxt->ns, BAD_CAST "comments", xmlEncodeEntitiesReentrant (ctxt->doc, BAD_CAST str));
+ g_free (str);
+
+ /*
+ * Zoom.
+ */
+// sheet_get_zoom (sm->sheet, &zoom);
+// str = g_strdup_printf ("%g", zoom);
+// xmlNewChild (cur, ctxt->ns, "zoom", str);
+// g_free (str);
+
+ /*
+ * Grid.
+ */
+ grid = xmlNewChild (cur, ctxt->ns, BAD_CAST "grid", NULL);
+ xmlNewChild (grid, ctxt->ns, BAD_CAST "visible", BAD_CAST "true");
+ xmlNewChild (grid, ctxt->ns, BAD_CAST "snap", BAD_CAST "true");
+ /*
+ * Simulation settings.
+ */
+ write_xml_sim_settings (cur, ctxt, sm);
+
+ /*
+ * Parts.
+ */
+ ctxt->node_parts = xmlNewChild (cur, ctxt->ns, BAD_CAST "parts", NULL);
+ schematic_parts_foreach (sm, (gpointer) write_xml_part, ctxt);
+
+ /*
+ * Wires.
+ */
+ ctxt->node_wires = xmlNewChild (cur, ctxt->ns, BAD_CAST "wires", NULL);
+ schematic_wires_foreach (sm, (gpointer) write_xml_wire, ctxt);
+
+ /*
+ * Text boxes.
+ */
+ ctxt->node_textboxes = xmlNewChild (cur, ctxt->ns, BAD_CAST "textboxes", NULL);
+ schematic_items_foreach (sm, (gpointer) write_xml_textbox, ctxt);
+
+ return cur;
+}
+
+/*
+ * schematic_write_xml
+ *
+ * Save a Sheet to an XML file.
+ */
+
+gint
+schematic_write_xml (Schematic *sm, GError **error)
+{
+ int ret = -1;
+ xmlDocPtr xml;
+ parseXmlContext ctxt;
+ GError *internal_error = NULL;
+
+ g_return_val_if_fail (sm != NULL, FALSE);
+
+ /*
+ * Create the tree.
+ */
+ xml = xmlNewDoc (BAD_CAST "1.0");
+ if (xml == NULL){
+ return FALSE;
+ }
+
+ ctxt.ns = NULL;
+ ctxt.doc = xml;
+
+ xmlDocSetRootElement(xml, write_xml_schematic(&ctxt, sm, &internal_error));
+
+ if (internal_error) {
+ g_propagate_error (error, internal_error);
+ return FALSE;
+ }
+
+ /*
+ * Dump the tree.
+ */
+ xmlSetDocCompressMode (xml, oregano.compress_files ? 9 : 0);
+
+ /* FIXME: check for != NULL. */
+ {
+ char *s =schematic_get_filename (sm);
+ if (s != NULL) {
+ xmlIndentTreeOutput;
+ ret = xmlSaveFormatFile (s, xml, 1);
+ } else {
+ g_warning("Schematic has no filename!!\n");
+ }
+ }
+
+ if (xml != NULL) {
+ xmlFreeDoc (xml);
+ } else {
+ g_warning("XML object is NULL\n");
+ }
+
+ if (ret < 0)
+ return FALSE;
+ return TRUE;
+}
+
+
diff --git a/src/save-schematic.h b/src/save-schematic.h
new file mode 100644
index 0000000..f6e36c1
--- /dev/null
+++ b/src/save-schematic.h
@@ -0,0 +1,38 @@
+/*
+ * save-schematic.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef _SAVE_SCHEMATIC_H
+#define _SAVE_SCHEMATIC_H
+
+#include <glib.h>
+#include "schematic.h"
+
+gint schematic_write_xml (Schematic *sm, GError **error);
+
+#endif
diff --git a/src/schematic-view-menu.h b/src/schematic-view-menu.h
new file mode 100644
index 0000000..af1c4bf
--- /dev/null
+++ b/src/schematic-view-menu.h
@@ -0,0 +1,183 @@
+/*
+ * schematic-view.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#ifndef _SCHEMATIC_VIEW_MENU_
+#define _SCHEMATIC_VIEW_MENU_
+static GtkActionEntry entries[] = {
+ /* Name, ICON, Text, CTRL, DESC, CALLBACK */
+ {"MenuFile", NULL, N_("_File")},
+ {"MenuEdit", NULL, N_("_Edit")},
+ {"MenuTools", NULL, N_("_Tools")},
+ {"MenuView", NULL, N_("_View")},
+ {"MenuHelp", NULL, N_("_Help")},
+ {"MenuZoom", NULL, N_("_Zoom")},
+ {"New", GTK_STOCK_NEW, N_("_New"), "<control>N", N_("Create a new schematic"), G_CALLBACK (new_cmd)},
+ {"Open", GTK_STOCK_OPEN, N_("_Open"), "<control>O", N_("Open a schematic"), G_CALLBACK (open_cmd)},
+ {"DisplayRecentFiles", NULL, N_("_Recent Files"), NULL, NULL, NULL}, //G_CALLBACK (display_recent_files)},
+ {"Save", GTK_STOCK_SAVE, N_("_Save"), "<control>S", N_("Save a schematic"), G_CALLBACK (save_cmd)},
+ {"SaveAs", GTK_STOCK_SAVE_AS, N_("Save _As..."), "<control><shift>S", N_("Save a schematic with other name"), G_CALLBACK (save_as_cmd)},
+ {"PageProperties", NULL, N_("Page Properties"), NULL, N_("Set print properties"), G_CALLBACK (page_properties_cmd)},
+ {"Print", GTK_STOCK_PRINT, N_("_Print"), NULL, N_("Print schematic"), G_CALLBACK (print_cmd)},
+ {"PrintPreview", GTK_STOCK_PRINT_PREVIEW, N_("Print Preview"), NULL, N_("Preview the schematic before printing"), G_CALLBACK (print_preview_cmd)},
+ {"SchematicProperties", NULL, N_("Schematic Pr_operties..."), NULL, N_("Modify the schematic's properties"), G_CALLBACK (properties_cmd)},
+ {"Export", NULL, N_("_Export..."), NULL, N_("Export schematic"), G_CALLBACK (export_cmd)},
+ {"Close", GTK_STOCK_CLOSE, N_("_Close"), "<control>W", N_("Close the current schematic"), G_CALLBACK (close_cmd)},
+ {"Quit", GTK_STOCK_QUIT, N_("_Quit"), "<control>Q", N_("Close all schematics"), G_CALLBACK (quit_cmd)},
+ {"Cut", GTK_STOCK_CUT, N_("C_ut"), "<control>X", NULL, G_CALLBACK (cut_cmd)},
+ {"Copy", GTK_STOCK_COPY, N_("_Copy"), "<control>C", NULL, G_CALLBACK (copy_cmd)},
+ {"Paste", GTK_STOCK_PASTE, N_("_Paste"), "<control>V", NULL, G_CALLBACK (paste_cmd)},
+ {"Delete", GTK_STOCK_DELETE, N_("_Delete"), "<control>D", N_("Delete the selection"), G_CALLBACK (delete_cmd)},
+ {"Rotate", STOCK_PIXMAP_ROTATE, N_("_Rotate"), "<control>R", N_("Rotate the selection clockwise"), G_CALLBACK (rotate_cmd)},
+ {"FlipH", NULL, N_("Flip _horizontally"), "<control>F", N_("Flip the selection horizontally"), G_CALLBACK (flip_horizontal_cmd)},
+ {"FlipV", NULL, N_("Flip _vertically"), "<control><shift>F", N_("Flip the selection vertically"), G_CALLBACK (flip_vertical_cmd)},
+ {"SelectAll", NULL, N_("Select _all"), "<control>A", N_("Select all objects on the sheet"), G_CALLBACK (select_all_cmd)},
+ {"SelectNone", NULL, N_("Select _none"), "<control><shift>A", N_("Deselect the selected objects"), G_CALLBACK (deselect_all_cmd)},
+ {"ObjectProperties", GTK_STOCK_PROPERTIES, N_("_Object Properties..."), NULL, N_("Modify the object's properties"), G_CALLBACK (object_properties_cmd)},
+ {"SimulationSettings", GTK_STOCK_PROPERTIES, N_("Simulation S_ettings..."), NULL, N_("Edit the simulation settings"), G_CALLBACK (sim_settings_show)},
+ {"Settings", NULL, N_("_Preferences"), NULL, N_("Edit Oregano settings"), G_CALLBACK (settings_show)},
+ {"Simulate", GTK_STOCK_EXECUTE, N_("_Simulate"), "F5", N_("Run a simulation"), G_CALLBACK (simulate_cmd)},
+ {"Netlist", NULL, N_("_Generate netlist"), NULL, N_("Generate a netlist"), G_CALLBACK (netlist_cmd)},
+ {"Log", NULL, N_("_Log"), NULL, N_("View the latest simulation log"), G_CALLBACK (log_cmd)},
+ {"NetlistView", NULL, N_("N_etlist"), NULL, N_("View the circuit netlist"), G_CALLBACK (netlist_view_cmd)},
+ {"About", GTK_STOCK_HELP, N_("_About"), NULL, N_("About Oregano"), G_CALLBACK (about_cmd)},
+ {"ZoomIn", GTK_STOCK_ZOOM_IN, N_("Zoom _In"), NULL, N_("Zoom in"), G_CALLBACK (zoom_in_cmd)},
+ {"ZoomOut", GTK_STOCK_ZOOM_OUT, N_("Zoom _Out"), NULL, N_("Zoom out"), G_CALLBACK (zoom_out_cmd)},
+};
+
+static GtkToggleActionEntry toggle_entries[] = {
+ {"Labels", NULL, N_("_Node labels"), NULL, N_("Show or hide node labels"), G_CALLBACK (show_label_cmd), FALSE},
+ {"Parts", STOCK_PIXMAP_PART_BROWSER, N_("_Parts"), NULL, N_("Show or hide the part browser"), G_CALLBACK (part_browser_cmd), TRUE},
+ {"Grid", STOCK_PIXMAP_GRID, N_("_Grid"), NULL, N_("Show or hide the grid"), G_CALLBACK (grid_toggle_snap_cmd), TRUE},
+};
+
+static GtkRadioActionEntry zoom_entries[] = {
+ {"Zoom50", NULL, "50%", NULL, N_("Set the zoom factor to 50%"), 0},
+ {"Zoom75", NULL, "75%", NULL, N_("Set the zoom factor to 75%"), 1},
+ {"Zoom100", NULL, "100%", "1", N_("Set the zoom factor to 100%"), 2},
+ {"Zoom125", NULL, "125%", NULL, N_("Set the zoom factor to 125%"), 3},
+ {"Zoom150", NULL, "150%", NULL, N_("Set the zoom factor to 150%"), 4},
+};
+
+static GtkRadioActionEntry tools_entries[] = {
+ {"Arrow", STOCK_PIXMAP_ARROW, N_("Arrow"), NULL, N_("Select, move and modify objects"), 0},
+ {"Text", GTK_STOCK_BOLD, N_("Text"), NULL, N_("Put text on the schematic"), 1},
+ {"Wire", STOCK_PIXMAP_WIRE, N_("Wire"), "1", N_("Draw wires %"), 2},
+ {"VClamp", STOCK_PIXMAP_V_CLAMP, N_("Clamp"), NULL, N_("Add voltage clamp"), 3},
+};
+
+static const char *ui_description =
+"<ui>"
+" <menubar name='MainMenu'>"
+" <menu action='MenuFile'>"
+" <menuitem action='New'/>"
+" <menuitem action='Open'/>"
+" <menuitem action='DisplayRecentFiles'/>"
+" <menuitem action='Save'/>"
+" <menuitem action='SaveAs'/>"
+" <separator/>"
+" <menuitem action='PageProperties'/>"
+" <menuitem action='Print'/>"
+" <menuitem action='PrintPreview'/>"
+" <separator/>"
+" <menuitem action='SchematicProperties'/>"
+" <menuitem action='Export'/>"
+" <separator/>"
+" <menuitem action='Close'/>"
+" <menuitem action='Quit'/>"
+" </menu>"
+" <menu action='MenuEdit'>"
+" <menuitem action='Cut'/>"
+" <menuitem action='Copy'/>"
+" <menuitem action='Paste'/>"
+" <separator/>"
+" <menuitem action='Delete'/>"
+" <menuitem action='Rotate'/>"
+" <menuitem action='FlipH'/>"
+" <menuitem action='FlipV'/>"
+" <separator/>"
+" <menuitem action='SelectAll'/>"
+" <menuitem action='SelectNone'/>"
+" <separator/>"
+" <menuitem action='ObjectProperties'/>"
+" <menuitem action='SimulationSettings'/>"
+" <separator/>"
+" <menuitem action='Settings'/>"
+" </menu>"
+" <menu action='MenuTools'>"
+" <menuitem action='Simulate'/>"
+" <separator/>"
+" <menuitem action='Netlist'/>"
+" </menu>"
+" <menu action='MenuView'>"
+" <menu action='MenuZoom'>"
+" <menuitem action='Zoom50'/>"
+" <menuitem action='Zoom75'/>"
+" <menuitem action='Zoom100'/>"
+" <menuitem action='Zoom125'/>"
+" <menuitem action='Zoom150'/>"
+" </menu>"
+" <separator/>"
+" <menuitem action='Log'/>"
+" <menuitem action='Labels'/>"
+" <menuitem action='NetlistView'/>"
+" </menu>"
+" <menu action='MenuHelp'>"
+" <menuitem action='About'/>"
+" </menu>"
+" </menubar>"
+" <toolbar name='StandartToolbar'>"
+" <toolitem action='New'/>"
+" <toolitem action='Open'/>"
+" <toolitem action='Save'/>"
+" <separator/>"
+" <toolitem action='Cut'/>"
+" <toolitem action='Copy'/>"
+" <toolitem action='Paste'/>"
+" <separator/>"
+" <toolitem action='Arrow'/>"
+" <toolitem action='Text'/>"
+" <toolitem action='Wire'/>"
+" <toolitem action='VClamp'/>"
+" <separator/>"
+" <toolitem action='Simulate'/>"
+" <toolitem action='SimulationSettings'/>"
+" <separator/>"
+" <toolitem action='ZoomIn'/>"
+" <toolitem action='ZoomOut'/>"
+" <separator/>"
+" <toolitem action='Grid'/>"
+" <toolitem action='Parts'/>"
+" </toolbar>"
+" <popup name='MainPopup'>"
+" <menuitem action='Paste'/>"
+" </popup>"
+"</ui>";
+
+#endif
diff --git a/src/schematic-view.c b/src/schematic-view.c
new file mode 100644
index 0000000..e4fc386
--- /dev/null
+++ b/src/schematic-view.c
@@ -0,0 +1,2698 @@
+/*
+ * schematic-view.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <math.h>
+#include <string.h>
+#include <unistd.h>
+#include <glade/glade.h>
+#include <gtk/gtk.h>
+#include <libgnomeui/gnome-app.h>
+#include <libbonobo-2.0/libbonobo.h>
+#include <sys/time.h>
+#include <cairo/cairo-features.h>
+
+#include "sheet-private.h"
+#include "schematic-view.h"
+#include "schematic.h"
+#include "part-browser.h"
+#include "stock.h"
+#include "main.h"
+#include "load-schematic.h"
+#include "load-common.h"
+#include "netlist.h"
+#include "dialogs.h"
+#include "cursors.h"
+#include "save-schematic.h"
+#include "file.h"
+#include "settings.h"
+#include "sim-settings.h"
+#include "simulation.h"
+#include "smallicon.h"
+#include "plot.h"
+#include "sheet-item-factory.h"
+#include "part-item.h"
+#include "errors.h"
+#include "node-item.h"
+#include "engine.h"
+
+/* remove: */
+#include "create-wire.h"
+
+/*
+ * Pixmaps.
+ */
+#include "pixmaps/plot.xpm"
+#include "pixmaps/log.xpm"
+#include "pixmaps/menu_zoom.xpm"
+
+/*
+ * Mini-icon for IceWM, KWM, tasklist etc.
+ */
+#include "pixmaps/mini_icon.xpm"
+
+enum {
+ CHANGED,
+ LAST_SIGNAL
+};
+
+typedef enum {
+ SCHEMATIC_TOOL_ARROW,
+ SCHEMATIC_TOOL_PART,
+ SCHEMATIC_TOOL_WIRE,
+ SCHEMATIC_TOOL_TEXT
+} SchematicTool;
+
+typedef enum {
+ RUBBER_NO = 0,
+ RUBBER_YES,
+ RUBBER_START
+} RubberState;
+
+typedef struct {
+ RubberState state;
+ int timeout_id;
+ int click_start_state;
+
+ GnomeCanvasItem *rectangle;
+ double start_x, start_y;
+} RubberbandInfo;
+
+struct _SchematicViewPriv {
+ Schematic *schematic;
+
+ Sheet *sheet;
+ GList *items;
+
+ GHashTable *dots;
+
+ RubberbandInfo *rubberband;
+ GtkPageSetup *page_setup;
+ GtkPrintSettings *print_settings;
+
+ GList *preserve_selection_items;
+
+ gboolean empty;
+
+ GtkActionGroup *action_group;
+ GtkUIManager *ui_manager;
+
+ GtkWidget *floating_part_browser;
+
+ guint grid : 1;
+ SchematicTool tool;
+ int cursor;
+
+ CreateWireContext *create_wire_context; /* FIXME: get rid of this somehow. */
+
+ gpointer browser;
+
+ /*
+ * FIXME: Move these to a special struct instead.
+ */
+ GtkWidget *log_window;
+ GtkTextView *log_text;
+ GladeXML *log_gui;
+
+ gboolean show_voltmeters;
+ GList *voltmeter_items; /* List of GnomeCanvasItem. */
+ GHashTable *voltmeter_nodes;
+};
+
+/*
+ * Class functions and members.
+ */
+static void schematic_view_init(SchematicView *sv);
+static void schematic_view_class_init(SchematicViewClass *klass);
+static void schematic_view_dispose(GObject *object);
+static void schematic_view_finalize(GObject *object);
+static GObjectClass *parent_class = NULL;
+static guint schematic_view_signals[LAST_SIGNAL] = { 0 };
+static void dot_removed_callback (Schematic *schematic, SheetPos *pos, SchematicView *sv);
+
+static GList *schematic_view_list = NULL;
+GdkBitmap *stipple;
+char stipple_pattern [] = { 0x02, 0x01 };
+extern GnomeCanvasClass *sheet_parent_class; /* FIXME: Remove later. */
+
+/*
+ * Signal callbacks.
+ */
+static void title_changed_callback (Schematic *schematic, char *new_title, SchematicView *sv);
+static void set_focus (GtkWindow *window, GtkWidget *focus, SchematicView *sv);
+static int delete_event (GtkWidget *widget, GdkEvent *event, SchematicView *sv);
+static void item_destroy_callback (SheetItem *item, SchematicView *sv);
+static int sheet_event_callback (GtkWidget *widget, GdkEvent *event, SchematicView *sv);
+static void data_received (GtkWidget *widget, GdkDragContext *context,
+ gint x, gint y, GtkSelectionData *selection_data, guint info,
+ guint32 time, SchematicView *sv);
+
+static void item_data_added_callback (Schematic *schematic, ItemData *data, SchematicView *sv);
+static void item_selection_changed_callback (SheetItem *item, gboolean selected, SchematicView *sv);
+static void reset_tool_cb (Sheet *sheet, SchematicView *sv);
+
+/*
+ * Misc.
+ */
+static int can_close (SchematicView *sv);
+static void setup_dnd (SchematicView *sv);
+static int rubberband_timeout_cb (SchematicView *sv);
+static void stop_rubberband (SchematicView *sv, GdkEventButton *event);
+static void setup_rubberband (SchematicView *sv, GdkEventButton *event);
+static void set_tool (SchematicView *sv, SchematicTool tool);
+
+static int dot_equal (gconstpointer a, gconstpointer b);
+static guint dot_hash (gconstpointer key);
+
+static void schematic_view_show_voltmeters (SchematicView *sv, gboolean show);
+
+static void
+new_cmd (GtkWidget *widget, Schematic *sv)
+{
+ Schematic *new_sm;
+ SchematicView *new_sv;
+
+ new_sm = schematic_new ();
+ new_sv = schematic_view_new (new_sm);
+
+ gtk_widget_show_all (new_sv->toplevel);
+}
+
+static void
+properties_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ Schematic *s;
+ GladeXML *xml;
+ GtkWidget *win;
+ GtkEntry *title, *author;
+ GtkTextView *comments;
+ GtkTextBuffer *buffer;
+ gchar *s_title, *s_author, *s_comments;
+ gint btn;
+
+ s = schematic_view_get_schematic (sv);
+
+ if (!g_file_test (OREGANO_GLADEDIR "/properties.glade", G_FILE_TEST_EXISTS)) {
+ gchar *msg;
+ msg = g_strdup_printf (
+ _("The file %s could not be found. You might need to reinstall Oregano to fix this."),
+ OREGANO_GLADEDIR "/properties.glade");
+
+ oregano_error_with_title (_("Could not create properties dialog"), msg);
+ g_free (msg);
+ return;
+ }
+
+ xml = glade_xml_new (
+ OREGANO_GLADEDIR "/properties.glade",
+ "properties", NULL
+ );
+
+ win = glade_xml_get_widget (xml, "properties");
+ title = GTK_ENTRY (glade_xml_get_widget (xml, "title"));
+ author = GTK_ENTRY (glade_xml_get_widget (xml, "author"));
+ comments = GTK_TEXT_VIEW (glade_xml_get_widget (xml, "comments"));
+ buffer = gtk_text_view_get_buffer (comments);
+
+ s_title = schematic_get_title (s);
+ s_author = schematic_get_author (s);
+ s_comments = schematic_get_comments (s);
+
+ if (s_title)
+ gtk_entry_set_text (title, s_title);
+ if (s_author)
+ gtk_entry_set_text (author, s_author);
+ if (s_comments)
+ gtk_text_buffer_set_text (buffer, s_comments, strlen(s_comments));
+
+ btn = gtk_dialog_run (GTK_DIALOG (win));
+
+ if (btn == GTK_RESPONSE_OK) {
+ GtkTextIter start, end;
+
+ gtk_text_buffer_get_start_iter (buffer, &start);
+ gtk_text_buffer_get_end_iter (buffer, &end);
+
+ s_title = (gchar *) gtk_entry_get_text (title);
+ s_author = (gchar *) gtk_entry_get_text (author);
+ s_comments = gtk_text_buffer_get_text (buffer, &start, &end, FALSE);
+
+ schematic_set_title (s, s_title);
+ schematic_set_author (s, s_author);
+ schematic_set_comments (s, s_comments);
+
+ g_free (s_comments);
+ }
+
+ gtk_widget_destroy (win);
+}
+
+static void
+find_file (GtkButton *btn, GtkEntry *text)
+{
+ GtkWidget *dialog;
+
+ dialog = gtk_file_chooser_dialog_new (
+ _("Export to..."),
+ NULL,
+ GTK_FILE_CHOOSER_ACTION_SAVE,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+ NULL);
+
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
+ char *filename;
+
+ filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+ gtk_entry_set_text (text, filename);
+ g_free (filename);
+ }
+
+ gtk_widget_destroy (dialog);
+}
+
+static void
+export_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ Schematic *s;
+ GladeXML *xml;
+ GtkWidget *win;
+ GtkWidget *w;
+ GtkEntry *file = NULL;
+ GtkComboBox *combo;
+ gint btn = GTK_RESPONSE_NONE;
+ gint formats[5], fc;
+ GtkSpinButton *spinw, *spinh;
+
+ s = schematic_view_get_schematic (sv);
+
+ if (!g_file_test (OREGANO_GLADEDIR "/export.glade", G_FILE_TEST_EXISTS)) {
+ gchar *msg;
+ msg = g_strdup_printf (
+ _("The file %s could not be found. You might need to reinstall Oregano to fix this."),
+ OREGANO_GLADEDIR "/export.glade");
+
+ oregano_error_with_title (_("Could not create properties dialog"), msg);
+ g_free (msg);
+ return;
+ }
+
+ xml = glade_xml_new (OREGANO_GLADEDIR "/export.glade", "export", NULL);
+
+ win = glade_xml_get_widget (xml, "export");
+ combo = GTK_COMBO_BOX (glade_xml_get_widget (xml, "format"));
+
+ gtk_list_store_clear (GTK_LIST_STORE (gtk_combo_box_get_model (combo)));
+ fc = 0;
+#ifdef CAIRO_HAS_SVG_SURFACE
+ gtk_combo_box_append_text (combo, "Scalar Vector Graphics (SVG)");
+ formats[fc++] = 0;
+#endif
+#ifdef CAIRO_HAS_PDF_SURFACE
+ gtk_combo_box_append_text (combo, "Portable Document Format (PDF)");
+ formats[fc++] = 1;
+#endif
+#ifdef CAIRO_HAS_PS_SURFACE
+ gtk_combo_box_append_text (combo, "Postscript (PS)");
+ formats[fc++] = 2;
+#endif
+#ifdef CAIRO_HAS_PNG_FUNCTIONS
+ gtk_combo_box_append_text (combo, "Portable Network Graphics (PNG)");
+ formats[fc++] = 3;
+#endif
+
+ file = GTK_ENTRY (glade_xml_get_widget (xml, "file"));
+
+ w = glade_xml_get_widget (xml, "find");
+ g_signal_connect (G_OBJECT (w), "clicked", G_CALLBACK (find_file), file);
+
+ gtk_combo_box_set_active (combo, 0);
+
+ btn = gtk_dialog_run (GTK_DIALOG (win));
+
+ if (btn == GTK_RESPONSE_OK) {
+ int bg = 0;
+ GtkSpinButton *spinw, *spinh;
+ int color_scheme = 0;
+ GtkWidget *w;
+ int i = gtk_combo_box_get_active (combo);
+
+ w = glade_xml_get_widget (xml, "bgwhite");
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)))
+ bg = 1;
+ w = glade_xml_get_widget (xml, "bgblack");
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)))
+ bg = 2;
+
+ w = glade_xml_get_widget (xml, "color");
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)))
+ color_scheme = 1;
+
+ spinw = GTK_SPIN_BUTTON (glade_xml_get_widget (xml, "export_width"));
+ spinh = GTK_SPIN_BUTTON (glade_xml_get_widget (xml, "export_height"));
+
+ schematic_export (s,
+ gtk_entry_get_text (file),
+ gtk_spin_button_get_value_as_int (spinw),
+ gtk_spin_button_get_value_as_int (spinh),
+ bg,
+ color_scheme,
+ formats[i]);
+ }
+
+ gtk_widget_destroy (win);
+}
+
+static void
+page_properties_cmd (GtkWidget *widget, SchematicView *sv)
+{
+sv->priv->page_setup = gtk_print_run_page_setup_dialog (NULL,
+ sv->priv->page_setup,
+ sv->priv->print_settings);
+}
+
+static void
+open_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ Schematic *new_sm;
+ SchematicView *new_sv;
+ char *fname, *uri;
+ GList *list;
+ GError *error = NULL;
+
+ fname = dialog_open_file (sv);
+ if (fname == NULL)
+ return;
+
+ /*
+ * Repaint the other schematic windows before loading the new file.
+ */
+ new_sv = NULL;
+ for (list = schematic_view_list; list; list = list->next) {
+ if (SCHEMATIC_VIEW (list->data)->priv->empty) {
+ new_sv = SCHEMATIC_VIEW (list->data);
+ }
+ gtk_widget_queue_draw( GTK_WIDGET(SCHEMATIC_VIEW(list->data)->toplevel));
+ }
+
+ while (gtk_events_pending())
+ gtk_main_iteration();
+
+ new_sm = schematic_read(fname, &error);
+
+ if (error != NULL) {
+ oregano_error_with_title (_("Could not load file"), error->message);
+ g_error_free (error);
+ }
+
+ if (new_sm) {
+ GtkRecentManager *manager;
+ const gchar *mime;
+ gchar *uri;
+ GtkRecentInfo *item;
+
+ manager = gtk_recent_manager_get_default ();
+ uri = g_strdup_printf ("file://%s", fname);
+ if (!gtk_recent_manager_has_item (manager, uri) &&
+ (!(uri==NULL))) gtk_recent_manager_add_item (manager, uri);
+ if (!new_sv)
+ new_sv = schematic_view_new (new_sm);
+ else
+ schematic_view_load (new_sv, new_sm);
+
+ gtk_widget_show_all (new_sv->toplevel);
+ schematic_set_filename (new_sm, fname);
+ schematic_set_title (new_sm, g_path_get_basename(fname));
+ }
+
+ g_free (fname);
+ g_free (uri);
+}
+
+
+static void
+oregano_recent_open (GtkRecentChooser *chooser,
+ SchematicView *sv)
+{
+ gchar *uri;
+ const gchar *mime;
+ GtkRecentInfo *item;
+ GtkRecentManager *manager;
+ Schematic *new_sm;
+ SchematicView *new_sv;
+ GError *error = NULL;
+
+ uri = gtk_recent_chooser_get_current_uri (GTK_RECENT_CHOOSER (chooser));
+ if (!uri) return;
+
+ manager = gtk_recent_manager_get_default ();
+ item = gtk_recent_manager_lookup_item (manager, uri, NULL);
+ if (!item) return;
+
+ mime = gtk_recent_info_get_mime_type (item);
+ if (!mime) {
+ g_warning ("Unrecognized mime type");
+ return;
+ }
+
+ if (!strcmp (mime, "application/x-oregano")) {
+ new_sm = schematic_read(uri, &error);
+ if (error != NULL) {
+ oregano_error_with_title (_("Could not load file"), error->message);
+ g_error_free (error);
+ }
+ if (new_sm) {
+ if (!new_sv)
+ new_sv = schematic_view_new (new_sm);
+ else
+ schematic_view_load (new_sv, new_sm);
+
+ gtk_widget_show_all (new_sv->toplevel);
+ schematic_set_filename (new_sm, uri);
+ schematic_set_title (new_sm, g_path_get_basename(uri));
+ }
+ }
+ else
+ g_warning (_("Unknown type of file can't open"));
+
+ g_free(uri);
+ gtk_recent_info_unref (item);
+}
+
+
+static GtkWidget *
+create_recent_chooser_menu (GtkRecentManager *manager)
+{
+ GtkWidget *menu;
+ GtkRecentFilter *filter;
+ GtkWidget *menuitem;
+
+ menu = gtk_recent_chooser_menu_new_for_manager (manager);
+
+ gtk_recent_chooser_set_limit (GTK_RECENT_CHOOSER (menu), 10);
+
+ gtk_recent_chooser_set_local_only (GTK_RECENT_CHOOSER (menu), TRUE);
+ gtk_recent_chooser_set_sort_type (GTK_RECENT_CHOOSER (menu),
+ GTK_RECENT_SORT_MRU);
+
+ filter = gtk_recent_filter_new ();
+ gtk_recent_filter_add_mime_type (filter, "application/x-oregano");
+ gtk_recent_chooser_add_filter (GTK_RECENT_CHOOSER (menu), filter);
+ gtk_recent_chooser_set_filter (GTK_RECENT_CHOOSER (menu), filter);
+ gtk_recent_chooser_set_local_only (GTK_RECENT_CHOOSER (menu), TRUE);
+ g_signal_connect (menu, "item-activated",
+ G_CALLBACK (oregano_recent_open),
+ NULL);
+
+ gtk_widget_show_all (menu);
+
+ return menu;
+}
+
+static void
+display_recent_files (GtkWidget *menu, SchematicView *sv)
+{
+ SchematicViewPriv *priv = sv->priv;
+ GtkWidget *menuitem;
+ GtkWidget *recentmenu;
+ GtkRecentManager *manager = NULL;
+
+ manager = gtk_recent_manager_get_default ();
+ menuitem = gtk_ui_manager_get_widget (priv->ui_manager, "/MainMenu/MenuFile/DisplayRecentFiles");
+ recentmenu = create_recent_chooser_menu (manager);
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), recentmenu);
+ gtk_widget_show (menuitem);
+}
+
+static void
+save_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ Schematic *sm;
+ char *filename;
+ GError *error = NULL;
+ sm = sv->priv->schematic;
+ filename = schematic_get_filename (sm);
+
+ if (filename == NULL || !strcmp (filename, _("Untitled.oregano"))){
+ dialog_save_as (sv);
+ return;
+ } else {
+ if (!schematic_save_file (sm, &error)){
+ oregano_error_with_title (_("Could not save schematic file"), error->message);
+ g_error_free (error);
+ }
+ }
+}
+
+static void
+save_as_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ dialog_save_as (sv);
+}
+
+static void
+close_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ if (can_close (sv)) {
+ g_object_unref(G_OBJECT(sv));
+ }
+}
+
+static void
+select_all_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ schematic_view_select_all (sv, TRUE);
+}
+
+static void
+deselect_all_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ schematic_view_select_all (sv, FALSE);
+}
+
+static void
+delete_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ schematic_view_delete_selection (sv);
+}
+
+static void
+rotate_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ if (sv->priv->sheet->state == SHEET_STATE_NONE)
+ schematic_view_rotate_selection (sv);
+ else if (sv->priv->sheet->state == SHEET_STATE_FLOAT ||
+ sv->priv->sheet->state == SHEET_STATE_FLOAT_START)
+ schematic_view_rotate_ghosts (sv);
+}
+
+static void
+flip_horizontal_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ if (sv->priv->sheet->state == SHEET_STATE_NONE)
+ schematic_view_flip_selection (sv, TRUE);
+ else if (sv->priv->sheet->state == SHEET_STATE_FLOAT ||
+ sv->priv->sheet->state == SHEET_STATE_FLOAT_START)
+ schematic_view_flip_ghosts (sv, TRUE);
+}
+
+static void
+flip_vertical_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ if (sv->priv->sheet->state == SHEET_STATE_NONE)
+ schematic_view_flip_selection (sv, FALSE);
+ else if (sv->priv->sheet->state == SHEET_STATE_FLOAT ||
+ sv->priv->sheet->state == SHEET_STATE_FLOAT_START)
+ schematic_view_flip_ghosts (sv, FALSE);
+}
+
+static void
+object_properties_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ Sheet *sheet;
+
+ sheet = sv->priv->sheet;
+
+ if (g_list_length (sheet->priv->selected_objects) == 1)
+ sheet_item_edit_properties (sheet->priv->selected_objects->data);
+}
+
+static void
+copy_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ SheetItem *item;
+ GList *list;
+
+ if (sv->priv->sheet->state != SHEET_STATE_NONE)
+ return;
+
+ schematic_view_clear_ghosts (sv);
+ clipboard_empty ();
+
+ list = schematic_view_get_selection (sv);
+ for (; list; list = list->next) {
+ item = list->data;
+ clipboard_add_object (G_OBJECT (item));
+ }
+
+ if (clipboard_is_empty ())
+ gtk_action_set_sensitive (gtk_ui_manager_get_action (sv->priv->ui_manager, "/MainMenu/MenuEdit/Paste"), FALSE);
+ else
+ gtk_action_set_sensitive (gtk_ui_manager_get_action (sv->priv->ui_manager, "/MainMenu/MenuEdit/Paste"), TRUE);
+}
+
+void
+schematic_view_copy_selection (SchematicView *sv)
+{
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ copy_cmd (NULL, sv);
+}
+
+static void
+cut_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ if (sv->priv->sheet->state != SHEET_STATE_NONE)
+ return;
+
+ copy_cmd (NULL, sv);
+
+ schematic_view_delete_selection (sv);
+
+ if (clipboard_is_empty ())
+ gtk_action_set_sensitive (gtk_ui_manager_get_action (sv->priv->ui_manager, "/MainMenu/MenuEdit/Paste"), FALSE);
+ else
+ gtk_action_set_sensitive (gtk_ui_manager_get_action (sv->priv->ui_manager, "/MainMenu/MenuEdit/Paste"), TRUE);
+}
+
+void
+schematic_view_cut_selection (SchematicView *sv)
+{
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ cut_cmd (NULL, sv);
+}
+
+/**
+* Ugly hack (gpointer...) to avoid a .h-file dependancy... :/
+*/
+static void
+paste_objects (gpointer data, gpointer user_data)
+{
+ SchematicView *sv;
+
+ sv = SCHEMATIC_VIEW (user_data);
+ sheet_item_paste (sv, data);
+}
+
+static void
+paste_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ if (sv->priv->sheet->state != SHEET_STATE_NONE)
+ return;
+
+ if (sv->priv->sheet->priv->floating_objects != NULL) {
+ schematic_view_clear_ghosts (sv);
+ }
+
+ schematic_view_select_all (sv, FALSE);
+ clipboard_foreach ((ClipBoardFunction) paste_objects, sv);
+
+ if (sv->priv->sheet->priv->floating_objects != NULL) {
+ part_item_signal_connect_floating_group (sv->priv->sheet, sv);
+ }
+}
+
+void
+schematic_view_paste (SchematicView *sv)
+{
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ paste_cmd (NULL, sv);
+}
+
+static void
+about_cmd (GtkWidget *widget, Schematic *sm)
+{
+ dialog_about ();
+}
+
+static void
+log_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ schematic_view_log_show (sv, TRUE);
+}
+
+static void
+show_label_cmd (GtkToggleAction *toggle, SchematicView *sv)
+{
+ gboolean b;
+ GList *item;
+
+ b = gtk_toggle_action_get_active (toggle);
+
+ for (item = sv->priv->items; item; item=item->next) {
+ if (IS_PART_ITEM(item->data))
+ part_item_show_node_labels (PART_ITEM (item->data), b);
+ }
+}
+
+static void
+print_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ schematic_print (schematic_view_get_schematic (sv),
+ sv->priv->page_setup,
+ sv->priv->print_settings, FALSE);
+}
+
+static void
+print_preview_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ schematic_print (schematic_view_get_schematic (sv),
+ sv->priv->page_setup,
+ sv->priv->print_settings, TRUE);
+}
+
+static void
+quit_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ GList *list, *copy;
+
+ /*
+ * Duplicate the list as the list is modified during destruction.
+ */
+ copy = g_list_copy (schematic_view_list);
+
+ for (list = copy; list; list = list->next){
+ if (can_close (list->data))
+ g_object_unref (list->data);
+ }
+
+ g_list_free (copy);
+}
+
+static void
+v_clamp_cmd (SchematicView *sv)
+{
+ LibraryPart *library_part;
+ SheetPos pos;
+ Sheet *sheet;
+ Part *part;
+ GList *lib;
+ Library *l;
+
+ set_tool (sv, SCHEMATIC_TOOL_PART);
+ sheet = schematic_view_get_sheet (sv);
+
+ /* Find default lib */
+ for(lib=oregano.libraries; lib; lib=lib->next) {
+ l = (Library *)(lib->data);
+ if (!g_strcasecmp(l->name, "Default")) break;
+ }
+
+ library_part = library_get_part (l, "Test Clamp");
+
+ part = part_new_from_library_part (library_part);
+
+ if (!part) {
+ g_warning ("Clamp not found!");
+ return;
+ }
+ pos.x = pos.y = 0;
+ item_data_set_pos (ITEM_DATA (part), &pos);
+ item_data_set_property (ITEM_DATA (part), "type", "v");
+
+ schematic_view_select_all(sv, FALSE);
+ schematic_view_clear_ghosts(sv);
+ schematic_view_add_ghost_item(sv, ITEM_DATA(part));
+
+ part_item_signal_connect_floating_group (sheet, sv);
+}
+
+static void
+tool_cmd (GtkAction *action, GtkRadioAction *current, SchematicView *sv)
+{
+
+ switch (gtk_radio_action_get_current_value (current)) {
+ case 0:
+ set_tool (sv, SCHEMATIC_TOOL_ARROW);
+ break;
+ case 1:
+ set_tool (sv, SCHEMATIC_TOOL_TEXT);
+ break;
+ case 2:
+ set_tool (sv, SCHEMATIC_TOOL_WIRE);
+ break;
+ case 3:
+ v_clamp_cmd (sv);
+ }
+}
+
+static void
+part_browser_cmd (GtkToggleAction *action, SchematicView *sv)
+{
+ part_browser_toggle_show (sv);
+}
+
+static void
+grid_toggle_snap_cmd (GtkToggleAction *action, SchematicView *sv)
+{
+ sv->priv->grid = !sv->priv->grid;
+
+ grid_snap (sv->priv->sheet->grid, sv->priv->grid);
+ grid_show (sv->priv->sheet->grid, sv->priv->grid);
+}
+
+static void
+voltmeter_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ sv->priv->show_voltmeters = !sv->priv->show_voltmeters;
+
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget),
+ sv->priv->show_voltmeters);
+
+ schematic_view_show_voltmeters (sv, sv->priv->show_voltmeters);
+}
+
+static void
+netlist_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ Schematic *sm;
+ gchar *netlist_name;
+ GError *error = 0;
+ OreganoEngine *engine;
+
+ g_return_if_fail (sv != NULL);
+
+ sm = sv->priv->schematic;
+
+ netlist_name = dialog_netlist_file (sv);
+ if (netlist_name == NULL)
+ return;
+
+ schematic_set_netlist_filename (sm, netlist_name);
+ engine = oregano_engine_factory_create_engine (oregano.engine, sm);
+ oregano_engine_generate_netlist (engine, netlist_name, &error);
+ schematic_view_update_parts (sv);
+
+ g_free (netlist_name);
+ g_object_unref (engine);
+
+ if (error != NULL) {
+ if (g_error_matches (error, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_NO_CLAMP) ||
+ g_error_matches (error, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_NO_GND) ||
+ g_error_matches (error, OREGANO_ERROR, OREGANO_SIMULATE_ERROR_IO_ERROR)) {
+ oregano_error_with_title (_("Could not create a netlist"), error->message);
+ g_clear_error (&error);
+ }
+ else oregano_error (_("An unexpected error has occurred"));
+
+ return;
+ }
+}
+
+static void
+netlist_view_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ netlist_editor_new_from_schematic_view (sv);
+}
+
+#define ZOOM_MIN 0.35
+#define ZOOM_MAX 3
+
+static void
+zoom_check (SchematicView *sv)
+{
+ double zoom;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ sheet_get_zoom (sv->priv->sheet, &zoom);
+
+ gtk_action_set_sensitive (gtk_ui_manager_get_action (sv->priv->ui_manager, "/StandartToolbar/ZoomIn"), zoom < ZOOM_MAX);
+ gtk_action_set_sensitive (gtk_ui_manager_get_action (sv->priv->ui_manager, "/StandartToolbar/ZoomOut"), zoom > ZOOM_MIN);
+}
+
+static void
+zoom_in_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ sheet_change_zoom (sv->priv->sheet, 1.1);
+ zoom_check (sv);
+}
+
+static void
+zoom_out_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ sheet_change_zoom (sv->priv->sheet, 0.9);
+ zoom_check (sv);
+}
+
+static void
+zoom_cmd (GtkAction *action, GtkRadioAction *current, SchematicView *sv)
+{
+ switch (gtk_radio_action_get_current_value (current)) {
+ case 0:
+ g_object_set(G_OBJECT(sv->priv->sheet), "zoom", 0.50, NULL);
+ break;
+ case 1:
+ g_object_set(G_OBJECT(sv->priv->sheet), "zoom", 0.75, NULL);
+ break;
+ case 2:
+ g_object_set(G_OBJECT (sv->priv->sheet), "zoom", 1.0, NULL);
+ break;
+ case 3:
+ g_object_set(G_OBJECT(sv->priv->sheet), "zoom", 1.25, NULL);
+ break;
+ case 4:
+ g_object_set(G_OBJECT(sv->priv->sheet), "zoom", 1.5, NULL);
+ break;
+ }
+ zoom_check (sv);
+}
+
+static void
+simulate_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ Schematic *sm;
+
+ sm = sv->priv->schematic;
+
+ simulation_show (NULL, sv);
+
+ schematic_view_update_parts (sv);
+ return;
+}
+
+GType
+schematic_view_get_type(void)
+{
+ static GType schematic_view_type = 0;
+
+ if (!schematic_view_type) {
+ static const GTypeInfo schematic_view_info = {
+ sizeof(SchematicViewClass),
+ NULL,
+ NULL,
+ (GClassInitFunc)schematic_view_class_init,
+ NULL,
+ NULL,
+ sizeof(SchematicView),
+ 0,
+ (GInstanceInitFunc)schematic_view_init,
+ NULL
+ };
+
+ schematic_view_type = g_type_register_static(G_TYPE_OBJECT,
+ "SchematicView", &schematic_view_info, 0);
+ }
+
+ return schematic_view_type;
+}
+
+static void
+schematic_view_class_init (SchematicViewClass *klass)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS(klass);
+
+ parent_class = g_type_class_peek_parent(klass);
+
+ schematic_view_signals[CHANGED] =
+ g_signal_new ("changed",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (SchematicViewClass, changed),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ object_class->finalize = schematic_view_finalize;
+ object_class->dispose = schematic_view_dispose;
+
+ stipple = gdk_bitmap_create_from_data(NULL, stipple_pattern, 2, 2);
+}
+
+static void
+schematic_view_init (SchematicView *sv)
+{
+ sv->priv = g_new0 (SchematicViewPriv, 1);
+
+ sv->priv->preserve_selection_items = NULL;
+ sv->priv->rubberband = g_new0 (RubberbandInfo, 1);
+ sv->priv->rubberband->state = RUBBER_NO;
+ sv->priv->items = NULL;
+ sv->priv->empty = TRUE;
+ sv->priv->schematic = NULL;
+ sv->priv->page_setup = NULL;
+ sv->priv->print_settings = gtk_print_settings_new ();
+ sv->priv->grid = TRUE;
+
+ sv->priv->show_voltmeters = FALSE;
+ sv->priv->voltmeter_items = NULL;
+ sv->priv->voltmeter_nodes = g_hash_table_new_full (g_str_hash,
+ g_str_equal, g_free, g_free);
+}
+
+static void
+schematic_view_finalize(GObject *object)
+{
+ SchematicView *sv = SCHEMATIC_VIEW (object);
+
+ if (sv->priv) {
+ g_hash_table_destroy (sv->priv->dots);
+ g_free(sv->priv->rubberband);
+
+ g_free (sv->priv);
+ sv->priv = NULL;
+ }
+
+ if (sv->toplevel) {
+ gtk_widget_destroy (GTK_WIDGET (sv->toplevel));
+ sv->toplevel = NULL;
+ }
+
+ G_OBJECT_CLASS(parent_class)->finalize(object);
+}
+
+static void
+schematic_view_dispose(GObject *object)
+{
+ SchematicView *sv = SCHEMATIC_VIEW(object);
+ GList *list;
+
+ schematic_view_list = g_list_remove (schematic_view_list, sv);
+
+ /* Disconnect sheet's events */
+ g_signal_handlers_disconnect_by_func (G_OBJECT (sv->priv->sheet),
+ G_CALLBACK(sheet_event_callback), sv);
+
+ /* Disconnect focus signal */
+ g_signal_handlers_disconnect_by_func (G_OBJECT (sv->toplevel),
+ G_CALLBACK(set_focus), sv);
+
+ /* Disconnect schematic dot_removed signal */
+ g_signal_handlers_disconnect_by_func (G_OBJECT (sv->priv->schematic),
+ G_CALLBACK(dot_removed_callback), sv);
+
+ /* Disconnect destroyed item signal */
+ for(list=sv->priv->items; list; list=list->next)
+ g_signal_handlers_disconnect_by_func (G_OBJECT (list->data),
+ G_CALLBACK(item_destroy_callback), sv);
+
+ /* Disconnect destroy event from toplevel */
+ g_signal_handlers_disconnect_by_func (G_OBJECT (sv->toplevel),
+ G_CALLBACK(delete_event), sv);
+
+ if (sv->priv) {
+ g_object_unref(G_OBJECT(sv->priv->schematic));
+ }
+ G_OBJECT_CLASS(parent_class)->dispose(object);
+}
+
+/**
+* Set up a mini icon for the window.
+*/
+static void
+realized (GtkWidget *widget)
+{
+ GdkPixmap *icon;
+ GdkBitmap *icon_mask;
+
+ icon = gdk_pixmap_create_from_xpm_d (widget->window,
+ &icon_mask, NULL, mini_icon_xpm);
+ set_small_icon (widget->window, icon, icon_mask);
+}
+
+static void
+dot_added_callback (Schematic *schematic, SheetPos *pos, SchematicView *sv)
+{
+ /* GnomeCanvasItem *dot_item; */
+ NodeItem *node_item;
+
+ SheetPos *key;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ node_item = g_hash_table_lookup (sv->priv->dots, pos);
+ if (node_item == NULL) {
+ node_item = NODE_ITEM (
+ gnome_canvas_item_new (
+ gnome_canvas_root (GNOME_CANVAS (sv->priv->sheet)),
+ node_item_get_type (),
+ "x", pos->x,
+ "y", pos->y,
+ NULL));
+ }
+
+ node_item_show_dot (node_item, TRUE);
+
+ key = g_new0 (SheetPos, 1);
+ key->x = pos->x;
+ key->y = pos->y;
+
+ g_hash_table_insert (sv->priv->dots, key, node_item);
+}
+
+static void
+dot_removed_callback (Schematic *schematic, SheetPos *pos, SchematicView *sv)
+{
+ gpointer *node_item; /* GnomeCanvasItem* */
+ gpointer *orig_key; /* SheetPos* */
+ gboolean found;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ found = g_hash_table_lookup_extended (
+ sv->priv->dots,
+ pos,
+ (gpointer) &orig_key,
+ (gpointer) &node_item);
+
+ if (found) {
+ gtk_object_destroy(GTK_OBJECT (node_item));
+ g_hash_table_remove(sv->priv->dots, pos);
+ } else
+ g_warning ("No dot to remove!");
+}
+
+static void
+show_help (GtkWidget *widget, SchematicView *sv)
+{
+ GError *error = NULL;
+
+ if (!gnome_help_display_uri("ghelp:oregano",&error)) {
+ printf("Error %s\n", error->message);
+ g_error_free(error);
+ }
+}
+
+#include "schematic-view-menu.h"
+
+SchematicView *
+schematic_view_new (Schematic *schematic)
+{
+ SchematicView *sv;
+ SchematicViewPriv *priv;
+ GtkAdjustment *vadj, *hadj;
+ GtkWidget *w, *hbox, *vbox;
+ GtkWidget *toolbar;
+ GtkActionGroup *action_group;
+ GtkUIManager *ui_manager;
+ GtkAccelGroup *accel_group;
+ GtkWidget *menubar;
+ GError *error;
+
+ g_return_val_if_fail (schematic != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC (schematic), NULL);
+
+ sv = SCHEMATIC_VIEW(g_object_new(schematic_view_get_type(), NULL));
+
+ schematic_view_list = g_list_prepend (schematic_view_list, sv);
+
+ sv->toplevel = gnome_app_new ("Oregano", "Oregano");
+
+ w = gnome_appbar_new (FALSE, TRUE, GNOME_PREFERENCES_NEVER);
+ gnome_app_set_statusbar (GNOME_APP (sv->toplevel), w);
+
+ sv->priv->sheet = SHEET (sheet_new (10000, 10000));
+
+ vbox = gtk_vbox_new (FALSE, 0);
+ hbox = gtk_hbox_new (FALSE, 0);
+
+ w = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (w), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (w), GTK_SHADOW_IN);
+ gtk_container_add (GTK_CONTAINER (w), GTK_WIDGET (sv->priv->sheet));
+ vadj = gtk_layout_get_vadjustment (GTK_LAYOUT (sv->priv->sheet));
+ hadj = gtk_layout_get_hadjustment (GTK_LAYOUT (sv->priv->sheet));
+ vadj->step_increment = 10;
+ hadj->step_increment = 10;
+ gtk_scrolled_window_set_vadjustment (GTK_SCROLLED_WINDOW (w), vadj);
+ gtk_scrolled_window_set_hadjustment (GTK_SCROLLED_WINDOW (w), hadj);
+
+ gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
+
+ g_signal_connect (G_OBJECT (sv->priv->sheet), "event", G_CALLBACK(sheet_event_callback), sv);
+
+ priv = sv->priv;
+ priv->log_window = NULL;
+
+ gtk_box_pack_start (GTK_BOX (hbox), part_browser_create (sv), FALSE, FALSE, 0);
+
+ priv->action_group = action_group = gtk_action_group_new ("MenuActions");
+ gtk_action_group_set_translation_domain (priv->action_group, GETTEXT_PACKAGE);
+ gtk_action_group_add_actions (action_group, entries, G_N_ELEMENTS (entries), sv);
+ gtk_action_group_add_radio_actions (action_group, zoom_entries, G_N_ELEMENTS (zoom_entries), 2, G_CALLBACK (zoom_cmd), sv);
+ gtk_action_group_add_radio_actions (action_group, tools_entries, G_N_ELEMENTS (tools_entries), 0, G_CALLBACK (tool_cmd), sv);
+ gtk_action_group_add_toggle_actions (action_group, toggle_entries, G_N_ELEMENTS (toggle_entries), sv);
+
+ priv->ui_manager = ui_manager = gtk_ui_manager_new ();
+ gtk_ui_manager_insert_action_group (ui_manager, action_group, 0);
+
+ accel_group = gtk_ui_manager_get_accel_group (ui_manager);
+ gtk_window_add_accel_group (GTK_WINDOW (sv->toplevel), accel_group);
+
+ error = NULL;
+ if (!gtk_ui_manager_add_ui_from_string (ui_manager, ui_description, -1, &error)) {
+ g_message ("building menus failed: %s", error->message);
+ g_error_free (error);
+ exit (EXIT_FAILURE);
+ }
+
+ menubar = gtk_ui_manager_get_widget (ui_manager, "/MainMenu");
+
+ // Upgrade the menu bar with the recent files used by oregano
+ display_recent_files (menubar, sv);
+ gtk_box_pack_start (GTK_BOX (vbox), menubar, FALSE, FALSE, 0);
+
+ toolbar = gtk_ui_manager_get_widget (ui_manager, "/StandartToolbar");
+ gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_ICONS);
+ gtk_box_pack_start (GTK_BOX (vbox), toolbar, FALSE, FALSE, 0);
+
+ // Fill the window
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
+ gnome_app_set_contents (GNOME_APP (sv->toplevel), vbox);
+
+ gtk_window_set_focus (GTK_WINDOW (sv->toplevel), GTK_WIDGET (sv->priv->sheet));
+ gtk_widget_grab_focus (GTK_WIDGET (sv->priv->sheet));
+
+ g_signal_connect_after (G_OBJECT (sv->toplevel), "set_focus", G_CALLBACK (set_focus), sv);
+ g_signal_connect (G_OBJECT (sv->toplevel), "delete_event", G_CALLBACK (delete_event), sv);
+ g_signal_connect (G_OBJECT (sv->toplevel), "realize", G_CALLBACK (realized), NULL);
+
+ setup_dnd (sv);
+
+ /* Set default sensitive for items */
+ gtk_action_set_sensitive (gtk_ui_manager_get_action (ui_manager, "/MainMenu/MenuEdit/ObjectProperties"), FALSE);
+ gtk_action_set_sensitive (gtk_ui_manager_get_action (ui_manager, "/MainMenu/MenuEdit/Paste"), FALSE);
+
+ /*
+ * Set the window size to something reasonable. Stolen from Gnumeric.
+ */
+ {
+ int sx, sy;
+
+ gtk_window_set_policy (GTK_WINDOW (sv->toplevel), TRUE, TRUE, FALSE);
+ sx = MAX (gdk_screen_width () - 64, 640);
+ sy = MAX (gdk_screen_height () - 64, 480);
+ sx = (sx * 3) / 4;
+ sy = (sy * 3) / 4;
+ gtk_window_set_default_size (GTK_WINDOW (sv->toplevel),
+ sx, sy);
+ }
+
+ /*
+ * Hash table that keeps maps coordinate to a specific dot.
+ */
+ priv->dots = g_hash_table_new_full (dot_hash, dot_equal, g_free, NULL);
+
+ g_signal_connect_object(G_OBJECT (sv->priv->sheet),
+ "reset_tool",
+ G_CALLBACK (reset_tool_cb),
+ G_OBJECT (sv),
+ 0);
+
+ schematic_view_load (sv, schematic);
+
+ if (!schematic_get_title (sv->priv->schematic)) {
+ gtk_window_set_title (
+ GTK_WINDOW (sv->toplevel),
+ _("Untitled.oregano")
+ );
+ } else {
+ gtk_window_set_title (
+ GTK_WINDOW (sv->toplevel),
+ schematic_get_title (sv->priv->schematic)
+ );
+ }
+ schematic_set_filename (sv->priv->schematic, _("Untitled.oregano"));
+ schematic_set_netlist_filename (sv->priv->schematic, _("Untitled.netlist"));
+
+ return sv;
+}
+
+void
+schematic_view_load (SchematicView *sv, Schematic *sm)
+{
+ GList *list;
+ g_return_if_fail (sv->priv->empty != FALSE);
+ g_return_if_fail (sm != NULL);
+
+ if (sv->priv->schematic) g_object_unref (G_OBJECT (sv->priv->schematic));
+
+ sv->priv->schematic = sm;
+
+ g_signal_connect_object(G_OBJECT (sm),
+ "title_changed",
+ G_CALLBACK(title_changed_callback),
+ G_OBJECT (sv),
+ 0);
+ g_signal_connect_object(G_OBJECT (sm),
+ "item_data_added",
+ G_CALLBACK(item_data_added_callback),
+ G_OBJECT (sv),
+ 0);
+ g_signal_connect_object(G_OBJECT (sm),
+ "dot_added",
+ G_CALLBACK(dot_added_callback),
+ G_OBJECT (sv),
+ 0);
+ g_signal_connect_object(G_OBJECT (sm),
+ "dot_removed",
+ G_CALLBACK(dot_removed_callback),
+ G_OBJECT (sv),
+ 0);
+
+ list = schematic_get_items (sm);
+
+ for (; list; list = list->next)
+ g_signal_emit_by_name(G_OBJECT (sm), "item_data_added", list->data);
+
+ list = node_store_get_node_positions (schematic_get_store (sm));
+ for (; list; list = list->next)
+ dot_added_callback (sm, list->data, sv);
+
+ g_list_free (list);
+}
+
+/*
+* Tidy up: remove the item from the item list and selected items list.
+*/
+static void
+item_destroy_callback (SheetItem *item, SchematicView *sv)
+{
+ Sheet *sheet;
+
+ sv->priv->items = g_list_remove (sv->priv->items, item);
+
+ sheet = sheet_item_get_sheet (item);
+
+ /*
+ * Remove the object from the selected-list before destroying.
+ */
+
+ /* FIXME: optimize by checking if the item is selected first. */
+ sheet->priv->selected_objects = g_list_remove (sheet->priv->selected_objects, item);
+ sheet->priv->floating_objects = g_list_remove (sheet->priv->floating_objects, item);
+}
+
+static void
+item_selection_changed_callback (SheetItem *item, gboolean selected,
+ SchematicView *sv)
+{
+ guint length;
+
+ /* FIXME! : don't touch sheet->priv directly!!! */
+ if (selected) {
+ sv->priv->sheet->priv->selected_objects =
+ g_list_prepend ( sv->priv->sheet->priv->selected_objects, item);
+ } else {
+ sv->priv->sheet->priv->selected_objects = g_list_remove ( sv->priv->sheet->priv->selected_objects, item);
+ }
+
+ length = g_list_length (sv->priv->sheet->priv->selected_objects);
+ if (length && item_data_has_properties (sheet_item_get_data (item)))
+ gtk_action_set_sensitive (gtk_ui_manager_get_action (sv->priv->ui_manager, "/MainMenu/MenuEdit/ObjectProperties"), TRUE);
+ else
+ gtk_action_set_sensitive (gtk_ui_manager_get_action (sv->priv->ui_manager, "/MainMenu/MenuEdit/ObjectProperties"), FALSE);
+}
+
+/**
+* An ItemData got added; create an Item and set up the neccessary handlers.
+*/
+static void
+item_data_added_callback (Schematic *schematic, ItemData *data,
+ SchematicView *sv)
+{
+ NodeStore *store;
+ Sheet *sheet;
+ SheetItem *item;
+
+ store = schematic_get_store (schematic);
+ sheet = schematic_view_get_sheet (sv);
+
+ item = sheet_item_factory_create_sheet_item (sv, data);
+ if (item != NULL) {
+ sheet_item_place (item, sv);
+
+ g_object_set (G_OBJECT (item), "action_group", sv->priv->action_group, NULL);
+ /*
+ * Hook onto the destroy signal so that we can perform some
+ * cleaning magic before destroying the item (remove it from
+ * lists etc).
+ */
+ g_signal_connect (
+ G_OBJECT (item),
+ "destroy",
+ G_CALLBACK (item_destroy_callback),
+ sv);
+
+ g_signal_connect (
+ G_OBJECT (item),
+ "selection_changed",
+ G_CALLBACK (item_selection_changed_callback),
+ sv);
+
+ sv->priv->items = g_list_prepend (sv->priv->items, item);
+ sv->priv->empty = FALSE;
+ if (sv->priv->tool == SCHEMATIC_TOOL_PART)
+ schematic_view_reset_tool (sv);
+ }
+}
+
+void
+schematic_view_add_ghost_item (SchematicView *sv, ItemData *data)
+{
+ Sheet *sheet;
+ SheetItem *item;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ sheet = schematic_view_get_sheet (sv);
+
+ item = sheet_item_factory_create_sheet_item (sv, data);
+
+ sheet->priv->floating_objects =
+ g_list_prepend (sheet->priv->floating_objects,item);
+}
+
+static void
+title_changed_callback (Schematic *schematic, char *new_title, SchematicView *sv)
+{
+ g_return_if_fail (schematic != NULL);
+ g_return_if_fail (IS_SCHEMATIC (schematic));
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ gtk_window_set_title (GTK_WINDOW (sv->toplevel), new_title);
+}
+
+static void
+set_focus (GtkWindow *window, GtkWidget *focus, SchematicView *sv)
+{
+ g_return_if_fail(sv->priv != NULL);
+ g_return_if_fail(sv->priv->sheet != NULL);
+
+ if (!window->focus_widget)
+ /* gtk_window_set_focus (GTK_WINDOW (sv->toplevel), GTK_WIDGET (sv->priv->sheet)); */
+ gtk_widget_grab_focus(GTK_WIDGET (sv->priv->sheet));
+}
+
+static int
+delete_event(GtkWidget *widget, GdkEvent *event, SchematicView *sv)
+{
+ if (can_close (sv)) {
+ g_object_unref(G_OBJECT(sv));
+
+ if (schematic_count() == 0)
+ bonobo_main_quit();
+
+ return FALSE;
+ } else
+ return TRUE;
+}
+
+static int
+can_close (SchematicView *sv)
+{
+ GtkWidget *dialog;
+ gchar *text, *filename;
+ GError *error = NULL;
+ gint result;
+
+ if (!schematic_is_dirty (schematic_view_get_schematic (sv)))
+ return TRUE;
+
+ filename = schematic_get_filename (sv->priv->schematic);
+ text = g_strdup_printf (
+ _("<span weight=\"bold\" size=\"large\">Save changes to schematic %s before closing?</span>\n\n"
+ "If you don't save, all changes since you last saved will be permanently lost."),
+ filename ? g_basename (filename) : NULL );
+
+ dialog = gtk_message_dialog_new_with_markup (
+ NULL,
+ GTK_DIALOG_MODAL,
+ GTK_MESSAGE_WARNING,
+ GTK_BUTTONS_NONE,
+ _(text), NULL);
+
+ gtk_dialog_add_buttons (GTK_DIALOG (dialog),
+ _("Close _without Saving"),
+ GTK_RESPONSE_NO,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_SAVE, GTK_RESPONSE_YES,
+ NULL);
+
+ g_free (text);
+
+ result = gtk_dialog_run (GTK_DIALOG (dialog));
+
+ gtk_widget_destroy (dialog);
+
+ switch (result) {
+ case GTK_RESPONSE_YES:
+ schematic_save_file (schematic_view_get_schematic (sv), &error);
+ break;
+ case GTK_RESPONSE_NO:
+ schematic_set_dirty (schematic_view_get_schematic (sv), FALSE);
+ break;
+ case GTK_RESPONSE_CANCEL:
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static void
+run_context_menu (SchematicView *sv, GdkEventButton *event)
+{
+ GtkWidget *menu;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ menu = gtk_ui_manager_get_widget (sv->priv->ui_manager, "/MainPopup");
+
+ gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, sv, event->button, event->time);
+}
+
+Sheet *
+schematic_view_get_sheet (SchematicView *sv)
+{
+ g_return_val_if_fail (sv != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC_VIEW (sv), NULL);
+
+ return sv->priv->sheet;
+}
+
+Schematic *
+schematic_view_get_schematic (SchematicView *sv)
+{
+ g_return_val_if_fail (sv != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC_VIEW (sv), NULL);
+
+ return sv->priv->schematic;
+}
+
+
+/*
+* FIXME: move these signals to schematic-view instead.
+*/
+void
+schematic_view_reset_tool (SchematicView *sv)
+{
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ g_signal_emit_by_name (G_OBJECT (sv->priv->sheet), "reset_tool");
+}
+
+void
+schematic_view_cancel (SchematicView *sv)
+{
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ g_signal_emit_by_name (G_OBJECT (sv->priv->sheet), "cancel");
+}
+
+/* Debugging: */
+extern void node_store_dump_wires (NodeStore *store);
+
+static int
+sheet_event_callback (GtkWidget *widget, GdkEvent *event, SchematicView *sv)
+{
+ Sheet *sheet;
+
+ sheet = sv->priv->sheet;
+
+ switch (event->type) {
+ case GDK_3BUTTON_PRESS:
+ /*
+ * We don't not care about triple clicks on the sheet.
+ */
+ return FALSE;
+ case GDK_2BUTTON_PRESS:
+ /*
+ * The sheet does not care about double clicks, but invoke the
+ * canvas event handler and see if an item picks up the event.
+ */
+ if ((*GTK_WIDGET_CLASS (sheet_parent_class)->button_press_event) (
+ widget, (GdkEventButton *)event))
+ return TRUE;
+ else
+ return FALSE;
+ case GDK_BUTTON_PRESS:
+ /*
+ * If we are in the middle of something else, don't interfere
+ * with that.
+ */
+ if (sheet->state != SHEET_STATE_NONE)
+ return FALSE;
+
+ if ((* GTK_WIDGET_CLASS
+ (sheet_parent_class)->button_press_event) (widget, (GdkEventButton *) event))
+ return TRUE;
+
+ if (event->button.button == 3) {
+ run_context_menu (sv, (GdkEventButton *) event);
+ return TRUE;
+ }
+
+ if (event->button.button == 1) {
+ if (!(event->button.state & GDK_SHIFT_MASK))
+ schematic_view_select_all (sv, FALSE);
+
+ setup_rubberband (sv, (GdkEventButton *) event);
+ return TRUE;
+ }
+ break;
+ case GDK_BUTTON_RELEASE:
+ if (event->button.button == 4 || event->button.button == 5)
+ return TRUE;
+
+ if (event->button.button == 1 &&
+ sv->priv->rubberband->state == RUBBER_YES) {
+ stop_rubberband (sv, (GdkEventButton *) event);
+ return TRUE;
+ }
+
+ if (GTK_WIDGET_CLASS
+ (sheet_parent_class)->button_release_event != NULL)
+ return GTK_WIDGET_CLASS
+ (sheet_parent_class)->button_release_event (
+ widget, (GdkEventButton *) event);
+
+ break;
+
+ case GDK_SCROLL:
+ if (((GdkEventScroll *)event)->direction == GDK_SCROLL_UP) {
+ double zoom;
+ sheet_get_zoom (sv->priv->sheet, &zoom);
+ if (zoom < ZOOM_MAX)
+ zoom_in_cmd (widget, sv);
+ } else if (((GdkEventScroll *)event)->direction == GDK_SCROLL_DOWN) {
+ double zoom;
+ sheet_get_zoom (sv->priv->sheet, &zoom);
+ if (zoom > ZOOM_MIN)
+ zoom_out_cmd (widget, sv);
+ }
+ break;
+ case GDK_KEY_PRESS:
+ switch (event->key.keyval) {
+ case GDK_R:
+ case GDK_r:
+ if (sheet->state == SHEET_STATE_NONE)
+ schematic_view_rotate_selection (sv);
+ break;
+ /* case GDK_f:
+ if (sheet->state == SHEET_STATE_NONE)
+ schematic_view_flip_selection (sv, TRUE);
+ break;
+ case GDK_F:
+ if (sheet->state == SHEET_STATE_NONE)
+ schematic_view_flip_selection (sv, FALSE);
+ break;*/
+ case GDK_Home:
+ break;
+ case GDK_End:
+ break;
+ case GDK_Left:
+ if (event->key.state & GDK_MOD1_MASK)
+ sheet_scroll (sheet, -20, 0);
+ break;
+ case GDK_Up:
+ if (event->key.state & GDK_MOD1_MASK)
+ sheet_scroll (sheet, 0, -20);
+ break;
+ case GDK_Right:
+ if (event->key.state & GDK_MOD1_MASK)
+ sheet_scroll (sheet, 20, 0);
+ break;
+ case GDK_Down:
+ if (event->key.state & GDK_MOD1_MASK)
+ sheet_scroll (sheet, 0, 20);
+ break;
+ case GDK_Page_Up:
+ if (event->key.state & GDK_MOD1_MASK)
+ sheet_scroll (sheet, 0, -120);
+ break;
+ case GDK_Page_Down:
+ if (event->key.state & GDK_MOD1_MASK)
+ sheet_scroll (sheet, 0, 120);
+ break;
+ case GDK_l:
+/* part_browser_place_selected_part (sheet->schematic); */
+ break;
+ case GDK_space:
+
+ node_store_dump_wires (
+ schematic_get_store (sv->priv->schematic));
+ return TRUE;
+
+ break;
+ case GDK_Escape:
+ g_signal_emit_by_name (G_OBJECT (sheet), "cancel");
+ break;
+ case GDK_Delete:
+ schematic_view_delete_selection (sv);
+ break;
+ default:
+ return FALSE;
+ }
+ default:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void
+setup_dnd (SchematicView *sv)
+{
+ static GtkTargetEntry dnd_types[] = {
+ { "text/uri-list", 0, DRAG_URI_INFO },
+ { "x-application/oregano-part", 0, DRAG_PART_INFO }
+ };
+ static gint dnd_num_types = sizeof (dnd_types) / sizeof (dnd_types[0]);
+
+ gtk_drag_dest_set (GTK_WIDGET (sv->priv->sheet),
+ GTK_DEST_DEFAULT_MOTION |
+ GTK_DEST_DEFAULT_HIGHLIGHT |
+ GTK_DEST_DEFAULT_DROP,
+ dnd_types, dnd_num_types, GDK_ACTION_MOVE);
+
+ g_signal_connect (G_OBJECT (sv->priv->sheet), "drag_data_received",
+ G_CALLBACK (data_received),
+ "koko");
+}
+
+static void
+data_received (GtkWidget *widget, GdkDragContext *context, gint x, gint y,
+ GtkSelectionData *selection_data, guint info, guint32 time,
+ SchematicView *sv)
+{
+ gchar **files;
+ GError *error = NULL;
+
+ /*
+ * Extract the filenames from the URI-list we recieved.
+ */
+
+ switch (info) {
+ case DRAG_PART_INFO:
+ part_browser_dnd (selection_data, x, y);
+ break;
+ case DRAG_URI_INFO:
+ files = g_strsplit (selection_data->data, "\n", -1);
+ if (files) {
+ int i=0;
+ while (files[i]) {
+ Schematic *new_sm = NULL;
+ int l = strlen(files[i]);
+ /* Algo queda mal al final luego del split, agrego un \0 */
+ files[i][l-1] = '\0';
+
+ if (l <= 0) {
+ /* Empty file name, ignore! */
+ i++;
+ continue;
+ }
+
+ gchar *fname = files[i];
+
+ new_sm = schematic_read (fname, &error);
+ if (new_sm) {
+ SchematicView *new_view;
+ new_view = schematic_view_new (new_sm);
+ if (new_view) {
+ gtk_widget_show_all (new_view->toplevel);
+ schematic_set_filename (new_sm, fname);
+ }
+ // schematic_set_title (new_sm, fname);
+ while (gtk_events_pending ()) /* Show something. */
+ gtk_main_iteration ();
+ }
+ i++;
+ }
+ }
+ }
+ gtk_drag_finish (context, TRUE, TRUE, time);
+}
+
+static void
+setup_rubberband (SchematicView *sv, GdkEventButton *event)
+{
+ double x, y;
+ double wx, wy;
+
+ x = event->x; //the x coordinate of the pointer relative to the window.
+ y = event->y; //the y coordinate of the pointer relative to the window.
+
+ /* Need this for zoomed views */
+ gnome_canvas_window_to_world (
+ GNOME_CANVAS (sv->priv->sheet),
+ x, y,
+ &wx, &wy
+ );
+ x = wx;
+ y = wy;
+
+ sv->priv->rubberband->start_x = x;
+ sv->priv->rubberband->start_y = y;
+
+ sv->priv->rubberband->state = RUBBER_YES;
+ sv->priv->rubberband->click_start_state = event->state;
+
+
+ sv->priv->rubberband->rectangle = gnome_canvas_item_new (
+ sv->priv->sheet->object_group,
+ gnome_canvas_rect_get_type (),
+ "x1", x,
+ "y1", y,
+ "x2", x,
+ "y2", y,
+ "outline_stipple", stipple,
+ "outline_color", "black",
+ "width_pixels", 1,
+ NULL);
+
+ gnome_canvas_item_grab (GNOME_CANVAS_ITEM (sv->priv->sheet->grid),
+ (GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK),
+ NULL, event->time);
+
+ /* Mark all the selected objects to preserve their selected state
+ * if SHIFT is pressed while rubberbanding.
+ */
+ if (event->state & GDK_SHIFT_MASK) {
+ GList *list;
+ for (list = sv->priv->sheet->priv->selected_objects; list;
+ list = list->next) {
+ sheet_item_set_preserve_selection (
+ SHEET_ITEM (list->data), TRUE);
+ }
+ /* Save the list so that we can remove the preserve_selection
+ flags later. */
+ sv->priv->preserve_selection_items =
+ g_list_copy (sv->priv->sheet->priv->selected_objects);
+ }
+
+ sv->priv->rubberband->timeout_id = gtk_timeout_add (
+ 15,
+ (gpointer) rubberband_timeout_cb,
+ (gpointer) sv);
+}
+
+static void
+stop_rubberband (SchematicView *sv, GdkEventButton *event)
+{
+ GList *list;
+
+ gtk_idle_remove (sv->priv->rubberband->timeout_id);
+ sv->priv->rubberband->state = RUBBER_NO;
+
+ if (sv->priv->preserve_selection_items != NULL) {
+ for (list = sv->priv->preserve_selection_items; list;
+ list = list->next)
+ sheet_item_set_preserve_selection (
+ SHEET_ITEM (list->data), FALSE);
+ g_list_free (sv->priv->preserve_selection_items);
+ sv->priv->preserve_selection_items = NULL;
+ }
+
+ gnome_canvas_item_ungrab (GNOME_CANVAS_ITEM (sv->priv->sheet->grid), event->time);
+ gtk_object_destroy (GTK_OBJECT (sv->priv->rubberband->rectangle));
+}
+
+static int
+rubberband_timeout_cb (SchematicView *sv)
+{
+ static double x1_old = 0, y1_old = 0, x2_old = 0, y2_old = 0;
+ int _x, _y;
+ double x, y;
+ double x1 = 0, y1 = 0, x2 = 0, y2 = 0;
+ double dx, dy, tx, ty;
+ GList *list;
+ SheetPos p1, p2;
+
+ /* Obtains the current pointer position and modifier state.
+ * The position is given in coordinates relative to window.
+ */
+ gdk_window_get_pointer (GTK_WIDGET (sv->priv->sheet)->window, &_x, &_y, NULL);
+
+ x = _x;
+ y = _y;
+
+ gnome_canvas_get_scroll_offsets (
+ GNOME_CANVAS (sv->priv->sheet),
+ &_x, &_y
+ );
+
+ x += _x;
+ y += _y;
+
+ /* Need this for zoomed views */
+ gnome_canvas_window_to_world (
+ GNOME_CANVAS (sv->priv->sheet),
+ x, y,
+ &tx, &ty
+ );
+ x = tx;
+ y = ty;
+
+ if (x < sv->priv->rubberband->start_x) {
+ x1 = x;
+ x2 = sv->priv->rubberband->start_x;
+ } else {
+ x1 = sv->priv->rubberband->start_x;
+ x2 = x;
+ }
+
+ if (y < sv->priv->rubberband->start_y) {
+ y1 = y;
+ y2 = sv->priv->rubberband->start_y;
+ } else {
+ y1 = sv->priv->rubberband->start_y;
+ y2 = y;
+ }
+
+
+ p1.x = x1;
+ p1.y = y1;
+ p2.x = x2;
+ p2.y = y2;
+
+ /*
+ * Scroll the sheet if needed.
+ */
+ /* Need FIX */
+ {
+ int width, height;
+ int dx = 0, dy = 0;
+
+ gdk_window_get_pointer (GTK_WIDGET (sv->priv->sheet)->window, &_x, &_y, NULL);
+
+ width = GTK_WIDGET (sv->priv->sheet)->allocation.width;
+ height = GTK_WIDGET (sv->priv->sheet)->allocation.height;
+
+ if (_x < 0)
+ dx = -1;
+ else if (_x > width)
+ dx = 1;
+
+ if (_y < 0)
+ dy = -1;
+ else if (_y > height)
+ dy = 1;
+
+ if (!(_x > 0 && _x < width && _y > 0 && _y < height))
+ sheet_scroll (sv->priv->sheet, dx * 5, dy * 5);
+ }
+
+ dx = fabs ((x1 - x2) - (x1_old - x2_old));
+ dy = fabs ((y1 - y2) - (y1_old - y2_old));
+ if (dx > 1.0 || dy > 1.0) {
+ /* Save old state */
+ x1_old = x1;
+ y1_old = y1;
+ x2_old = x2;
+ y2_old = y2;
+
+ for (list = sv->priv->items; list; list = list->next) {
+ sheet_item_select_in_area (list->data, &p1, &p2);
+ }
+
+ gnome_canvas_item_set (sv->priv->rubberband->rectangle,
+ "x1", (double) x1,
+ "y1", (double) y1,
+ "x2", (double) x2,
+ "y2", (double) y2,
+ NULL);
+ }
+
+ return TRUE;
+}
+
+static void
+set_tool (SchematicView *sv, SchematicTool tool)
+{
+ /*
+ * Switch from this tool...
+ */
+ switch (sv->priv->tool) {
+ case SCHEMATIC_TOOL_ARROW:
+ /*
+ * In case we are handling a floating object,
+ * cancel that so that we can change tool.
+ */
+ sheet_item_cancel_floating (sv);
+ break;
+ case SCHEMATIC_TOOL_WIRE:
+ if (sv->priv->create_wire_context) {
+ create_wire_exit (sv->priv->create_wire_context);
+ sv->priv->create_wire_context = NULL;
+ }
+ break;
+ case SCHEMATIC_TOOL_TEXT:
+ textbox_item_cancel_listen (sv);
+ break;
+ case SCHEMATIC_TOOL_PART:
+ sheet_item_cancel_floating (sv);
+ default:
+ break;
+ }
+
+ /*
+ * ...to this tool.
+ */
+ switch (tool) {
+ case SCHEMATIC_TOOL_ARROW:
+ cursor_set_widget (GTK_WIDGET (sv->priv->sheet), OREGANO_CURSOR_LEFT_PTR);
+ sv->priv->sheet->state = SHEET_STATE_NONE;
+ break;
+ case SCHEMATIC_TOOL_WIRE:
+ cursor_set_widget (GTK_WIDGET (sv->priv->sheet),
+ OREGANO_CURSOR_PENCIL);
+ sv->priv->sheet->state = SHEET_STATE_WIRE;
+ sv->priv->create_wire_context = create_wire_initiate (sv);
+ break;
+ case SCHEMATIC_TOOL_TEXT:
+ cursor_set_widget (GTK_WIDGET (sv->priv->sheet), OREGANO_CURSOR_CARET);
+ sv->priv->sheet->state = SHEET_STATE_TEXTBOX_WAIT;
+
+ textbox_item_listen (sv);
+ break;
+ case SCHEMATIC_TOOL_PART:
+ cursor_set_widget (GTK_WIDGET (sv->priv->sheet), OREGANO_CURSOR_LEFT_PTR);
+ default:
+ break;
+ }
+
+ sv->priv->tool = tool;
+}
+
+static void
+reset_tool_cb (Sheet *sheet, SchematicView *sv)
+{
+ set_tool (sv, SCHEMATIC_TOOL_ARROW);
+
+ gtk_radio_action_set_current_value (GTK_RADIO_ACTION (gtk_ui_manager_get_action (sv->priv->ui_manager, "/StandartToolbar/Arrow")), 0);
+}
+
+gpointer
+schematic_view_get_browser (SchematicView *sv)
+{
+ g_return_val_if_fail (sv != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC_VIEW (sv), NULL);
+
+ return sv->priv->browser;
+}
+
+void
+schematic_view_set_browser (SchematicView *sv, gpointer p)
+{
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ sv->priv->browser = p;
+}
+
+void
+schematic_view_delete_selection (SchematicView *sv)
+{
+ GList *list, *copy;
+ Sheet *sheet;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ sheet = sv->priv->sheet;
+
+ if (sheet->state != SHEET_STATE_NONE)
+ return;
+
+ copy = g_list_copy (sheet->priv->selected_objects);
+
+ for (list = copy; list; list = list->next) {
+ gtk_object_destroy(GTK_OBJECT(list->data));
+ }
+
+ g_list_free (copy);
+ g_list_free (sheet->priv->selected_objects);
+ sheet->priv->selected_objects = NULL;
+}
+
+static void
+rotate_items (SchematicView *sv, GList *items)
+{
+ GList *list, *item_data_list;
+ SheetPos center, b1, b2;
+ Sheet *sheet;
+
+ sheet = sv->priv->sheet;
+
+ item_data_list = NULL;
+ for (list = items; list; list = list->next) {
+ item_data_list = g_list_prepend (item_data_list,
+ sheet_item_get_data (list->data));
+ }
+
+ item_data_list_get_absolute_bbox (item_data_list, &b1, &b2);
+
+ center.x = (b2.x - b1.x) / 2 + b1.x;
+ center.y = (b2.y - b1.y) / 2 + b1.y;
+
+ snap_to_grid (sheet->grid, &center.x, &center.y);
+
+ for (list = item_data_list; list; list = list->next) {
+ ItemData *item_data = list->data;
+
+ if (sv->priv->sheet->state == SHEET_STATE_NONE)
+ item_data_unregister (item_data);
+
+ item_data_rotate (item_data, 90, &center);
+
+ if (sv->priv->sheet->state == SHEET_STATE_NONE)
+ item_data_register (item_data);
+ }
+
+ g_list_free (item_data_list);
+}
+
+void
+schematic_view_rotate_selection (SchematicView *sv)
+{
+ Sheet *sheet;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ sheet = sv->priv->sheet;
+
+ if (sheet->priv->selected_objects != NULL)
+ rotate_items (sv, sheet->priv->selected_objects);
+}
+
+void
+schematic_view_rotate_ghosts (SchematicView *sv)
+{
+ Sheet *sheet;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ sheet = sv->priv->sheet;
+
+ if (sheet->priv->floating_objects != NULL)
+ rotate_items (sv, sheet->priv->floating_objects);
+}
+
+static void
+flip_items (SchematicView *sv, GList *items, gboolean horizontal)
+{
+ GList *list, *item_data_list;
+ SheetPos center, b1, b2;
+ SheetPos after, delta;
+ Sheet *sheet;
+ gboolean got_first = FALSE;
+
+ sheet = sv->priv->sheet;
+
+ item_data_list = NULL;
+ for (list = items; list; list = list->next) {
+ item_data_list = g_list_prepend (item_data_list,
+ sheet_item_get_data (list->data));
+ }
+
+ item_data_list_get_absolute_bbox (item_data_list, &b1, &b2);
+
+ center.x = (b2.x - b1.x) / 2 + b1.x;
+ center.y = (b2.y - b1.y) / 2 + b1.y;
+
+ for (list = item_data_list; list; list = list->next) {
+ ItemData *item_data = list->data;
+
+ if (sv->priv->sheet->state == SHEET_STATE_NONE)
+ item_data_unregister (item_data);
+
+ item_data_flip (item_data, horizontal, &center);
+
+ /*
+ * Make sure we snap to grid.
+ */
+ if (!got_first) {
+ SheetPos off;
+
+ item_data_get_pos (item_data, &off);
+ item_data_get_pos (item_data, &after);
+
+ snap_to_grid (sheet->grid, &off.x, &off.y);
+
+ delta.x = off.x - after.x;
+ delta.y = off.y - after.y;
+
+ got_first = TRUE;
+ }
+ item_data_move (item_data, &delta);
+
+ if (sv->priv->sheet->state == SHEET_STATE_NONE)
+ item_data_register (item_data);
+ }
+
+ g_list_free (item_data_list);
+}
+
+void
+schematic_view_flip_selection (SchematicView *sv, gboolean horizontal)
+{
+ Sheet *sheet;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ sheet = sv->priv->sheet;
+
+ if (sheet->priv->selected_objects != NULL)
+ flip_items (sv, sheet->priv->selected_objects, horizontal);
+}
+
+void
+schematic_view_flip_ghosts (SchematicView *sv, gboolean horizontal)
+{
+ Sheet *sheet;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ sheet = sv->priv->sheet;
+
+ if (sheet->priv->floating_objects != NULL)
+ flip_items (sv, sheet->priv->floating_objects, horizontal);
+}
+
+GList *
+schematic_view_get_selection (SchematicView *sv)
+{
+ g_return_val_if_fail (sv != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC_VIEW (sv), NULL);
+
+ return sv->priv->sheet->priv->selected_objects;
+}
+
+GList *
+schematic_view_get_items (SchematicView *sv)
+{
+ g_return_val_if_fail (sv != NULL, NULL);
+ g_return_val_if_fail (IS_SCHEMATIC_VIEW (sv), NULL);
+
+ return sv->priv->items;
+}
+
+void
+schematic_view_clear_ghosts (SchematicView *sv)
+{
+ Sheet *sheet;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+ sheet = sv->priv->sheet;
+
+ if (sheet->priv->floating_objects == NULL) return;
+
+ g_assert (sheet->state != SHEET_STATE_FLOAT);
+
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM (sheet->priv->floating_group),
+ "x", 0.0, "y", 0.0, NULL);
+
+ /* FIXME: should destroy ghosts here. */
+ g_print("FIXME : Destroy ghosts here!\n");
+
+ g_list_free (sheet->priv->floating_objects);
+ sheet->priv->floating_objects = NULL;
+}
+
+void
+schematic_view_set_parent (SchematicView *sv, GtkDialog *dialog)
+{
+ /*gnome_dialog_set_parent (dialog, GTK_WINDOW (sv->toplevel));*/
+}
+
+void
+schematic_view_select_all (SchematicView *sv, gboolean select)
+{
+ Sheet *sheet;
+ GList *list;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ sheet = schematic_view_get_sheet (sv);
+
+ for (list = sv->priv->items; list; list = list->next)
+ sheet_item_select (SHEET_ITEM (list->data), select);
+
+ if (!select) {
+ g_list_free (sheet->priv->selected_objects);
+ sheet->priv->selected_objects = NULL;
+ }
+}
+
+static gboolean
+log_window_delete_event (GtkWidget *widget, GdkEvent *event, SchematicView *sv)
+{
+ sv->priv->log_window = NULL;
+ return FALSE;
+}
+
+static void
+log_window_destroy_event (GtkWidget *widget, SchematicView *sv)
+{
+ sv->priv->log_window = NULL;
+}
+
+static void
+log_window_close_cb (GtkWidget *widget, SchematicView *sv)
+{
+ gtk_widget_destroy (sv->priv->log_window);
+ sv->priv->log_window = NULL;
+}
+
+static void
+log_window_clear_cb (GtkWidget *widget, SchematicView *sv)
+{
+ GtkTextTagTable *tag;
+ GtkTextBuffer *buf;
+
+ tag = gtk_text_tag_table_new ();
+ buf = gtk_text_buffer_new (GTK_TEXT_TAG_TABLE (tag));
+
+ schematic_log_clear (sv->priv->schematic);
+
+ gtk_text_view_set_buffer (GTK_TEXT_VIEW (sv->priv->log_text),
+ GTK_TEXT_BUFFER (buf));
+}
+
+static void
+log_updated_callback (Schematic *sm, SchematicView *sv)
+{
+ schematic_view_log_show (sv, FALSE);
+}
+
+void
+schematic_view_log_show (SchematicView *sv, gboolean explicit)
+{
+ GtkWidget *w;
+ gchar *msg;
+ Schematic *sm;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ sm = schematic_view_get_schematic (sv);
+
+ if (sv->priv->log_window == NULL) {
+ /*
+ * Create the log window if not already done.
+ */
+
+ if (!explicit && !oregano.show_log)
+ return;
+
+ if (!g_file_test (OREGANO_GLADEDIR "/log-window.glade", G_FILE_TEST_EXISTS)) {
+ msg = g_strdup_printf (
+ _("The file %s could not be found. You might need to reinstall Oregano to fix this."),
+ OREGANO_GLADEDIR "/log-window.glade");
+
+ oregano_error_with_title ( _("Could not create the log window"), msg);
+ g_free (msg);
+ return;
+ }
+
+
+ sv->priv->log_gui = glade_xml_new (
+ OREGANO_GLADEDIR "/log-window.glade",
+ NULL, NULL);
+
+ if (!sv->priv->log_gui) {
+ oregano_error (_("Could not create the log window"));
+ return;
+ }
+
+ sv->priv->log_window = glade_xml_get_widget (sv->priv->log_gui,
+ "log-window");
+ sv->priv->log_text = GTK_TEXT_VIEW (
+ glade_xml_get_widget (sv->priv->log_gui,
+ "log-text"));
+
+ /* gtk_window_set_policy (GTK_WINDOW (sv->priv->log_window),
+ TRUE, TRUE, FALSE); */
+ gtk_window_set_default_size (GTK_WINDOW (sv->priv->log_window),
+ 500, 250);
+
+ /*
+ * Delete event.
+ */
+ g_signal_connect (
+ G_OBJECT (sv->priv->log_window), "delete_event",
+ G_CALLBACK (log_window_delete_event), sv);
+
+ g_signal_connect (
+ G_OBJECT (sv->priv->log_window), "destroy_event",
+ G_CALLBACK (log_window_destroy_event), sv);
+
+ w = glade_xml_get_widget (sv->priv->log_gui, "close-button");
+ g_signal_connect (G_OBJECT (w),
+ "clicked", G_CALLBACK (log_window_close_cb), sv);
+
+ w = glade_xml_get_widget (sv->priv->log_gui, "clear-button");
+ g_signal_connect (G_OBJECT (w),
+ "clicked", G_CALLBACK (log_window_clear_cb), sv);
+ g_signal_connect(G_OBJECT (sm),
+ "log_updated", G_CALLBACK(log_updated_callback), sv);
+ } else {
+ gdk_window_raise (sv->priv->log_window->window);
+ }
+
+ gtk_text_view_set_buffer (
+ sv->priv->log_text,
+ schematic_get_log_text (sm)
+ );
+
+
+ gtk_widget_show_all (sv->priv->log_window);
+}
+
+/** FIXME: only have one window for each schematic, not one per view. */
+gboolean
+schematic_view_log_window_exists (SchematicView *sv)
+{
+ if (sv->priv->log_window != NULL) {
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+}
+
+static guint
+dot_hash (gconstpointer key)
+{
+ SheetPos *sp = (SheetPos *) key;
+ int x, y;
+
+ x = (int)rint (sp->x) % 256;
+ y = (int)rint (sp->y) % 256;
+
+ return (y << 8) | x;
+}
+
+#define HASH_EPSILON 1e-2
+
+static int
+dot_equal (gconstpointer a, gconstpointer b)
+{
+ SheetPos *spa, *spb;
+
+ g_return_val_if_fail (a!=NULL, 0);
+ g_return_val_if_fail (b!=NULL, 0);
+
+ spa = (SheetPos *) a;
+ spb = (SheetPos *) b;
+
+ if (fabs (spa->y - spb->y) > HASH_EPSILON)
+ return 0;
+
+ if (fabs (spa->x - spb->x) > HASH_EPSILON)
+ return 0;
+
+ return 1;
+}
+
+#define OP_VALUE_FONT "-*-helvetica-medium-r-*-*-*-80-*-*-*-*-*-*"
+
+/**
+* Temporary hack to test the OP analysis visualization.
+* FIXME: solve similar to the connection dots.
+*/
+void
+schematic_view_show_op_values (SchematicView *sv, OreganoEngine *engine)
+{
+ GList *nodes, *list;
+ NodeStore *store;
+ Node *node;
+ GnomeCanvasItem *item, *group;
+ double value;
+ char *text, *tmp;
+ gboolean got;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+ g_return_if_fail (engine != NULL);
+
+ return;
+
+ store = schematic_get_store (sv->priv->schematic);
+
+ /*
+ * Iterate over the Nodes and find their resp. operation point.
+ */
+ nodes = node_store_get_nodes (store);
+ for (list = nodes; list; list = list->next) {
+ node = list->data;
+
+ got = 0; //sim_engine_get_op_value (engine, node->netlist_node_name, &value);
+ if (!got) {
+ tmp = g_strdup_printf ("V(%s)",
+ node->netlist_node_name);
+ //got = sim_engine_get_op_value (engine, tmp, &value);
+ } else
+ tmp = g_strdup (node->netlist_node_name);
+
+ if (got) {
+ /* Don't have more than one meter per node. */
+ if (g_hash_table_lookup (sv->priv->voltmeter_nodes,
+ tmp) != NULL)
+ continue;
+
+ g_hash_table_insert (sv->priv->voltmeter_nodes, tmp,
+ "there");
+
+ text = g_strdup_printf ("%.3f", value);
+
+ group = gnome_canvas_item_new (
+ gnome_canvas_root (
+ GNOME_CANVAS (sv->priv->sheet)),
+ gnome_canvas_group_get_type (),
+ "x", node->key.x - 20.0,
+ "y", node->key.y - 20.0,
+ NULL);
+
+ sv->priv->voltmeter_items = g_list_prepend (
+ sv->priv->voltmeter_items, group);
+
+ item = gnome_canvas_item_new (
+ GNOME_CANVAS_GROUP (group),
+ gnome_canvas_rect_get_type (),
+ "x1", 0.0,
+ "y1", 0.0,
+ "x2", 40.0,
+ "y2", 10.0,
+ "fill_color", "light gray",
+ "outline_color", "black",
+ NULL);
+
+ gnome_canvas_item_new (
+ GNOME_CANVAS_GROUP (group),
+ gnome_canvas_text_get_type (),
+ "x", 2.0,
+ "y", 1.0,
+ "anchor", GTK_ANCHOR_NW,
+ "text", text,
+ "fill_color", "black",
+ "font", OP_VALUE_FONT,
+ NULL);
+
+ g_free (text);
+ } else
+ g_free (tmp);
+
+ }
+
+ g_list_free (nodes);
+
+ schematic_view_show_voltmeters (sv, sv->priv->show_voltmeters);
+}
+
+void
+schematic_view_clear_op_values (SchematicView *sv)
+{
+ GList *list;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ for (list = sv->priv->voltmeter_items; list; list = list->next) {
+ gtk_object_destroy (GTK_OBJECT (list->data));
+ }
+
+ g_list_free (sv->priv->voltmeter_items);
+ sv->priv->voltmeter_items = NULL;
+
+ /* DONE (NOT TESTED): free the keys. - */
+ g_hash_table_destroy (sv->priv->voltmeter_nodes);
+ sv->priv->voltmeter_nodes = g_hash_table_new_full (g_str_hash,
+ g_str_equal, g_free, NULL);
+}
+
+static void
+schematic_view_show_voltmeters (SchematicView *sv, gboolean show)
+{
+ GList *list;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ for (list = sv->priv->voltmeter_items; list; list = list->next) {
+ if (show)
+ gnome_canvas_item_show (
+ GNOME_CANVAS_ITEM (list->data));
+ else
+ gnome_canvas_item_hide (
+ GNOME_CANVAS_ITEM (list->data));
+ }
+}
+
+void
+schematic_view_update_parts (SchematicView *sv)
+{
+ GList *list;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ for (list = sv->priv->items; list; list = list->next) {
+ if (IS_PART_ITEM (list->data))
+ part_item_update_node_label (PART_ITEM (list->data));
+ }
+}
+
diff --git a/src/schematic-view.h b/src/schematic-view.h
new file mode 100644
index 0000000..5d02156
--- /dev/null
+++ b/src/schematic-view.h
@@ -0,0 +1,127 @@
+/*
+ * schematic-view.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * This library 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 library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+#ifndef __SCHEMATIC_VIEW_H
+#define __SCHEMATIC_VIEW_H
+
+#include <gtk/gtk.h>
+#include "schematic.h"
+#include "sheet.h"
+
+typedef enum {
+ DRAG_URI_INFO,
+ DRAG_PART_INFO
+} DragTypes;
+
+#define TYPE_SCHEMATIC_VIEW (schematic_view_get_type ())
+#define SCHEMATIC_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SCHEMATIC_VIEW, SchematicView))
+#define SCHEMATIC_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SCHEMATIC_VIEW, SchematicViewClass))
+#define IS_SCHEMATIC_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SCHEMATIC_VIEW))
+#define IS_SCHEMATIC_VIEW_CLASS(klass) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SCHEMATIC_VIEW, SchematicViewClass))
+
+typedef struct _SchematicView SchematicView;
+typedef struct _SchematicViewClass SchematicViewClass;
+typedef struct _SchematicViewPriv SchematicViewPriv;
+
+struct _SchematicView
+{
+ GObject parent;
+
+ GtkWidget *toplevel;
+
+ gpointer corba_server;
+ SchematicViewPriv *priv;
+};
+
+struct _SchematicViewClass
+{
+ GObjectClass parent_class;
+
+ /* Signals go here */
+ void (*changed) (SchematicView *schematic_view);
+};
+
+
+GType schematic_view_get_type (void);
+void schematic_view_load (SchematicView *sv, Schematic *sm);
+SchematicView *schematic_view_new (Schematic *schematic);
+Sheet *schematic_view_get_sheet (SchematicView *sv);
+Schematic *schematic_view_get_schematic (SchematicView *sv);
+
+/*
+ * Signal emission wrappers.
+ */
+void schematic_view_reset_tool (SchematicView *sv);
+void schematic_view_cancel (SchematicView *sv);
+
+/*
+ * Misc.
+ */
+void schematic_view_set_browser (SchematicView *sv, gpointer p);
+gpointer schematic_view_get_browser (SchematicView *sv);
+void schematic_view_add_ghost_item (SchematicView *sv,
+ ItemData *data);
+void schematic_view_delete_selection (SchematicView *sv);
+void schematic_view_rotate_selection (SchematicView *sv);
+void schematic_view_rotate_ghosts (SchematicView *sv);
+void schematic_view_flip_selection (SchematicView *sv,
+ gboolean horizontal);
+void schematic_view_flip_ghosts (SchematicView *sv,
+ gboolean horizontal);
+GList * schematic_view_get_selection (SchematicView *sv);
+void schematic_view_clear_ghosts (SchematicView *sv);
+void schematic_view_set_parent (SchematicView *sv, GtkDialog *dialog);
+GList * schematic_view_get_items (SchematicView *sv);
+void schematic_view_select_all (SchematicView *sv, gboolean select);
+void schematic_view_update_parts (SchematicView *sv);
+/*
+ * Clipboard operations.
+ */
+void schematic_view_copy_selection (SchematicView *sv);
+void schematic_view_cut_selection (SchematicView *sv);
+void schematic_view_paste (SchematicView *sv);
+
+/*
+ * Logging.
+ */
+void schematic_view_log_show (SchematicView *sv, gboolean explicit);
+gboolean schematic_view_log_window_exists (SchematicView *sv);
+
+/*
+ * Voltmeter.
+ */
+/*
+void schematic_view_show_op_values (SchematicView *sv,
+ SimEngine *engine);
+*/
+
+void schematic_view_clear_op_values (SchematicView *sv);
+
+#endif /* __SCHEMATIC_VIEW_H */
+
diff --git a/src/settings.c b/src/settings.c
new file mode 100644
index 0000000..a5b1685
--- /dev/null
+++ b/src/settings.c
@@ -0,0 +1,274 @@
+/*
+ * settings.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <unistd.h>
+#include <glib.h>
+#include <gnome.h>
+#include <glade/glade.h>
+#include <stdio.h>
+#include "main.h"
+#include "string.h"
+#include "settings.h"
+#include "schematic.h"
+#include "schematic-view.h"
+#include "dialogs.h"
+#include "oregano-utils.h"
+#include "oregano-config.h"
+
+/* Engines Titles */
+static const gchar*
+engine[] = {
+ "gnucap",
+ "ngspice"
+};
+typedef struct {
+ Schematic *sm;
+ GtkWidget *pbox; /* Property box */
+
+ GtkWidget *w_show_splash;
+ GtkWidget *w_show_log;
+
+ GtkWidget *w_compress_files;
+ GtkWidget *w_engine;
+} Settings;
+#define SETTINGS(x) ((Settings*)(x))
+
+GtkWidget *engine_path;
+GtkWidget *button[2];
+static void
+change_modeldir_cb (GtkFileChooser *chooser, gpointer user_data)
+{
+ gchar *model_dir;
+
+ model_dir = gtk_file_chooser_get_uri (chooser);
+}
+
+static void
+change_librarydir_cb (GtkFileChooser *chooser, gpointer user_data)
+{
+ gchar *library_dir;
+
+ library_dir = gtk_file_chooser_get_uri (chooser);
+}
+
+static void
+change_engine_path_cb (GtkFileChooser *chooser,
+ gpointer user_data)
+{
+ gchar *engine_path;
+ gboolean has_changed = FALSE;
+ Settings *s;
+ s = SETTINGS (user_data);
+
+ int engine_id = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (s->w_engine), "id"));
+ engine_path = gtk_file_chooser_get_filename (chooser);
+}
+
+static void
+apply_callback (GtkWidget *w, Settings *s)
+{
+ oregano.engine = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (s->w_engine), "id"));
+ oregano.compress_files = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (s->w_compress_files));
+ oregano.show_log = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (s->w_show_log ));
+ oregano.show_splash = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (s->w_show_splash ));
+
+ oregano_config_save ();
+
+ gtk_widget_destroy (s->pbox);
+ s->pbox = NULL;
+}
+
+static gboolean
+delete_event_callback (GtkWidget *w, GdkEvent *event, Settings *s)
+{
+ apply_callback(w, s);
+}
+
+static void
+set_engine_name (GtkWidget *w, Settings *s)
+{
+ int engine_id;
+ s->w_engine = w;
+ engine_id = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (s->w_engine), "id"));
+ if (g_find_program_in_path (engine[engine_id]) != NULL) {
+ gtk_file_chooser_set_filename (GTK_FILE_CHOOSER(engine_path),
+ g_find_program_in_path (engine[engine_id]));
+ }
+ else
+ {
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button[engine_id])) ){
+ GString *msg = g_string_new(_("Engine <span weight=\"bold\" size=\"large\">"));
+ msg = g_string_append (msg, engine[engine_id]);
+ msg = g_string_append (msg, _("</span> not found\nThe engine is unable to locate the external program."));
+ oregano_warning_with_title (_("Warning"), msg->str);
+ g_string_free (msg, TRUE);
+ engine_id = (engine_id +1) % 2;
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button[engine_id]), TRUE);
+ }
+ else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button[engine_id]), FALSE);
+ }
+}
+
+gpointer
+settings_new (Schematic *sm)
+{
+ Settings *s;
+
+ s = g_new0 (Settings, 1);
+ s->sm = sm;
+
+ return s;
+}
+
+void
+settings_show (GtkWidget *widget, SchematicView *sv)
+{
+ gint i;
+ GtkWidget *engine_group = NULL;
+ GtkWidget *w, *pbox, *toplevel;
+ GtkWidget *w0;
+ GladeXML *gui = NULL;
+ Settings *s;
+ Schematic *sm;
+ int engine_id = oregano.engine;
+
+ gchar *fname, *library_dir, *model_dir;
+ struct dirent *libentry;
+ Library *library;
+
+ g_return_if_fail (sv != NULL);
+
+ sm = schematic_view_get_schematic (sv);
+ s = schematic_get_settings (sm);
+
+ /* Only allow one instance of the property box per schematic. */
+ if (GTK_WIDGET(SETTINGS (s)->pbox)){
+ gdk_window_raise (GTK_WIDGET (SETTINGS (s)->pbox)->window);
+ return;
+ }
+
+ if (!g_file_test (OREGANO_GLADEDIR "/settings.glade", G_FILE_TEST_EXISTS)) {
+ gchar *msg;
+ msg = g_strdup_printf (
+ _("The file %s could not be found. You might need to reinstall Oregano to fix this."),
+ OREGANO_GLADEDIR "/settings.glade");
+ oregano_error_with_title (_("Could not create settings dialog"), msg);
+ g_free (msg);
+ return;
+ }
+
+ gui = glade_xml_new (OREGANO_GLADEDIR "/settings.glade", NULL, NULL);
+ if (!gui) {
+ oregano_error (_("Could not create settings dialog"));
+ return;
+ }
+
+ w = toplevel = glade_xml_get_widget (gui, "toplevel");
+ if (!w) {
+ oregano_error (_("Could not create settings dialog"));
+ return;
+ }
+ g_signal_connect (G_OBJECT (w), "delete_event",
+ G_CALLBACK (delete_event_callback), s);
+
+ pbox = toplevel;
+ s->pbox = GTK_WIDGET (pbox);
+
+ w = glade_xml_get_widget (gui, "close_bt");
+ g_signal_connect (G_OBJECT (w), "clicked",
+ G_CALLBACK (apply_callback), s);
+
+ w = glade_xml_get_widget (gui, "splash-enable");
+ s->w_show_splash = w;
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), oregano.show_splash);
+
+ w = glade_xml_get_widget (gui, "compress-enable");
+ s->w_compress_files = w;
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w),
+ oregano.compress_files);
+
+ w = glade_xml_get_widget (gui, "log-enable");
+ s->w_show_log = w;
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), oregano.show_log);
+
+ w = glade_xml_get_widget (gui, "grid-size");
+ gtk_widget_set_sensitive (w, FALSE);
+ w = glade_xml_get_widget (gui, "realtime-enable");
+ gtk_widget_set_sensitive (w, FALSE);
+
+
+ w = glade_xml_get_widget (gui, "engine_table");
+ for (i = 0; i < OREGANO_ENGINE_COUNT; i++) {
+ OreganoEngine *engine;
+
+ if (engine_group)
+ button[i] = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (engine_group), engines[i]);
+ else
+ button[i] = engine_group = gtk_radio_button_new_with_label_from_widget (NULL, engines[i]);
+
+ /* Check if the engine is available */
+ g_object_set_data (G_OBJECT (button[i]), "id", GUINT_TO_POINTER (i));
+
+ gtk_table_attach (GTK_TABLE (w), button[i], 0, 1, i, i+1,
+ GTK_EXPAND|GTK_FILL, GTK_SHRINK, 6, 6);
+ g_signal_connect (G_OBJECT (button[i]), "clicked",
+ G_CALLBACK (set_engine_name), s);
+ s->w_engine = GINT_TO_POINTER (oregano.engine);
+
+ }
+ /* Libraries directory */
+ w = glade_xml_get_widget (gui, "library-path-entry");
+ gtk_file_chooser_set_action (GTK_FILE_CHOOSER(w),
+ GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
+ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER(w),
+ OREGANO_LIBRARYDIR);
+ g_signal_connect (G_OBJECT (w), "selection-changed",
+ G_CALLBACK (change_librarydir_cb), w0);
+
+ /* Models directory */
+
+ w = glade_xml_get_widget (gui, "model-path-entry");
+ gtk_file_chooser_set_action (GTK_FILE_CHOOSER(w),
+ GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
+ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER(w),
+ OREGANO_MODELDIR);
+ g_signal_connect (G_OBJECT (w), "selection-changed",
+ G_CALLBACK (change_modeldir_cb), w0);
+
+ /* Engine localisation */
+ engine_path = glade_xml_get_widget (gui, "engine-path");
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button[oregano.engine]), TRUE);
+ set_engine_name(button[oregano.engine], s);
+ g_signal_connect (G_OBJECT (engine_path), "file-set",
+ G_CALLBACK (change_engine_path_cb), s);
+
+
+ gtk_widget_show_all (toplevel);
+}
diff --git a/src/settings.h b/src/settings.h
new file mode 100644
index 0000000..bf36c49
--- /dev/null
+++ b/src/settings.h
@@ -0,0 +1,42 @@
+/*
+ * settings.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ *
+ * 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.
+ */
+#ifndef __SETTINGS_H
+#define __SETTINGS_H
+
+#include <gtk/gtk.h>
+#include "schematic.h"
+#include "schematic-view.h"
+#include "engine.h"
+
+void settings_show (GtkWidget *widget, SchematicView *sv);
+gpointer settings_new (Schematic *sm);
+
+#endif
diff --git a/src/sheet/Makefile.am b/src/sheet/Makefile.am
new file mode 100644
index 0000000..37291fc
--- /dev/null
+++ b/src/sheet/Makefile.am
@@ -0,0 +1,28 @@
+oreganodir = $(datadir)/oregano
+INCLUDES = \
+ $(OREGANO_CFLAGS) -I$(top_srcdir)/src -I$(top_srcdir)/src/model \
+ -DOREGANO_GLADEDIR=\""$(oreganodir)/glade"\" \
+ -DOREGANO_LIBRARYDIR=\""$(oreganodir)/libraries"\" \
+ -DOREGANO_MODELDIR=\""$(oreganodir)/models"\"
+
+noinst_LIBRARIES = libsheet.a
+
+libsheet_a_SOURCES = \
+ grid.c \
+ grid.h \
+ node-item.c \
+ node-item.h \
+ part-item.c \
+ part-item.h \
+ sheet.c \
+ sheet.h \
+ sheet-item.c \
+ sheet-item.h \
+ sheet-item-factory.c \
+ sheet-item-factory.h \
+ sheet-private.h \
+ textbox-item.c \
+ textbox-item.h \
+ wire-item.c \
+ wire-item.h
+libsheet_a_LIBADD = libsheet.a
diff --git a/src/sheet/grid.c b/src/sheet/grid.c
new file mode 100644
index 0000000..9a06ee7
--- /dev/null
+++ b/src/sheet/grid.c
@@ -0,0 +1,394 @@
+/*
+ * grid.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <math.h>
+#include "grid.h"
+#include "sheet-private.h"
+
+#define ROUND(x) (floor((x)+0.5))
+
+enum {
+ ARG_0,
+ ARG_COLOR,
+ ARG_SPACING,
+ ARG_SNAP
+};
+
+typedef struct {
+ guint snap : 1;
+ guint visible : 1;
+ GdkColor color;
+ gdouble spacing;
+ gdouble cached_zoom;
+ GdkGC *gc;
+} GridPriv;
+
+static void grid_class_init (GridClass *class);
+static void grid_init (Grid *grid);
+static void grid_destroy (GtkObject *object);
+static void grid_set_property (GObject *object, guint prop_id,
+ const GValue *value, GParamSpec *spec);
+static void grid_get_property (GObject *object, guint prop_id, GValue *value,
+ GParamSpec *spec);
+static void grid_update (GnomeCanvasItem *item, gdouble *affine,
+ ArtSVP *clip_path, gint flags);
+static void grid_realize (GnomeCanvasItem *item);
+static void grid_unrealize (GnomeCanvasItem *item);
+static void grid_draw (GnomeCanvasItem *grid, GdkDrawable *drawable,
+ gint x, gint y, gint width, gint height);
+static double grid_point (GnomeCanvasItem *item, gdouble x, gdouble y, gint cx,
+ gint cy, GnomeCanvasItem **actual_item);
+
+static GnomeCanvasItemClass *grid_parent_class;
+
+GType
+grid_get_type (void)
+{
+ static GType grid_type = 0;
+
+ if (!grid_type) {
+ static const GTypeInfo grid_info = {
+ sizeof (GridClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) grid_class_init,
+ NULL,
+ NULL,
+ sizeof (Grid),
+ 0,
+ (GInstanceInitFunc) grid_init,
+ NULL
+ };
+
+ grid_type = g_type_register_static(GNOME_TYPE_CANVAS_ITEM,
+ "Grid", &grid_info, 0);
+ }
+
+ return grid_type;
+}
+
+static void
+grid_class_init (GridClass *class)
+{
+ GObjectClass *object_class;
+ GtkObjectClass *gtk_object_class;
+ GnomeCanvasItemClass *item_class;
+
+ object_class = G_OBJECT_CLASS (class);
+ gtk_object_class = GTK_OBJECT_CLASS(class);
+ item_class = GNOME_CANVAS_ITEM_CLASS(class);
+
+ gtk_object_class->destroy = grid_destroy;
+
+ grid_parent_class = g_type_class_peek_parent (class);
+
+ object_class->set_property = grid_set_property;
+ object_class->get_property = grid_get_property;
+
+ g_object_class_install_property(
+ object_class,
+ ARG_COLOR,
+ g_param_spec_string("color", "Grid::color", "the color",
+ "black", G_PARAM_WRITABLE)
+ );
+ g_object_class_install_property(
+ object_class,
+ ARG_SPACING,
+ g_param_spec_double("spacing", "Grid::spacing",
+ "the grid spacing", 0.0f, 100.0f, 10.0f,
+ G_PARAM_READWRITE)
+ );
+ g_object_class_install_property(
+ object_class,
+ ARG_SNAP,
+ g_param_spec_boolean("snap", "Grid::snap", "snap to grid?",
+ TRUE,G_PARAM_READWRITE)
+ );
+
+ item_class->update = grid_update;
+ item_class->realize = grid_realize;
+ item_class->unrealize = grid_unrealize;
+ item_class->draw = grid_draw;
+ item_class->point = grid_point;
+}
+
+static void
+grid_init (Grid *grid)
+{
+ GridPriv *priv;
+
+ priv = g_new0 (GridPriv, 1);
+
+ grid->priv = priv;
+
+ priv->spacing = 10.0;
+ priv->snap = TRUE;
+ priv->visible = TRUE;
+}
+
+static void
+grid_destroy (GtkObject *object)
+{
+ Grid *grid;
+ GridPriv *priv;
+
+ grid = GRID (object);
+ priv = grid->priv;
+
+ if (GTK_OBJECT_CLASS(grid_parent_class)->destroy) {
+ GTK_OBJECT_CLASS(grid_parent_class)->destroy(object);
+ }
+}
+
+inline void
+snap_to_grid (Grid *grid, gdouble *x, gdouble *y)
+{
+ GridPriv *priv;
+ gdouble spacing;
+
+ priv = grid->priv;
+ spacing = priv->spacing;
+
+ if (priv->snap) {
+ if (x) *x = ROUND((*x) / spacing) * spacing;
+ if (y) *y = ROUND((*y) / spacing) * spacing;
+ }
+}
+
+static void
+grid_set_property (GObject *object, guint prop_id, const GValue *value,
+ GParamSpec *spec)
+{
+ GnomeCanvasItem *item;
+ Grid *grid;
+ GridPriv *priv;
+ GdkColor color;
+
+ item = GNOME_CANVAS_ITEM (object);
+ grid = GRID (object);
+ priv = grid->priv;
+
+ switch (prop_id){
+ case ARG_COLOR:
+ if (gnome_canvas_get_color (item->canvas,
+ g_value_get_string(value), &color)) {
+ priv->color = color;
+ } else {
+ color.pixel = 0;
+ priv->color = color;
+ }
+ if (priv->gc)
+ gdk_gc_set_foreground (priv->gc, &color);
+ break;
+
+ case ARG_SPACING:
+ priv->spacing = g_value_get_double(value);
+ break;
+
+ case ARG_SNAP:
+ priv->snap = g_value_get_boolean (value);
+ break;
+
+ default:
+ break;
+ }
+}
+
+static void
+grid_get_property (GObject *object, guint prop_id, GValue *value,
+ GParamSpec *spec)
+{
+ Grid *grid;
+ GridPriv *priv;
+
+ grid = GRID (object);
+ priv = grid->priv;
+
+ switch (prop_id){
+ case ARG_SPACING:
+ g_value_set_double(value, priv->spacing);
+ break;
+ case ARG_SNAP:
+ g_value_set_boolean(value, priv->snap);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(grid, prop_id, spec);
+ break;
+ }
+}
+
+void
+grid_show (Grid *grid, gboolean show)
+{
+ GridPriv *priv;
+
+ priv = grid->priv;
+
+ priv->visible = show;
+ gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (grid));
+}
+
+gint
+grid_is_snap (Grid *grid)
+{
+ GridPriv *priv;
+
+ priv = grid->priv;
+
+ return priv->snap;
+}
+
+gint
+grid_is_show (Grid *grid)
+{
+ GridPriv *priv;
+
+ priv = grid->priv;
+
+ return priv->visible;
+}
+
+void
+grid_snap (Grid *grid, gboolean snap)
+{
+ GridPriv *priv;
+
+ priv = grid->priv;
+
+ priv->snap = snap;
+}
+
+static void
+grid_update (GnomeCanvasItem *item, gdouble *affine, ArtSVP *clip_path,
+ gint flags)
+{
+ Grid *grid;
+ GridPriv *priv;
+
+ grid = GRID (item);
+
+ priv = grid->priv;
+
+ priv->cached_zoom = SHEET(item->canvas)->priv->zoom;
+
+ if (grid_parent_class->update)
+ (* grid_parent_class->update) (item, affine, clip_path, flags);
+
+ gdk_gc_set_foreground (priv->gc, &priv->color);
+ gnome_canvas_update_bbox (item, 0, 0, INT_MAX, INT_MAX);
+}
+
+static void
+grid_realize (GnomeCanvasItem *item)
+{
+ Grid *grid;
+ GridPriv *priv;
+
+ grid = GRID (item);
+
+ priv = grid->priv;
+
+ if (grid_parent_class->realize)
+ (* grid_parent_class->realize) (item);
+
+ priv->gc = gdk_gc_new (item->canvas->layout.bin_window);
+}
+
+static void
+grid_unrealize (GnomeCanvasItem *item)
+{
+ Grid *grid;
+ GridPriv *priv;
+
+ grid = GRID (item);
+ priv = grid->priv;
+
+ g_object_unref (priv->gc);
+
+ if (grid_parent_class->unrealize)
+ (* grid_parent_class->unrealize) (item);
+}
+
+inline static gint
+start_coord (long c, long g)
+{
+ long m;
+
+ if (c > 0){
+ m = c % g;
+ if (m == 0)
+ return m;
+ else
+ return g - m;
+ } else
+ return (-c) % g;
+}
+
+static void
+grid_draw (GnomeCanvasItem *canvas, GdkDrawable *drawable, gint x, gint y,
+ gint width, gint height)
+{
+ GridPriv *priv;
+ Grid *grid;
+ GdkGC *gc;
+ gdouble gx, gy, sgx, sgy;
+ gdouble spacing;
+
+ grid = GRID(canvas);
+ priv = grid->priv;
+
+ if (!priv->visible)
+ return;
+
+ spacing = priv->spacing * priv->cached_zoom * 10000;
+ gc = priv->gc;
+
+ sgx = start_coord (x * 10000, spacing) - spacing;
+ sgy = start_coord (y * 10000, spacing) - spacing;
+
+ for (gx = sgx; gx <= width * 10000; gx += spacing)
+ for (gy = sgy; gy <= height * 10000; gy += spacing) {
+ gdk_draw_point (drawable, gc, rint (gx/10000 + 0.45),
+ rint (gy/10000 + 0.45));
+ }
+}
+
+static double
+grid_point (GnomeCanvasItem *item, gdouble x, gdouble y, gint cx, gint cy,
+ GnomeCanvasItem **actual_item)
+{
+ /*
+ * The grid is everywhere. (That's a bug).
+ */
+ *actual_item = item;
+ return 0.0;
+}
+
diff --git a/src/sheet/grid.h b/src/sheet/grid.h
new file mode 100644
index 0000000..3835e9d
--- /dev/null
+++ b/src/sheet/grid.h
@@ -0,0 +1,61 @@
+/*
+ * grid.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __GRID_H
+#define __GRID_H
+
+#include <libgnomecanvas/gnome-canvas.h>
+
+#define GRID(obj) (G_TYPE_CHECK_INSTANCE_CAST (obj, grid_get_type (), Grid))
+#define GRID_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST (klass, grid_get_type (), GridClass))
+#define IS_GRID(obj) (G_TYPE_CHECK_INSTANCE_TYPE (obj, grid_get_type ()))
+
+typedef struct _Grid Grid;
+typedef struct _GridClass GridClass;
+
+struct _Grid {
+ GnomeCanvasItem item;
+
+ gpointer priv;
+};
+
+struct _GridClass {
+ GnomeCanvasItemClass parent_class;
+};
+
+GType grid_get_type (void);
+void snap_to_grid(Grid *grid, double *x, double *y);
+
+void grid_show (Grid *grid, gboolean snap);
+void grid_snap (Grid *grid, gboolean snap);
+gint grid_is_show (Grid *grid);
+gint grid_is_snap (Grid *grid);
+
+#endif
+
diff --git a/src/sheet/node-item.c b/src/sheet/node-item.c
new file mode 100644
index 0000000..a4319bf
--- /dev/null
+++ b/src/sheet/node-item.c
@@ -0,0 +1,112 @@
+/*
+ * node-item.c
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <gtk/gtk.h>
+#include <gnome.h>
+#include "node-item.h"
+
+static void node_item_init (NodeItem *item);
+static void node_item_class_init (NodeItemClass *klass);
+
+struct _NodeItemPriv {
+ GnomeCanvasItem *dot_item;
+};
+
+static GnomeCanvasGroupClass *parent_class = NULL;
+
+
+GType
+node_item_get_type (void)
+{
+ static GType item_type = 0;
+
+ if (!item_type)
+ {
+ static const GTypeInfo item_info =
+ {
+ sizeof (NodeItemClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) node_item_class_init,
+ NULL,
+ NULL,
+ sizeof (NodeItem),
+ 0,
+ (GInstanceInitFunc) node_item_init,
+ NULL
+ };
+
+ item_type = g_type_register_static(GNOME_TYPE_CANVAS_GROUP, "NodeItem",
+ &item_info, 0);
+ }
+
+ return item_type;
+}
+
+static void
+node_item_class_init (NodeItemClass *klass)
+{
+ GObjectClass *object_class;
+
+ object_class = G_OBJECT_CLASS(klass);
+
+ parent_class = g_type_class_peek_parent(klass);
+}
+
+
+static void
+node_item_init (NodeItem *item)
+{
+ item->priv = g_new0 (NodeItemPriv, 1);
+}
+
+void
+node_item_show_dot (NodeItem *item, gboolean show)
+{
+ g_return_if_fail (item != NULL);
+ g_return_if_fail (IS_NODE_ITEM (item));
+
+ if (show) {
+ if (item->priv->dot_item == NULL) {
+ item->priv->dot_item = gnome_canvas_item_new (
+ GNOME_CANVAS_GROUP (item),
+ gnome_canvas_ellipse_get_type (),
+ "x1", -2.0,
+ "y1", -2.0,
+ "x2", 2.0,
+ "y2", 2.0,
+ "fill_color", "black",
+ NULL);
+ }
+
+ gnome_canvas_item_show (item->priv->dot_item);
+ } else {
+ if (item->priv->dot_item != NULL)
+ gnome_canvas_item_hide (item->priv->dot_item);
+ }
+} \ No newline at end of file
diff --git a/src/sheet/node-item.h b/src/sheet/node-item.h
new file mode 100644
index 0000000..141c72c
--- /dev/null
+++ b/src/sheet/node-item.h
@@ -0,0 +1,64 @@
+/*
+ *
+ * node-item.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __NODE_ITEM_H__
+#define __NODE_ITEM_H__
+
+#include <gtk/gtk.h>
+#include <gnome.h>
+
+#define TYPE_NODE_ITEM (node_item_get_type ())
+#define NODE_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_NODE_ITEM, NodeItem))
+#define NODE_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_NODE_ITEM, NodeItemClass))
+#define IS_NODE_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_NODE_ITEM))
+#define IS_NODE_ITEM_CLASS(klass) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_NODE_ITEM, NodeItemClass))
+
+
+typedef struct _NodeItem NodeItem;
+typedef struct _NodeItemClass NodeItemClass;
+typedef struct _NodeItemPriv NodeItemPriv;
+
+struct _NodeItem
+{
+ GnomeCanvasGroup parent;
+ NodeItemPriv *priv;
+};
+
+struct _NodeItemClass
+{
+ GnomeCanvasGroupClass parent_class;
+};
+
+
+GType node_item_get_type (void);
+GtkWidget *node_item_new (void);
+void node_item_show_dot (NodeItem *item, gboolean show);
+
+#endif /* __NODE_ITEM_H__ */
diff --git a/src/sheet/part-item.c b/src/sheet/part-item.c
new file mode 100644
index 0000000..cdad022
--- /dev/null
+++ b/src/sheet/part-item.c
@@ -0,0 +1,1632 @@
+/*
+ * part-item.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <glade/glade.h>
+#include <math.h>
+#include <string.h>
+#include "main.h"
+#include "schematic-view.h"
+#include "sheet-private.h"
+#include "sheet-item.h"
+#include "part-item.h"
+#include "part-private.h"
+#include "part-property.h"
+#include "load-library.h"
+#include "load-common.h"
+#include "part-label.h"
+#include "stock.h"
+#include "dialogs.h"
+
+
+#define NORMAL_COLOR "red"
+#define LABEL_COLOR "dark cyan"
+#define SELECTED_COLOR "green"
+#define O_DEBUG 0
+
+static void part_item_class_init(PartItemClass *klass);
+static void part_item_init(PartItem *gspart);
+static void part_item_destroy(GtkObject *object);
+static void part_item_moved(SheetItem *sheet_item);
+
+static void edit_properties (SheetItem *object);
+
+static void selection_changed (PartItem *item, gboolean select,
+ gpointer user_data);
+static int select_idle_callback (PartItem *item);
+static int deselect_idle_callback (PartItem *item);
+
+static void update_canvas_labels (PartItem *part_item);
+
+static gboolean is_in_area (SheetItem *object, SheetPos *p1, SheetPos *p2);
+inline static void get_cached_bounds (PartItem *item, SheetPos *p1,
+ SheetPos *p2);
+static void show_labels (SheetItem *sheet_item, gboolean show);
+static void part_item_paste (SchematicView *sv, ItemData *data);
+
+static void part_rotated_callback (ItemData *data, int angle, SheetItem *item);
+static void part_flipped_callback (ItemData *data, gboolean horizontal,
+ SheetItem *sheet_item);
+
+static void part_moved_callback (ItemData *data, SheetPos *pos,
+ SheetItem *item);
+
+static void part_item_place (SheetItem *item, SchematicView *sv);
+static void part_item_place_ghost (SheetItem *item, SchematicView *sv);
+
+static void create_canvas_items (GnomeCanvasGroup *group,
+ LibraryPart *library_part);
+static void create_canvas_labels (PartItem *item, Part *part);
+static void create_canvas_label_nodes (PartItem *item, Part *part);
+
+static void part_item_get_property (GObject *object, guint prop_id,
+ GValue *value, GParamSpec *spec);
+static void part_item_set_property (GObject *object, guint prop_id,
+ const GValue *value, GParamSpec *spec);
+
+enum {
+ ARG_0,
+ ARG_NAME,
+ ARG_SYMNAME,
+ ARG_LIBNAME,
+ ARG_REFDES,
+ ARG_TEMPLATE,
+ ARG_MODEL
+};
+
+struct _PartItemPriv {
+ guint cache_valid : 1;
+ guint highlight : 1;
+
+ GnomeCanvasGroup *label_group;
+ GSList *label_items;
+
+ GnomeCanvasGroup *node_group;
+ GSList *label_nodes;
+
+ /*
+ * Cached bounding box. This is used to make
+ * the rubberband selection a bit faster.
+ */
+ SheetPos bbox_start;
+ SheetPos bbox_end;
+};
+
+typedef struct {
+ GtkDialog *dialog;
+ PartItem *part_item;
+
+ /* List of GtkEntry's */
+ GList *widgets;
+} PartPropDialog;
+
+static PartPropDialog *prop_dialog = NULL;
+static SheetItemClass *parent_class = NULL;
+
+static const char *part_item_context_menu =
+"<ui>"
+" <popup name='ItemMenu'>"
+" <menuitem action='ObjectProperties'/>"
+" </popup>"
+"</ui>";
+static GtkActionEntry action_entries[] = {
+ {"ObjectProperties", GTK_STOCK_PROPERTIES, N_("_Object Properties..."), NULL, N_("Modify the object's properties"), NULL}//G_CALLBACK (object_properties_cmd)}
+};
+
+enum {
+ ANCHOR_NORTH,
+ ANCHOR_SOUTH,
+ ANCHOR_WEST,
+ ANCHOR_EAST
+};
+
+GtkAnchorType part_item_get_anchor_from_part (Part *part)
+{
+ int anchor_h, anchor_v;
+ int angle;
+ IDFlip flip;
+
+ flip = part_get_flip (part);
+ angle = part_get_rotation (part);
+
+ switch (angle) {
+ case 0:
+ anchor_h = ANCHOR_SOUTH;
+ anchor_v = ANCHOR_WEST;
+ break;
+ case 90:
+ anchor_h = ANCHOR_NORTH;
+ anchor_v = ANCHOR_WEST;
+ /* Invert Rotation */
+ if (flip & ID_FLIP_HORIZ)
+ flip = ID_FLIP_VERT;
+ else if (flip & ID_FLIP_VERT)
+ flip = ID_FLIP_HORIZ;
+ break;
+ }
+
+ if (flip & ID_FLIP_HORIZ) {
+ anchor_v = ANCHOR_EAST;
+ }
+ if (flip & ID_FLIP_VERT) {
+ anchor_h = ANCHOR_NORTH;
+ }
+
+ if ((anchor_v == ANCHOR_EAST) && (anchor_h == ANCHOR_NORTH))
+ return GTK_ANCHOR_NORTH_EAST;
+ if ((anchor_v == ANCHOR_WEST) && (anchor_h == ANCHOR_NORTH))
+ return GTK_ANCHOR_NORTH_WEST;
+ if ((anchor_v == ANCHOR_WEST) && (anchor_h == ANCHOR_SOUTH))
+ return GTK_ANCHOR_SOUTH_WEST;
+
+ return GTK_ANCHOR_SOUTH_EAST;
+}
+
+GType
+part_item_get_type ()
+{
+ static GType part_item_type = 0;
+
+ if (!part_item_type) {
+ static const GTypeInfo part_item_info = {
+ sizeof(PartItemClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) part_item_class_init,
+ NULL,
+ NULL,
+ sizeof (PartItem),
+ 0,
+ (GInstanceInitFunc) part_item_init,
+ NULL
+ };
+ part_item_type = g_type_register_static(TYPE_SHEET_ITEM,
+ "PartItem", &part_item_info, 0);
+ }
+ return part_item_type;
+}
+
+static void
+part_item_class_init (PartItemClass *part_item_class)
+{
+ GObjectClass *object_class;
+ GtkObjectClass *gtk_object_class;
+ SheetItemClass *sheet_item_class;
+
+ object_class = G_OBJECT_CLASS(part_item_class);
+ gtk_object_class = GTK_OBJECT_CLASS(part_item_class);
+ sheet_item_class = SHEET_ITEM_CLASS(part_item_class);
+ parent_class = g_type_class_peek_parent(part_item_class);
+
+ object_class->set_property = part_item_set_property;
+ object_class->get_property = part_item_get_property;
+
+ g_object_class_install_property (
+ object_class,
+ ARG_NAME,
+ g_param_spec_pointer ("name",
+ "PartItem::name",
+ "name",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+ g_object_class_install_property (
+ object_class,
+ ARG_SYMNAME,
+ g_param_spec_pointer ("symbol_name",
+ "PartItem::symbol_name",
+ "symbol name",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+ g_object_class_install_property (
+ object_class,
+ ARG_REFDES,
+ g_param_spec_pointer ("refdes",
+ "PartItem::refdes",
+ "refdes",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+ g_object_class_install_property (
+ object_class,
+ ARG_LIBNAME,
+ g_param_spec_pointer ("library_name",
+ "PartItem::library_name",
+ "library_name",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+ g_object_class_install_property (
+ object_class,
+ ARG_TEMPLATE,
+ g_param_spec_pointer ("template",
+ "PartItem::template",
+ "template",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+ g_object_class_install_property (
+ object_class,
+ ARG_MODEL,
+ g_param_spec_pointer ("model",
+ "PartItem::model",
+ "model",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ gtk_object_class->destroy = part_item_destroy;
+
+ sheet_item_class->moved = part_item_moved;
+ sheet_item_class->is_in_area = is_in_area;
+ sheet_item_class->show_labels = show_labels;
+ sheet_item_class->paste = part_item_paste;
+ sheet_item_class->edit_properties = edit_properties;
+ sheet_item_class->selection_changed = (gpointer) selection_changed;
+
+ sheet_item_class->place = part_item_place;
+ sheet_item_class->place_ghost = part_item_place_ghost;
+}
+
+static void
+part_item_init (PartItem *item)
+{
+ PartItemPriv *priv;
+
+ priv = g_new0 (PartItemPriv, 1);
+
+ priv->highlight = FALSE;
+ priv->cache_valid = FALSE;
+
+ item->priv = priv;
+
+ sheet_item_add_menu (SHEET_ITEM (item), part_item_context_menu,
+ action_entries, G_N_ELEMENTS (action_entries));
+}
+
+static void
+part_item_set_property (GObject *object, guint propety_id, const GValue *value,
+ GParamSpec *pspec)
+{
+ PartItem *part_item;
+ PartItemPriv *priv;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (IS_PART_ITEM(object));
+
+ part_item = PART_ITEM(object);
+ priv = part_item->priv;
+}
+
+static void
+part_item_get_property (GObject *object, guint propety_id, GValue *value,
+ GParamSpec *pspec)
+{
+ PartItem *part_item;
+ PartItemPriv *priv;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (IS_PART_ITEM (object));
+
+ part_item = PART_ITEM (object);
+ priv = part_item->priv;
+}
+
+static void
+part_item_destroy(GtkObject *object)
+{
+ PartItem *item;
+ PartItemPriv *priv;
+ /*
+ * Unused variable
+ Part *part;
+ */
+ ArtPoint *old;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (IS_PART_ITEM (object));
+
+ /*
+ * Free the stored coordinate that lets us rotate circles.
+ */
+ old = g_object_get_data(G_OBJECT(object), "hack");
+ if (old)
+ g_free (old);
+
+ item = PART_ITEM (object);
+ priv = item->priv;
+
+ if (priv) {
+ if (priv->label_group) {
+ /* GnomeCanvasGroups utiliza GtkObject todavia */
+ gtk_object_destroy(GTK_OBJECT(priv->label_group));
+ priv->label_group = NULL;
+ }
+
+ g_free (priv);
+ item->priv = NULL;
+ }
+
+ if (GTK_OBJECT_CLASS (parent_class)->destroy) {
+ GTK_OBJECT_CLASS (parent_class)->destroy(object);
+ }
+}
+
+static void
+part_item_set_label_items (PartItem *item, GSList *item_list)
+{
+ PartItemPriv *priv;
+
+ g_return_if_fail (item != NULL);
+ g_return_if_fail (IS_PART_ITEM (item));
+
+ priv = item->priv;
+
+ if (priv->label_items)
+ g_slist_free (priv->label_items);
+
+ priv->label_items = item_list;
+}
+
+/*
+ * part_item_moved
+ *
+ * "moved" signal handler. Invalidates the bounding box cache.
+ */
+static void
+part_item_moved (SheetItem *sheet_item)
+{
+ PartItem *part_item;
+
+ part_item = PART_ITEM (sheet_item);
+ part_item->priv->cache_valid = FALSE;
+}
+
+PartItem *
+part_item_new (Sheet *sheet, Part *part)
+{
+ PartItem *item;
+ PartItemPriv *priv;
+
+ g_return_val_if_fail(sheet != NULL, NULL);
+ g_return_val_if_fail(IS_SHEET (sheet), NULL);
+ g_return_val_if_fail(part != NULL, NULL);
+ g_return_val_if_fail(IS_PART (part), NULL);
+
+ item = PART_ITEM(gnome_canvas_item_new(
+ sheet->object_group,
+ TYPE_PART_ITEM,
+ "data", part,
+ NULL));
+
+ priv = item->priv;
+
+ priv->label_group = GNOME_CANVAS_GROUP(gnome_canvas_item_new(
+ GNOME_CANVAS_GROUP(item),
+ GNOME_TYPE_CANVAS_GROUP,
+ "x", 0.0,
+ "y", 0.0,
+ NULL));
+
+ priv->node_group = GNOME_CANVAS_GROUP(gnome_canvas_item_new(
+ GNOME_CANVAS_GROUP(item),
+ GNOME_TYPE_CANVAS_GROUP,
+ "x", 0.0,
+ "y", 0.0,
+ NULL));
+
+ gnome_canvas_item_hide (GNOME_CANVAS_ITEM (priv->node_group));
+
+ g_signal_connect_object(G_OBJECT(part),
+ "rotated",
+ G_CALLBACK (part_rotated_callback),
+ G_OBJECT(item),
+ 0);
+ g_signal_connect_object(G_OBJECT(part),
+ "flipped",
+ G_CALLBACK(part_flipped_callback),
+ G_OBJECT(item),
+ 0);
+ g_signal_connect_object(G_OBJECT(part),
+ "moved",
+ G_CALLBACK(part_moved_callback),
+ G_OBJECT(item),
+ 0);
+
+ return item;
+}
+
+static void
+update_canvas_labels (PartItem *item)
+{
+ PartItemPriv *priv;
+ Part *part;
+ GSList *labels, *label_items;
+ GnomeCanvasItem *canvas_item;
+
+ g_return_if_fail(item != NULL);
+ g_return_if_fail(IS_PART_ITEM (item));
+
+ priv = item->priv;
+ part = PART(sheet_item_get_data(SHEET_ITEM(item)));
+
+ label_items = priv->label_items;
+
+ /* Put the label of each item */
+ for (labels = part_get_labels (part); labels;
+ labels = labels->next, label_items = label_items->next) {
+ char *text;
+ PartLabel *label = (PartLabel*) labels->data;
+ g_assert (label_items != NULL);
+ canvas_item = label_items->data;
+
+ text = part_property_expand_macros (part, label->text);
+ gnome_canvas_item_set (canvas_item, "text", text, NULL);
+ g_free (text);
+ }
+}
+
+void
+part_item_update_node_label (PartItem *item)
+{
+ PartItemPriv *priv;
+ Part *part;
+ GSList *labels;
+ GnomeCanvasItem *canvas_item;
+ Pin *pins;
+ gint num_pins, i;
+
+
+ g_return_if_fail(item != NULL);
+ g_return_if_fail(IS_PART_ITEM (item));
+ priv = item->priv;
+ part = PART(sheet_item_get_data(SHEET_ITEM(item)));
+
+ g_return_if_fail( IS_PART(part) );
+
+ /* Put the label of each node */
+ num_pins = part_get_num_pins(part);
+ pins = part_get_pins(part);
+ labels = priv->label_nodes;
+ for (i=0; i<num_pins; i++, labels=labels->next) {
+ int x, y;
+ char *txt;
+ x = pins[i].offset.x;
+ y = pins[i].offset.y;
+
+ txt = g_strdup_printf("%d", pins[i].node_nr);
+ canvas_item = labels->data;
+ gnome_canvas_item_set (canvas_item, "text", txt, NULL);
+
+ g_free(txt);
+ }
+}
+
+static void
+prop_dialog_destroy (GtkWidget *widget, PartPropDialog *prop_dialog)
+{
+ g_free (prop_dialog);
+}
+
+static void
+prop_dialog_response(GtkWidget *dialog, gint response,
+ PartPropDialog *prop_dialog)
+{
+ GSList *props;
+ GList *widget;
+ Property *prop;
+ PartItem *item;
+ PartItemPriv *priv;
+ Part *part;
+ gchar *prop_name;
+ const gchar *prop_value;
+ GtkWidget *w;
+
+ item = prop_dialog->part_item;
+
+ priv = item->priv;
+ part = PART (sheet_item_get_data (SHEET_ITEM (item)));
+
+ for (widget = prop_dialog->widgets; widget;
+ widget = widget->next) {
+ w = widget->data;
+
+ prop_name = g_object_get_data (G_OBJECT (w), "user");
+ prop_value = gtk_entry_get_text (GTK_ENTRY (w));
+
+ for (props = part_get_properties (part); props; props = props->next) {
+ prop = props->data;
+ if (g_strcasecmp (prop->name, prop_name) == 0) {
+ if (prop->value) g_free (prop->value);
+ prop->value = g_strdup (prop_value);
+ }
+ }
+ g_free (prop_name);
+ }
+
+ update_canvas_labels (item);
+}
+
+static void
+edit_properties_point (PartItem *item)
+{
+ GSList *properties;
+ PartItemPriv *priv;
+ Part *part;
+ char *msg;
+ GladeXML *gui;
+ GtkRadioButton *radio_v, *radio_c;
+ GtkRadioButton *ac_r, *ac_m, *ac_i, *ac_p;
+ GtkCheckButton *chk_db;
+ gint response;
+
+ priv = item->priv;
+ part = PART (sheet_item_get_data (SHEET_ITEM (item)));
+
+ if (!g_file_test(
+ OREGANO_GLADEDIR "/clamp-properties-dialog.glade",
+ G_FILE_TEST_EXISTS)) {
+ msg = g_strdup_printf (
+ _("The file %s could not be found. You might need to reinstall Oregano to fix this."),
+ OREGANO_GLADEDIR "/clamp-properties-dialog.glade");
+ oregano_error_with_title (_("Could not create part properties dialog."), msg);
+ g_free (msg);
+ return;
+ }
+
+ gui = glade_xml_new (OREGANO_GLADEDIR "/clamp-properties-dialog.glade",
+ NULL, NULL);
+ if (!gui) {
+ oregano_error (_("Could not create part properties dialog."));
+ return;
+ }
+
+ prop_dialog = g_new0 (PartPropDialog, 1);
+
+ prop_dialog->part_item = item;
+
+ prop_dialog->dialog = GTK_DIALOG (glade_xml_get_widget (gui, "clamp-properties-dialog"));
+ gtk_dialog_set_has_separator (prop_dialog->dialog, FALSE);
+
+ radio_v = GTK_RADIO_BUTTON (glade_xml_get_widget (gui, "radio_v"));
+ radio_c = GTK_RADIO_BUTTON (glade_xml_get_widget (gui, "radio_c"));
+
+ /* FIXME: Deactivated up to finalisation of the analysis by the backend */
+ gtk_widget_set_sensitive (GTK_WIDGET (radio_c), FALSE);
+
+ ac_r = GTK_RADIO_BUTTON (glade_xml_get_widget (gui, "radio_r"));
+ ac_m = GTK_RADIO_BUTTON (glade_xml_get_widget (gui, "radio_m"));
+ ac_p = GTK_RADIO_BUTTON (glade_xml_get_widget (gui, "radio_p"));
+ ac_i = GTK_RADIO_BUTTON (glade_xml_get_widget (gui, "radio_i"));
+
+ chk_db = GTK_CHECK_BUTTON (glade_xml_get_widget (gui, "check_db"));
+
+ /* Setup GUI from properties */
+ for (properties = part_get_properties (part); properties;
+ properties = properties->next) {
+ Property *prop;
+ prop = properties->data;
+ if (prop->name) {
+ if (!g_strcasecmp (prop->name, "internal"))
+ continue;
+
+ if (!g_strcasecmp (prop->name, "type")) {
+ if (!g_strcasecmp (prop->value, "v")) {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_v), TRUE);
+ } else {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_c), TRUE);
+ }
+ } else if (!g_strcasecmp (prop->name, "ac_type")) {
+ if (!g_strcasecmp (prop->value, "m")) {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ac_m), TRUE);
+ } else if (!g_strcasecmp (prop->value, "i")) {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ac_i), TRUE);
+ } else if (!g_strcasecmp (prop->value, "p")) {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ac_p), TRUE);
+ } else if (!g_strcasecmp (prop->value, "r")) {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ac_r), TRUE);
+ }
+ } else if (!g_strcasecmp (prop->name, "ac_db")) {
+ if (!g_strcasecmp (prop->value, "true"))
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (chk_db), TRUE);
+ }
+ }
+ }
+
+ response = gtk_dialog_run(prop_dialog->dialog);
+
+ /* Save properties from GUI */
+ for (properties = part_get_properties (part); properties;
+ properties = properties->next) {
+ Property *prop;
+ prop = properties->data;
+
+ if (prop->name) {
+ if (!g_strcasecmp (prop->name, "internal"))
+ continue;
+
+ if (!g_strcasecmp (prop->name, "type")) {
+ g_free (prop->value);
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (radio_v))) {
+ prop->value = g_strdup ("v");
+ } else {
+ prop->value = g_strdup ("i");
+ }
+ } else if (!g_strcasecmp (prop->name, "ac_type")) {
+ g_free (prop->value);
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ac_m))) {
+ prop->value = g_strdup ("m");
+ } else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ac_i))) {
+ prop->value = g_strdup ("i");
+ } else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ac_p))) {
+ prop->value = g_strdup ("p");
+ } else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ac_r))) {
+ prop->value = g_strdup ("r");
+ }
+ } else if (!g_strcasecmp (prop->name, "ac_db")) {
+ g_free (prop->value);
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (chk_db)))
+ prop->value = g_strdup ("true");
+ else
+ prop->value = g_strdup ("false");
+ }
+ }
+ }
+
+ gtk_widget_destroy (GTK_WIDGET (prop_dialog->dialog));
+}
+
+static void
+edit_properties (SheetItem *object)
+{
+ GSList *properties;
+ PartItem *item;
+ PartItemPriv *priv;
+ Part *part;
+ char *internal, *msg;
+ GladeXML *gui;
+ GtkTable *prop_table;
+ GtkNotebook *notebook;
+ gint response, y = 0;
+ gboolean has_model;
+ gchar *model_name = NULL;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (IS_PART_ITEM (object));
+
+ item = PART_ITEM (object);
+ priv = item->priv;
+ part = PART (sheet_item_get_data (SHEET_ITEM (item)));
+
+ internal = part_get_property (part, "internal");
+ if (internal) {
+ if (g_strcasecmp (internal, "ground") == 0) {
+ g_free (internal);
+ return;
+ }
+ /* Hack!! */
+ if (g_strcasecmp (internal, "point") == 0) {
+ edit_properties_point (item);
+ return;
+ }
+ }
+
+ g_free (internal);
+
+ if (!g_file_test(
+ OREGANO_GLADEDIR "/part-properties-dialog.glade",
+ G_FILE_TEST_EXISTS)) {
+ msg = g_strdup_printf (
+ _("The file %s could not be found. You might need to reinstall Oregano to fix this."),
+ OREGANO_GLADEDIR "/part-properties-dialog.glade");
+ oregano_error_with_title (_("Could not create part properties dialog."), msg);
+ g_free (msg);
+ return;
+ }
+
+ gui = glade_xml_new (OREGANO_GLADEDIR "/part-properties-dialog.glade",
+ NULL, NULL);
+ if (!gui) {
+ oregano_error (_("Could not create part properties dialog."));
+ return;
+ }
+
+ prop_dialog = g_new0 (PartPropDialog, 1);
+
+ prop_dialog->part_item = item;
+
+ prop_dialog->dialog = GTK_DIALOG ( glade_xml_get_widget (gui, "part-properties-dialog"));
+
+ prop_table = GTK_TABLE (glade_xml_get_widget (gui, "prop_table"));
+ notebook = GTK_NOTEBOOK (glade_xml_get_widget (gui, "notebook"));
+
+ g_signal_connect (prop_dialog->dialog, "destroy",
+ (GCallback) prop_dialog_destroy, prop_dialog);
+
+ prop_dialog->widgets = NULL;
+ has_model = FALSE;
+ for (properties = part_get_properties (part); properties;
+ properties = properties->next) {
+ Property *prop;
+
+ prop = properties->data;
+ if (prop->name) {
+ GtkWidget *entry;
+ GtkWidget *label;
+ gchar *temp=NULL;
+
+ if (!g_strcasecmp (prop->name, "internal"))
+ continue;
+
+ if (!g_strcasecmp (prop->name, "model")) {
+ has_model = TRUE;
+ model_name = g_strdup (prop->value);
+ }
+
+
+ /* Find the Refdes and replace by their real value */
+ temp = prop->name;
+ if (!g_ascii_strcasecmp (temp, "Refdes")) temp = _("Designation");
+ if (!g_ascii_strcasecmp (temp, "Template")) temp = _("Template");
+ if (!g_ascii_strcasecmp (temp, "Res")) temp = _("Resistor");
+ if (!g_ascii_strcasecmp (temp, "Cap")) temp = _("Capacitor");
+ if (!g_ascii_strcasecmp (temp, "Ind")) temp = _("Inductor");
+ label = gtk_label_new (temp);
+ entry = gtk_entry_new ();
+ gtk_entry_set_text (GTK_ENTRY (entry), prop->value);
+ g_object_set_data (G_OBJECT (entry), "user", g_strdup (prop->name));
+
+ gtk_table_attach (
+ prop_table, label,
+ 0, 1, y, y+1,
+ GTK_FILL|GTK_SHRINK,
+ GTK_FILL|GTK_SHRINK,
+ 8, 8);
+
+ gtk_table_attach (
+ prop_table, entry,
+ 1, 2, y, y+1,
+ GTK_EXPAND|GTK_FILL,
+ GTK_FILL|GTK_SHRINK,
+ 8, 8);
+
+ y++;
+ gtk_widget_show (label);
+ gtk_widget_show (entry);
+
+ prop_dialog->widgets = g_list_prepend (prop_dialog->widgets, entry);
+ }
+ }
+
+ if (!has_model) {
+ gtk_notebook_remove_page (notebook, 1);
+ } else {
+ GtkTextBuffer *txtbuffer;
+ GtkTextView *txtmodel;
+ gchar *filename, *str;
+ GError *read_error = NULL;
+
+ txtmodel = GTK_TEXT_VIEW (glade_xml_get_widget (gui, "txtmodel"));
+ txtbuffer = gtk_text_buffer_new (NULL);
+
+ filename = g_strdup_printf ("%s/%s.model", OREGANO_MODELDIR, model_name);
+ if (g_file_get_contents (filename, &str, NULL, &read_error)) {
+ gtk_text_buffer_set_text (txtbuffer, str, -1);
+ g_free (str);
+ } else {
+ gtk_text_buffer_set_text (txtbuffer, read_error->message, -1);
+ g_error_free (read_error);
+ }
+
+ g_free (filename);
+ g_free (model_name);
+
+ gtk_text_view_set_buffer (txtmodel, txtbuffer);
+ }
+
+ gtk_dialog_set_default_response (prop_dialog->dialog, 1);
+
+ response = gtk_dialog_run(prop_dialog->dialog);
+
+ prop_dialog_response (GTK_WIDGET (prop_dialog->dialog), response, prop_dialog);
+
+ gtk_widget_destroy (GTK_WIDGET (prop_dialog->dialog));
+}
+
+/* Matrix Multiplication
+ Tried art_affine_multiply, but that didn't work */
+static void matrix_mult(double* a,double* b,double* c){
+ c[0]=a[0]*b[0]+a[1]*b[2];
+ c[2]=a[2]*b[0]+a[3]*b[2];
+ c[1]=a[0]*b[1]+a[1]*b[3];
+ c[3]=a[2]*b[1]+a[3]*b[3];
+}
+
+static void
+part_rotated_callback (ItemData *data, int angle, SheetItem *sheet_item)
+{
+ double affine[6];
+ double affine_scale[6];
+ double affine_rotate[6];
+
+ GList *list;
+ GSList *label_items;
+ GtkAnchorType anchor;
+ GnomeCanvasGroup *group;
+ GnomeCanvasItem *canvas_item;
+ PartItem *item;
+ PartItemPriv *priv;
+ Part *part;
+
+ g_return_if_fail (sheet_item != NULL);
+ g_return_if_fail (IS_PART_ITEM (sheet_item));
+
+ item = PART_ITEM (sheet_item);
+ group = GNOME_CANVAS_GROUP (item);
+ part = PART(data);
+
+ priv = item->priv;
+
+ if (angle!=0) {
+ // check if the part is flipped
+ if ((part->priv->flip & 1) && (part->priv->flip & 2)) {
+ // Nothing to do in this case
+ art_affine_rotate (affine, angle);
+ } else {
+ if ((part->priv->flip & 1) || (part->priv->flip & 2)) {
+ // mirror over point (0,0)
+ art_affine_scale(affine_scale,-1,-1);
+ art_affine_rotate(affine_rotate,angle);
+ /* Matrix multiplication */
+ /* Don't use art_affine_multiply() here !*/
+ matrix_mult(affine_rotate,affine_scale,affine);
+ affine[4]=affine_rotate[4];
+ affine[5]=affine_rotate[5];
+ } else
+ art_affine_rotate (affine, angle);
+ }
+ } else {
+ // angle==0: Nothing has changed, therefore do nothing
+ art_affine_scale(affine,1,1);
+ }
+
+ for (list = group->item_list; list; list = list->next) {
+ canvas_item = GNOME_CANVAS_ITEM (list->data);
+
+ gnome_canvas_item_affine_relative (canvas_item, affine);
+ }
+
+ /*
+ * Get the right anchor for the labels. This is needed since the
+ * canvas don't know how to rotate text and since we rotate the
+ * label_group instead of the labels directly.
+ */
+
+ switch (part_get_rotation (part)) {
+ case 0:
+ anchor = GTK_ANCHOR_SOUTH_WEST;
+ break;
+ case 90:
+ anchor = GTK_ANCHOR_NORTH_WEST;
+ break;
+ case 180:
+ anchor = GTK_ANCHOR_NORTH_EAST;
+ break;
+ case 270:
+ anchor = GTK_ANCHOR_SOUTH_EAST;
+ break;
+ default:
+ anchor = GTK_ANCHOR_SOUTH_WEST;
+ break;
+ }
+
+
+ for (label_items = priv->label_items; label_items;
+ label_items = label_items->next) {
+ gnome_canvas_item_set (
+ GNOME_CANVAS_ITEM (label_items->data),
+ "anchor", anchor,
+ NULL);
+ }
+
+ for (label_items = priv->label_nodes; label_items;
+ label_items = label_items->next) {
+ gnome_canvas_item_set (
+ GNOME_CANVAS_ITEM (label_items->data),
+ "anchor", anchor,
+ NULL);
+ }
+
+ /*
+ * Invalidate the bounding box cache.
+ */
+ priv->cache_valid = FALSE;
+}
+
+static void
+part_flipped_callback (ItemData *data, gboolean horizontal,
+ SheetItem *sheet_item)
+{
+ GList *list;
+ GSList *label;
+ GtkAnchorType anchor;
+ GnomeCanvasGroup *group;
+ GnomeCanvasItem *canvas_item;
+ PartItem *item;
+ PartItemPriv *priv;
+ Part *part;
+ IDFlip flip;
+ double affine[6];
+ double affine_rotate[6];
+ double affine_scale[6];
+ int angle;
+
+ g_return_if_fail (sheet_item != NULL);
+ g_return_if_fail (IS_PART_ITEM (sheet_item));
+
+ item = PART_ITEM (sheet_item);
+ group = GNOME_CANVAS_GROUP (item);
+ part = PART (data);
+ flip = part_get_flip (part);
+
+ priv = item->priv;
+
+ if (horizontal)
+ art_affine_scale (affine, -1, 1);
+ else
+ art_affine_scale (affine, 1, -1);
+
+ angle=part_get_rotation(part);
+ if (angle!=0) {
+ switch (angle){
+ case 90: art_affine_rotate(affine_rotate,180);
+ memcpy(affine_scale,affine,6*sizeof(double));
+ break;
+ case 180: //don't do a thing
+ art_affine_rotate(affine_rotate,0);
+ memcpy(affine_scale,affine,6*sizeof(double));
+ break;
+ case 270: art_affine_rotate(affine_rotate,0);
+ // only to reset the memory of affine_scale, just a hack
+ memcpy(affine_scale,affine,6*sizeof(double));
+ // switch the flipping from horizontal to vertical and vice versa
+ affine_scale[0]=affine[3];
+ affine_scale[3]=affine[0];
+ }
+ matrix_mult(affine_scale,affine_rotate,affine);
+ }
+
+
+ for (list = group->item_list; list; list = list->next) {
+ canvas_item = GNOME_CANVAS_ITEM (list->data);
+
+ gnome_canvas_item_affine_relative (canvas_item, affine);
+ }
+
+ anchor = part_item_get_anchor_from_part (part);
+
+ for (label = item->priv->label_items; label; label = label->next) {
+ gnome_canvas_item_set (
+ GNOME_CANVAS_ITEM (label->data),
+ "anchor", anchor,
+ NULL);
+ }
+
+ /*
+ * Invalidate the bounding box cache.
+ */
+ priv->cache_valid = FALSE;
+}
+
+/*
+ Wherefore this function?
+ Formerly, the above defined callback functions were called after
+ reading data from file or from clipboard, in both cases there was neither
+ a change in flip nor rotate, but the above functions only work for
+ data which has changed. The "Not Changed, Just Redraw" was missing here.
+ */
+static void
+part_arrange_canvas_item (ItemData *data, SheetItem *sheet_item)
+{
+ double affine[6];
+ double affine_scale[6];
+ double affine_rotate[6];
+ GList *list;
+ GSList *label_items;
+ GtkAnchorType anchor;
+ GnomeCanvasGroup *group;
+ GnomeCanvasItem *canvas_item;
+ PartItem *item;
+ PartItemPriv *priv;
+ Part *part;
+ int angle;
+
+ g_return_if_fail (sheet_item != NULL);
+ g_return_if_fail (IS_PART_ITEM (sheet_item));
+
+ item = PART_ITEM (sheet_item);
+ group = GNOME_CANVAS_GROUP (item);
+ part = PART(data);
+
+ priv = item->priv;
+
+ angle=part_get_rotation(part);
+
+ if (angle!=0) {
+ if ((part->priv->flip & ID_FLIP_HORIZ)
+ && (part->priv->flip & ID_FLIP_VERT)) {
+ art_affine_rotate(affine,angle+180);
+ } else { if ((part->priv->flip & ID_FLIP_HORIZ)
+ || (part->priv->flip & ID_FLIP_VERT)) {
+ if (part->priv->flip & ID_FLIP_HORIZ)
+ art_affine_scale(affine_scale,-1,1);
+ else
+ art_affine_scale(affine_scale,1,-1);
+
+ art_affine_rotate(affine_rotate,angle);
+
+ matrix_mult(affine_rotate,affine_scale,affine);
+ affine[4]=affine_rotate[4];
+ affine[5]=affine_rotate[5];
+ } else
+ art_affine_rotate (affine, angle);
+ }
+ } else {
+ art_affine_scale(affine,1,1); //default
+ if ((part->priv->flip & ID_FLIP_HORIZ)
+ && (part->priv->flip & ID_FLIP_VERT))
+ art_affine_scale(affine,-1,-1);
+ if ((part->priv->flip & ID_FLIP_HORIZ)
+ && !(part->priv->flip & ID_FLIP_VERT))
+ art_affine_scale(affine,-1,1);
+ if (!(part->priv->flip & ID_FLIP_HORIZ)
+ && (part->priv->flip & ID_FLIP_VERT))
+ art_affine_scale(affine,1,-1);
+ }
+
+ for (list = group->item_list; list; list = list->next) {
+ canvas_item = GNOME_CANVAS_ITEM (list->data);
+ gnome_canvas_item_affine_relative (canvas_item, affine);
+ }
+
+ /*
+ * Get the right anchor for the labels. This is needed since the
+ * canvas don't know how to rotate text and since we rotate the
+ * label_group instead of the labels directly.
+ */
+ switch (part_get_rotation (part)) {
+ case 0:
+ anchor = GTK_ANCHOR_SOUTH_WEST;
+ break;
+ case 90:
+ anchor = GTK_ANCHOR_NORTH_WEST;
+ break;
+ case 180:
+ anchor = GTK_ANCHOR_NORTH_EAST;
+ break;
+ case 270:
+ anchor = GTK_ANCHOR_SOUTH_EAST;
+ break;
+ default:
+ anchor = GTK_ANCHOR_SOUTH_WEST;
+ break;
+ }
+
+
+ for (label_items = priv->label_items; label_items;
+ label_items = label_items->next) {
+ gnome_canvas_item_set (
+ GNOME_CANVAS_ITEM (label_items->data),
+ "anchor", anchor,
+ NULL);
+ }
+
+ for (label_items = priv->label_nodes; label_items;
+ label_items = label_items->next) {
+ gnome_canvas_item_set (
+ GNOME_CANVAS_ITEM (label_items->data),
+ "anchor", anchor,
+ NULL);
+ }
+
+ /*
+ * Invalidate the bounding box cache.
+ */
+ priv->cache_valid = FALSE;
+}
+
+void
+part_item_signal_connect_floating_group (Sheet *sheet, SchematicView *sv)
+{
+ g_return_if_fail (sheet != NULL);
+ g_return_if_fail (IS_SHEET (sheet));
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ sheet->state = SHEET_STATE_FLOAT_START;
+
+ /* FIXME: clean all this mess with floating groups etc... */
+ if (sheet->priv->float_handler_id != 0)
+ return;
+
+ sheet->priv->float_handler_id = g_signal_connect(
+ G_OBJECT (sheet),
+ "event",
+ G_CALLBACK(sheet_item_floating_event),
+ sv);
+}
+
+void
+part_item_signal_connect_floating (PartItem *item)
+{
+ Sheet *sheet;
+
+ sheet = sheet_item_get_sheet (SHEET_ITEM (item));
+ sheet->state = SHEET_STATE_FLOAT_START;
+
+ g_signal_connect (
+ G_OBJECT (item),
+ "double_clicked",
+ G_CALLBACK(edit_properties),
+ item);
+}
+
+static void
+selection_changed (PartItem *item, gboolean select, gpointer user_data)
+{
+ g_object_ref (G_OBJECT (item));
+ if (select)
+ gtk_idle_add ((gpointer) select_idle_callback, item);
+ else
+ gtk_idle_add ((gpointer) deselect_idle_callback, item);
+}
+
+static int
+select_idle_callback (PartItem *item)
+{
+ PartItemPriv *priv;
+ GnomeCanvasItem *canvas_item;
+ GList *list;
+
+ priv = item->priv;
+
+ if (priv->highlight) {
+ g_object_unref(G_OBJECT (item));
+ return FALSE;
+ }
+
+ for (list = GNOME_CANVAS_GROUP (item)->item_list; list;
+ list = list->next){
+ canvas_item = GNOME_CANVAS_ITEM (list->data);
+ if (GNOME_IS_CANVAS_LINE (canvas_item))
+ gnome_canvas_item_set (canvas_item, "fill_color", SELECTED_COLOR, NULL);
+ else if (GNOME_IS_CANVAS_ELLIPSE (canvas_item))
+ gnome_canvas_item_set (canvas_item, "outline_color", SELECTED_COLOR, NULL);
+ else if (GNOME_IS_CANVAS_TEXT (canvas_item))
+ gnome_canvas_item_set (canvas_item, "fill_color", SELECTED_COLOR, NULL);
+ }
+
+ priv->highlight = TRUE;
+
+ g_object_unref(G_OBJECT(item));
+ return FALSE;
+}
+
+static int
+deselect_idle_callback (PartItem *item)
+{
+ GList *list;
+ GnomeCanvasItem *canvas_item;
+ PartItemPriv *priv;
+
+ priv = item->priv;
+
+ if (!priv->highlight) {
+ g_object_unref (G_OBJECT (item));
+ return FALSE;
+ }
+
+ for (list = GNOME_CANVAS_GROUP (item)->item_list; list;
+ list = list->next){
+ canvas_item = GNOME_CANVAS_ITEM (list->data);
+ if (GNOME_IS_CANVAS_LINE (canvas_item))
+ gnome_canvas_item_set (canvas_item, "fill_color", NORMAL_COLOR, NULL);
+ else if (GNOME_IS_CANVAS_ELLIPSE (canvas_item))
+ gnome_canvas_item_set (canvas_item, "outline_color", NORMAL_COLOR, NULL);
+ else if (GNOME_IS_CANVAS_TEXT (canvas_item))
+ gnome_canvas_item_set (canvas_item, "fill_color", LABEL_COLOR, NULL);
+ }
+
+ priv->highlight = FALSE;
+
+ g_object_unref(G_OBJECT(item));
+ return FALSE;
+}
+
+static gboolean
+is_in_area (SheetItem *object, SheetPos *p1, SheetPos *p2)
+{
+ PartItem *item;
+ SheetPos bbox_start, bbox_end;
+
+ item = PART_ITEM (object);
+
+ get_cached_bounds (item, &bbox_start, &bbox_end);
+
+ if ((p1->x < bbox_start.x) &&
+ (p2->x > bbox_end.x) &&
+ (p1->y < bbox_start.y) &&
+ (p2->y > bbox_end.y))
+ return TRUE;
+
+ return FALSE;
+}
+
+static void
+show_labels (SheetItem *sheet_item, gboolean show)
+{
+ PartItem *item;
+ PartItemPriv *priv;
+
+ g_return_if_fail (sheet_item != NULL);
+ g_return_if_fail (IS_PART_ITEM (sheet_item));
+
+ item = PART_ITEM (sheet_item);
+ priv = item->priv;
+
+ if (show)
+ gnome_canvas_item_show (GNOME_CANVAS_ITEM (priv->label_group));
+ else
+ gnome_canvas_item_hide (GNOME_CANVAS_ITEM (priv->label_group));
+}
+
+/**
+ * Retrieves the bounding box. We use a caching scheme for this
+ * since it's too expensive to calculate it every time we need it.
+ */
+inline static void
+get_cached_bounds (PartItem *item, SheetPos *p1, SheetPos *p2)
+{
+ PartItemPriv *priv;
+ priv = item->priv;
+
+ if (!priv->cache_valid) {
+ SheetPos start_pos, end_pos;
+ gdouble x1, y1, x2, y2;
+
+ /*
+ * Hide the labels, then get bounding box, then show them
+ * again.
+ */
+ gnome_canvas_item_hide (GNOME_CANVAS_ITEM (priv->label_group));
+ gnome_canvas_item_get_bounds (GNOME_CANVAS_ITEM (item),
+ &x1, &y1, &x2, &y2);
+ gnome_canvas_item_show (GNOME_CANVAS_ITEM (priv->label_group));
+
+ start_pos.x = x1;
+ start_pos.y = y1;
+ end_pos.x = x2;
+ end_pos.y = y2;
+
+ priv->bbox_start = start_pos;
+ priv->bbox_end = end_pos;
+ priv->cache_valid = TRUE;
+ }
+
+ memcpy (p1, &priv->bbox_start, sizeof (SheetPos));
+ memcpy (p2, &priv->bbox_end, sizeof (SheetPos));
+}
+
+static void
+part_item_paste (SchematicView *sv, ItemData *data)
+{
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_PART (data));
+
+ schematic_view_add_ghost_item (sv, data);
+}
+
+/**
+ * FIXME: make this the default constructor for PartItem (rename to
+ * part_item_new).
+ */
+PartItem *
+part_item_new_from_part (Sheet *sheet, Part *part)
+{
+ Library *library;
+ LibraryPart *library_part;
+ PartPriv *priv;
+ PartItem *item;
+
+ priv = part->priv;
+
+ library = priv->library;
+ library_part = library_get_part (library, priv->name);
+
+ /*
+ * Create the PartItem canvas item.
+ */
+ item = part_item_new (sheet, part);
+
+ create_canvas_items (GNOME_CANVAS_GROUP (item), library_part);
+ create_canvas_labels (item, part);
+ create_canvas_label_nodes(item, part);
+
+ part_arrange_canvas_item(ITEM_DATA (part), SHEET_ITEM (item));
+ return item;
+}
+
+void
+part_item_create_canvas_items_for_preview (GnomeCanvasGroup *group,
+ LibraryPart *library_part)
+{
+ g_return_if_fail (group != NULL);
+ g_return_if_fail (GNOME_IS_CANVAS_GROUP (group));
+ g_return_if_fail (library_part != NULL);
+
+ create_canvas_items (group, library_part);
+}
+
+static void
+create_canvas_items (GnomeCanvasGroup *group, LibraryPart *library_part)
+{
+ GnomeCanvasItem *item;
+ GnomeCanvasPoints *points;
+ GSList *objects;
+ LibrarySymbol *symbol;
+ SymbolObject *object;
+
+ g_return_if_fail (group != NULL);
+ g_return_if_fail (GNOME_IS_CANVAS_GROUP (group));
+ g_return_if_fail (library_part != NULL);
+
+ symbol = library_get_symbol (library_part->symbol_name);
+ if (symbol == NULL){
+ g_warning ("Couldn't find the requested symbol %s for part %s in library.\n",
+ library_part->symbol_name,
+ library_part->name);
+ return;
+ }
+
+ for (objects = symbol->symbol_objects; objects;
+ objects = objects->next) {
+ object = (SymbolObject *)(objects->data);
+ switch (object->type){
+ case SYMBOL_OBJECT_LINE:
+ points = object->u.uline.line;
+ item = gnome_canvas_item_new (
+ group,
+ gnome_canvas_line_get_type (),
+ "points", points,
+ "fill_color", NORMAL_COLOR,
+ "width_pixels", 0,
+ "cap_style", GDK_CAP_BUTT,
+ NULL);
+ if (object->u.uline.spline) {
+ gnome_canvas_item_set (
+ item,
+ "smooth", TRUE,
+ "spline_steps", 5,
+ NULL);
+ }
+ break;
+ case SYMBOL_OBJECT_ARC:
+ item = gnome_canvas_item_new (
+ group,
+ gnome_canvas_ellipse_get_type (),
+ "x1", object->u.arc.x1,
+ "y1", object->u.arc.y1,
+ "x2", object->u.arc.x2,
+ "y2", object->u.arc.y2,
+ "outline_color", NORMAL_COLOR,
+ "width_pixels", 0,
+ NULL);
+ break;
+ case SYMBOL_OBJECT_TEXT:
+ item = gnome_canvas_item_new (
+ group,
+ gnome_canvas_text_get_type (),
+ "text",object->u.text.str,
+ "x", (double) object->u.text.x,
+ "y", (double) object->u.text.y,
+ "fill_color", LABEL_COLOR,
+ "font", "Sans 8",
+ NULL);
+ break;
+ default:
+ g_warning ("Unknown symbol object.\n");
+ continue;
+ }
+ }
+}
+
+static void
+create_canvas_labels (PartItem *item, Part *part)
+{
+ GnomeCanvasItem *canvas_item;
+ GSList *list, *labels, *item_list;
+ GnomeCanvasGroup *group;
+
+ g_return_if_fail (item != NULL);
+ g_return_if_fail (IS_PART_ITEM (item));
+ g_return_if_fail (part != NULL);
+ g_return_if_fail (IS_PART (part));
+
+ labels = part_get_labels (part);
+ group = item->priv->label_group;
+ item_list = NULL;
+
+ for (list = labels; list; list = list->next) {
+ PartLabel *label = list->data;
+ char *text;
+
+ text = part_property_expand_macros (part, label->text);
+
+ canvas_item = gnome_canvas_item_new (
+ group,
+ gnome_canvas_text_get_type (),
+ "x", (double) label->pos.x,
+ "y", (double) label->pos.y,
+ "text", text,
+ "anchor", GTK_ANCHOR_SOUTH_WEST,
+ "fill_color", LABEL_COLOR,
+ "font", "Sans 8",
+ NULL);
+
+ item_list = g_slist_prepend (item_list, canvas_item);
+
+ g_free (text);
+ }
+ item_list = g_slist_reverse (item_list);
+ part_item_set_label_items (item, item_list);
+}
+
+
+static void
+create_canvas_label_nodes (PartItem *item, Part *part)
+{
+ GnomeCanvasItem *canvas_item;
+ GSList *item_list;
+ GnomeCanvasGroup *group;
+ Pin *pins;
+ int num_pins, i;
+ SheetPos p1, p2;
+ GtkAnchorType anchor;
+ int w, h;
+
+ g_return_if_fail (item != NULL);
+ g_return_if_fail (IS_PART_ITEM (item));
+ g_return_if_fail (part != NULL);
+ g_return_if_fail (IS_PART (part));
+
+ num_pins = part_get_num_pins(part);
+ pins = part_get_pins(part);
+ group = item->priv->node_group;
+ item_list = NULL;
+
+ get_cached_bounds (item, &p1, &p2);
+
+ w = p2.x - p1.x;
+ h = p2.y - p1.y;
+
+ switch (part_get_rotation (part)) {
+ case 0:
+ anchor = GTK_ANCHOR_SOUTH_WEST;
+ break;
+ case 90:
+ anchor = GTK_ANCHOR_NORTH_WEST;
+ break;
+ case 180:
+ anchor = GTK_ANCHOR_NORTH_EAST;
+ break;
+ case 270:
+ anchor = GTK_ANCHOR_SOUTH_EAST;
+ break;
+ default:
+ anchor = GTK_ANCHOR_SOUTH_WEST;
+ }
+
+ for (i=0; i<num_pins; i++) {
+ int x, y;
+ char *txt;
+ x = pins[i].offset.x;
+ y = pins[i].offset.y;
+
+ txt = g_strdup_printf("%d", pins[i].node_nr);
+ canvas_item = gnome_canvas_item_new (
+ group,
+ gnome_canvas_text_get_type (),
+ "x", (double) x,
+ "y", (double) y,
+ "text", txt,
+ "anchor", anchor,
+ "fill_color", "black",
+ "font", "Sans 8",
+ NULL);
+
+ item_list = g_slist_prepend (item_list, canvas_item);
+ g_free(txt);
+ }
+ item_list = g_slist_reverse (item_list);
+ item->priv->label_nodes = item_list;
+}
+
+
+/**
+ * This is called when the part data was moved. Update the view accordingly.
+ */
+static void
+part_moved_callback (ItemData *data, SheetPos *pos, SheetItem *item)
+{
+ PartItem *part_item;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (data));
+ g_return_if_fail (item != NULL);
+ g_return_if_fail (IS_PART_ITEM (item));
+
+ if (pos == NULL)
+ return;
+
+ part_item = PART_ITEM (item);
+
+ /*
+ * Move the canvas item and invalidate the bbox cache.
+ */
+ gnome_canvas_item_move (GNOME_CANVAS_ITEM (item), pos->x, pos->y);
+ part_item->priv->cache_valid = FALSE;
+}
+
+static void
+part_item_place (SheetItem *item, SchematicView *sv)
+{
+ g_signal_connect (
+ G_OBJECT(item),
+ "event",
+ G_CALLBACK(sheet_item_event),
+ sv);
+
+ g_signal_connect (
+ G_OBJECT(item),
+ "double_clicked",
+ G_CALLBACK(edit_properties),
+ item);
+}
+
+static void
+part_item_place_ghost (SheetItem *item, SchematicView *sv)
+{
+// part_item_signal_connect_placed (PART_ITEM (item));
+}
+
+
+void
+part_item_show_node_labels (PartItem *part, gboolean b)
+{
+ PartItemPriv *priv;
+
+ priv = part->priv;
+
+ if (b)
+ gnome_canvas_item_show (GNOME_CANVAS_ITEM (priv->node_group));
+ else
+ gnome_canvas_item_hide (GNOME_CANVAS_ITEM (priv->node_group));
+}
+
diff --git a/src/sheet/part-item.h b/src/sheet/part-item.h
new file mode 100644
index 0000000..0ead795
--- /dev/null
+++ b/src/sheet/part-item.h
@@ -0,0 +1,70 @@
+/*
+ * part-item.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __PART_ITEM_H
+#define __PART_ITEM_H
+
+typedef struct _PartItem PartItem;
+typedef struct _PartItemClass PartItemClass;
+typedef struct _PartItemPriv PartItemPriv;
+
+#include "sheet-item.h"
+#include "load-library.h"
+#include "load-common.h"
+#include "part.h"
+
+#define TYPE_PART_ITEM (part_item_get_type ())
+#define PART_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PART_ITEM, PartItem))
+#define PART_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PART_ITEM, PartItemClass))
+#define IS_PART_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PART_ITEM))
+#define PART_ITEM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_PART_ITEM, PartItemClass))
+
+#include "schematic-view.h"
+
+struct _PartItem {
+ SheetItem parent_object;
+ PartItemPriv *priv;
+};
+
+struct _PartItemClass {
+ SheetItemClass parent_class;
+};
+
+GType part_item_get_type (void);
+PartItem *part_item_new (Sheet *sheet, Part *part);
+PartItem *part_item_new_from_part (Sheet *sheet, Part *part);
+void part_item_signal_connect_floating (PartItem *item);
+void part_item_signal_connect_floating_group (Sheet *sheet,
+ SchematicView *schematic_view);
+void part_item_create_canvas_items_for_preview (GnomeCanvasGroup *group,
+ LibraryPart *library_part);
+void part_item_update_node_label (PartItem *part);
+void part_item_show_node_labels (PartItem *part, gboolean b);
+
+#endif
diff --git a/src/sheet/sheet-item-factory.c b/src/sheet/sheet-item-factory.c
new file mode 100644
index 0000000..97f31b2
--- /dev/null
+++ b/src/sheet/sheet-item-factory.c
@@ -0,0 +1,70 @@
+/*
+ * sheet-item-factory.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include "schematic-view.h"
+#include "sheet-item-factory.h"
+#include "wire-item.h"
+#include "part-item.h"
+#include "textbox-item.h"
+
+/*
+ * Create a SheetItem from an ItemData object. This is a bit ugly.
+ * It could be beautified by having a method that creates the item.
+ * E.g. sheet_item->new_from_data (data);
+ */
+
+SheetItem *
+sheet_item_factory_create_sheet_item (SchematicView *sv, ItemData *data)
+{
+ Sheet *sheet;
+ SheetItem *item;
+
+ g_return_val_if_fail (data != NULL, NULL);
+ g_return_val_if_fail (IS_ITEM_DATA (data), NULL);
+
+ sheet = schematic_view_get_sheet (sv);
+ item = NULL;
+
+ /*
+ * Pick the right model.
+ */
+ if (IS_PART(data)) {
+ item = SHEET_ITEM(part_item_new_from_part(sheet, PART(data)));
+ } else if (IS_WIRE(data)) {
+ item = SHEET_ITEM(wire_item_new(sheet, WIRE(data)));
+ } else if (IS_TEXTBOX(data)) {
+ item = SHEET_ITEM(textbox_item_new(sheet, TEXTBOX(data)));
+ } else
+ g_warning ("Unknown Item type.");
+
+ return item;
+}
+
+
diff --git a/src/sheet/sheet-item-factory.h b/src/sheet/sheet-item-factory.h
new file mode 100644
index 0000000..4a6825b
--- /dev/null
+++ b/src/sheet/sheet-item-factory.h
@@ -0,0 +1,38 @@
+/*
+ * sheet-item-factory.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __SHEET_ITEM_FACTORY_H
+#define __SHEET_ITEM_FACTORY_H
+
+#include "item-data.h"
+#include "sheet-item.h"
+
+SheetItem *sheet_item_factory_create_sheet_item (SchematicView *sv, ItemData *data);
+
+#endif /* __SHEET_ITEM_FACTORY_H */
diff --git a/src/sheet/sheet-item.c b/src/sheet/sheet-item.c
new file mode 100644
index 0000000..35120e3
--- /dev/null
+++ b/src/sheet/sheet-item.c
@@ -0,0 +1,1222 @@
+/*
+ * sheet-item.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <math.h>
+#include "main.h"
+#include "sheet-private.h"
+#include "sheet-item.h"
+#include "stock.h"
+#include "schematic.h"
+#include "schematic-view.h"
+#include "config.h"
+
+static void sheet_item_class_init (SheetItemClass * klass);
+
+static void sheet_item_init (SheetItem *item);
+
+static void sheet_item_set_property (GObject *object, guint prop_id,
+ const GValue *value, GParamSpec *spec);
+
+static void sheet_item_get_property (GObject *object, guint prop_id,
+ GValue *value, GParamSpec *spec);
+
+static void sheet_item_destroy (GtkObject *object);
+
+static void sheet_item_run_menu (SheetItem *item, SchematicView *sv,
+ GdkEventButton *event);
+
+static GnomeCanvasGroupClass *sheet_item_parent_class = NULL;
+extern GObject *clipboard_data_get_item_data ();
+extern GObjectClass *clipboard_data_get_item_class ();
+
+struct _SheetItemPriv {
+ guint selected : 1;
+ guint preserve_selection : 1;
+ ItemData *data;
+ GtkActionGroup *action_group;
+ GtkUIManager *ui_manager;
+};
+
+enum {
+ ARG_0,
+ ARG_DATA,
+ ARG_SHEET,
+ ARG_ACTION_GROUP
+};
+
+enum {
+ MOVED,
+ PLACED,
+ SELECTION_CHANGED,
+ MOUSE_OVER,
+ DOUBLE_CLICKED,
+
+ LAST_SIGNAL
+};
+
+static guint so_signals[LAST_SIGNAL] = { 0 };
+/*
+ * This is the upper part of the object popup menu. It contains actions
+ * that are the same for all objects, e.g. parts and wires.
+ */
+static const char *sheet_item_context_menu =
+"<ui>"
+" <popup name='ItemMenu'>"
+" <menuitem action='Copy'/>"
+" <menuitem action='Cut'/>"
+" <menuitem action='Delete'/>"
+" <separator/>"
+" <menuitem action='Rotate'/>"
+" <menuitem action='FlipH'/>"
+" <menuitem action='FlipV'/>"
+" <separator/>"
+" </popup>"
+"</ui>";
+
+static GtkActionEntry action_entries[] = {
+ {"Copy", GTK_STOCK_COPY, N_("_Copy"), "<control>C", NULL, NULL},
+ {"Cut", GTK_STOCK_CUT, N_("C_ut"), "<control>X", NULL, NULL},
+ {"Delete", GTK_STOCK_DELETE, N_("_Delete"), "<control>D", N_("Delete the selection"), NULL},
+ {"Rotate", STOCK_PIXMAP_ROTATE, N_("_Rotate"), "<control>R", N_("Rotate the selection clockwise"), NULL},
+ {"FlipH", NULL, N_("Flip _horizontally"), "<control>F", N_("Flip the selection horizontally"), NULL},
+ {"FlipV", NULL, N_("Flip _vertically"), "<control><shift>F", N_("Flip the selection vertically"), NULL}
+};
+GType
+sheet_item_get_type ()
+{
+ static GType sheet_item_type = 0;
+
+ if (!sheet_item_type) {
+ static const GTypeInfo sheet_item_info = {
+ sizeof (SheetItemClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) sheet_item_class_init,
+ NULL,
+ NULL,
+ sizeof (SheetItem),
+ 0,
+ (GInstanceInitFunc)sheet_item_init,
+ NULL
+ };
+ sheet_item_type = g_type_register_static(GNOME_TYPE_CANVAS_GROUP,
+ "SheetItem",
+ &sheet_item_info, 0);
+ }
+ return sheet_item_type;
+}
+
+static void
+sheet_item_class_init (SheetItemClass *sheet_item_class)
+{
+ GObjectClass *object_class;
+ GtkObjectClass *gtk_object_class;
+
+ object_class = G_OBJECT_CLASS(sheet_item_class);
+ gtk_object_class = GTK_OBJECT_CLASS(sheet_item_class);
+ sheet_item_parent_class = g_type_class_peek_parent(sheet_item_class);
+
+ object_class->set_property = sheet_item_set_property;
+ object_class->get_property = sheet_item_get_property;
+
+ g_object_class_install_property(
+ object_class,
+ ARG_DATA,
+ g_param_spec_pointer("data", "SheetItem::data", "the data",
+ G_PARAM_READWRITE)
+ );
+ g_object_class_install_property(
+ object_class,
+ ARG_SHEET,
+ g_param_spec_pointer("sheet", "SheetItem::sheet", "the sheet",
+ G_PARAM_READABLE)
+ );
+ g_object_class_install_property(
+ object_class,
+ ARG_ACTION_GROUP,
+ g_param_spec_pointer("action_group", "SheetItem::action_group", "action group",
+ G_PARAM_READWRITE)
+ );
+
+ gtk_object_class->destroy = sheet_item_destroy;
+
+ sheet_item_class->is_in_area = NULL;
+ sheet_item_class->show_labels = NULL;
+ sheet_item_class->paste = NULL;
+
+ sheet_item_class->moved = NULL;
+ sheet_item_class->selection_changed = NULL;
+ sheet_item_class->mouse_over = NULL;
+
+ so_signals[PLACED] =
+ g_signal_new ("placed",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ so_signals[MOVED] = g_signal_new ("moved",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(SheetItemClass, moved),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ so_signals[SELECTION_CHANGED] = g_signal_new ("selection_changed",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(SheetItemClass, selection_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__INT,
+ G_TYPE_NONE, 1, G_TYPE_INT);
+
+ so_signals[MOUSE_OVER] = g_signal_new ("mouse_over",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(SheetItemClass, mouse_over),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ so_signals[DOUBLE_CLICKED] = g_signal_new ("double_clicked",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ 0, NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+}
+
+static void
+sheet_item_init (SheetItem *item)
+{
+ GError *error = NULL;
+
+ item->priv = g_new0 (SheetItemPriv, 1);
+ item->priv->selected = FALSE;
+ item->priv->preserve_selection = FALSE;
+ item->priv->data = NULL;
+ item->priv->ui_manager = NULL;
+ item->priv->action_group = NULL;
+
+ item->priv->ui_manager = gtk_ui_manager_new ();
+ item->priv->action_group = gtk_action_group_new ("action_group");
+ gtk_action_group_set_translation_domain (item->priv->action_group, GETTEXT_PACKAGE);
+ gtk_action_group_add_actions (item->priv->action_group,
+ action_entries,
+ G_N_ELEMENTS (action_entries),
+ NULL);
+ gtk_ui_manager_insert_action_group (item->priv->ui_manager, item->priv->action_group, 0);
+
+ if (!gtk_ui_manager_add_ui_from_string (item->priv->ui_manager, sheet_item_context_menu, -1, &error)) {
+ g_message ("building menus failed: %s", error->message);
+ g_error_free (error);
+ exit (EXIT_FAILURE);
+ }
+}
+
+static void
+sheet_item_set_property (GObject *object, guint prop_id, const GValue *value,
+ GParamSpec *spec)
+{
+ SheetItem *sheet_item;
+ SheetPos pos;
+
+ sheet_item = SHEET_ITEM (object);
+
+ switch (prop_id) {
+ case ARG_DATA:
+ if (sheet_item->priv->data) {
+ g_warning ("Cannot set ItemData after creation.");
+ break;
+ }
+ sheet_item->priv->data = g_value_get_pointer (value);
+ item_data_get_pos (sheet_item->priv->data, &pos);
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM (object),
+ "x", pos.x,
+ "y", pos.y,
+ NULL);
+ break;
+ case ARG_ACTION_GROUP:
+ sheet_item->priv->action_group = g_value_get_pointer (value);
+ gtk_ui_manager_insert_action_group (sheet_item->priv->ui_manager, sheet_item->priv->action_group, 0);
+ default:
+ break;
+ }
+}
+
+static void
+sheet_item_get_property (GObject *object, guint prop_id, GValue *value,
+ GParamSpec *spec)
+{
+ SheetItem *sheet_item;
+
+ sheet_item = SHEET_ITEM (object);
+
+ switch (prop_id) {
+ case ARG_DATA:
+ g_value_set_pointer(value, sheet_item->priv->data);
+ break;
+ case ARG_SHEET:
+ g_value_set_pointer (value, sheet_item_get_sheet (sheet_item));
+ break;
+ case ARG_ACTION_GROUP:
+ g_value_set_pointer (value, sheet_item->priv->action_group);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(sheet_item, prop_id, spec);
+ break;
+ }
+}
+
+static void
+sheet_item_destroy (GtkObject *object)
+{
+ SheetItem *sheet_item;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (IS_SHEET_ITEM (object));
+
+ sheet_item = SHEET_ITEM (object);
+
+ if (sheet_item->priv) {
+ g_object_unref(G_OBJECT(sheet_item->priv->data));
+ g_free(sheet_item->priv);
+ sheet_item->priv = NULL;
+ }
+
+ if (GTK_OBJECT_CLASS(sheet_item_parent_class)->destroy) {
+ GTK_OBJECT_CLASS(sheet_item_parent_class)->destroy(object);
+ }
+}
+
+static void
+sheet_item_run_menu (SheetItem *item, SchematicView *sv, GdkEventButton *event)
+{
+ GtkWidget *menu;
+
+ menu = gtk_ui_manager_get_widget (item->priv->ui_manager, "/ItemMenu");
+
+ gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, sv, event->button, event->time);
+}
+
+static int
+scroll_timeout_callback (Sheet *sheet)
+{
+ int width, height;
+ int x, y, dx = 0, dy = 0;
+
+ /* Get the current mouse position so that we can decide if the pointer is
+ inside the viewport. */
+ gdk_window_get_pointer (GTK_WIDGET (sheet)->window, &x, &y, NULL);
+
+ width = GTK_WIDGET (sheet)->allocation.width;
+ height = GTK_WIDGET (sheet)->allocation.height;
+
+ if (x < 0)
+ dx = -1;
+ else if (x > width)
+ dx = 1;
+
+ if (y < 0)
+ dy = -1;
+ else if (y > height)
+ dy = 1;
+
+ if (!(x > 0 && x < width && y > 0 && y < height))
+ sheet_scroll (sheet, dx*5, dy*5);
+
+ return TRUE;
+}
+
+
+/*
+ * sheet_item_event
+ *
+ * Event handler for a SheetItem
+ */
+int
+sheet_item_event (SheetItem *sheet_item, const GdkEvent *event, SchematicView *sv)
+{
+ SheetItemClass *class;
+ GnomeCanvas *canvas;
+ Sheet *sheet;
+ SheetPriv *priv;
+ GList *list;
+ SheetPos delta;
+ /* Remember the last position of the mouse cursor. */
+ static double last_x, last_y;
+ /* Mouse cursor position in window coordinates, snapped to the grid spacing. */
+ double snapped_x, snapped_y;
+ /* Move the selected item(s) by this movement. */
+ double dx, dy;
+ /* The selected group's bounding box in window resp. canvas coordinates. */
+ double x1, y1, x2, y2;
+ static double bb_x1, bb_y1, bb_x2, bb_y2;
+ int cx1, cy1, cx2, cy2;
+ /* The sheet's width and the its viewport's width. */
+ guint sheet_width, sheet_height;
+
+ g_return_val_if_fail (sheet_item != NULL, FALSE);
+ g_return_val_if_fail (IS_SHEET_ITEM (sheet_item), FALSE);
+ g_return_val_if_fail (sv != NULL, FALSE);
+ g_return_val_if_fail (IS_SCHEMATIC_VIEW (sv), FALSE);
+
+ sheet = schematic_view_get_sheet (sv);
+ priv = sheet->priv;
+ canvas = GNOME_CANVAS (sheet);
+
+ switch (event->type){
+ case GDK_ENTER_NOTIFY:
+ /*
+ * Debugging...
+ */
+ if (event->crossing.state & GDK_CONTROL_MASK)
+ g_signal_emit_by_name (G_OBJECT (sheet_item), "mouse_over");
+ return TRUE;
+
+ case GDK_BUTTON_PRESS:
+ /* Grab focus to sheet for correct use of events */
+ gtk_widget_grab_focus (GTK_WIDGET (sheet));
+ switch (event->button.button){
+ case 1:
+ g_signal_stop_emission_by_name (G_OBJECT (sheet), "event");
+ sheet->state = SHEET_STATE_DRAG_START;
+
+ last_x = event->button.x;
+ last_y = event->button.y;
+ snap_to_grid (sheet->grid, &last_x, &last_y);
+ break;
+ case 3:
+ g_signal_stop_emission_by_name (G_OBJECT (sheet), "event");
+
+ if (sheet->state != SHEET_STATE_NONE)
+ return TRUE;
+
+ /*
+ * Bring up a context menu for right button clicks.
+ */
+ if (!sheet_item->priv->selected &&
+ !((event->button.state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK))
+ schematic_view_select_all (sv, FALSE);
+
+ //if (!sheet_item->priv->selected)
+ sheet_item_select (sheet_item, TRUE);
+
+ class = SHEET_ITEM_CLASS (GTK_OBJECT_GET_CLASS(sheet_item));
+ sheet_item_run_menu ( sheet_item, sv, (GdkEventButton *) event);
+ break;
+ default:
+ return FALSE;
+ }
+ break;
+
+ case GDK_2BUTTON_PRESS:
+ /*
+ * Do not interfere with object dragging.
+ */
+ if (sheet->state == SHEET_STATE_DRAG)
+ return FALSE;
+
+ switch (event->button.button){
+ case 1:
+ if (sheet->state == SHEET_STATE_DRAG_START)
+ sheet->state = SHEET_STATE_NONE;
+ g_signal_stop_emission_by_name (G_OBJECT (sheet), "event");
+ g_signal_emit_by_name (G_OBJECT (sheet_item), "double_clicked");
+ break;
+
+ default:
+ return FALSE;
+ }
+ break;
+
+ case GDK_3BUTTON_PRESS:
+ g_signal_stop_emission_by_name (G_OBJECT (sheet), "event");
+ return TRUE;
+
+ case GDK_BUTTON_RELEASE:
+ switch (event->button.button){
+ case 1:
+ if (sheet->state != SHEET_STATE_DRAG &&
+ sheet->state != SHEET_STATE_DRAG_START)
+ return TRUE;
+
+ g_signal_stop_emission_by_name (G_OBJECT (sheet), "event");
+
+ if (sheet->state == SHEET_STATE_DRAG_START) {
+ sheet->state = SHEET_STATE_NONE;
+
+ if (!(event->button.state & GDK_SHIFT_MASK))
+ schematic_view_select_all (sv, FALSE);
+
+ sheet_item_select (sheet_item, TRUE);
+
+ return TRUE;
+ }
+
+ g_object_get (G_OBJECT (priv->selected_group),
+ "x", &delta.x,
+ "y", &delta.y,
+ NULL);
+
+ gtk_timeout_remove (priv->scroll_timeout_id); // Tricky...
+
+ sheet->state = SHEET_STATE_NONE;
+ gnome_canvas_item_ungrab (GNOME_CANVAS_ITEM (sheet_item), event->button.time);
+
+
+ /*
+ * HACK :(
+ * FIXME: fix this later. The problem is that we don't want to
+ * update the current view, since it acts as the controller and
+ * already is updated. It's not really a problem, but an ugly hack.
+ */
+ gnome_canvas_item_move (
+ GNOME_CANVAS_ITEM (priv->selected_group),
+ -delta.x, -delta.y
+ );
+
+ /*
+ * Make sure the objects are reparented back to the object
+ * group _before_ we register them. Otherwise they will get
+ * incorrect coordinates.
+ */
+ for (list = priv->selected_objects; list; list = list->next) {
+ sheet_item_reparent (SHEET_ITEM (list->data), sheet->object_group);
+ }
+
+ /*
+ * FIXME: this is not the best way to solve this. Ideally, the
+ * moving would take care of re-registering items.
+ */
+ for (list = priv->selected_objects; list; list = list->next) {
+ ItemData *item_data;
+
+ item_data = SHEET_ITEM (list->data)->priv->data;
+ item_data_move (item_data, &delta);
+ item_data_register (item_data);
+ }
+
+ break;
+ case GDK_KEY_PRESS:
+ switch (event->key.keyval) {
+ case GDK_r:
+ schematic_view_rotate_selection (sv);
+ {
+ int x, y;
+
+ gdk_window_get_pointer (GDK_WINDOW (GTK_WIDGET (sheet)->window), &x, &y, NULL);
+ gnome_canvas_window_to_world (GNOME_CANVAS (sheet), x, y, &snapped_x, &snapped_y);
+
+ /*
+ * Center the objects around the mouse pointer.
+ */
+ gnome_canvas_item_get_bounds (
+ GNOME_CANVAS_ITEM (priv->floating_group),
+ &x1, &y1, &x2, &y2
+ );
+
+ snap_to_grid (sheet->grid, &snapped_x, &snapped_y);
+
+ dx = snapped_x - (x1 + (x2 - x1) / 2);
+ dy = snapped_y - (y1 + (y2 - y1) / 2);
+ snap_to_grid (sheet->grid, &dx, &dy);
+
+ gnome_canvas_item_move (
+ GNOME_CANVAS_ITEM (priv->floating_group),
+ dx, dy
+ );
+
+ last_x = snapped_x;
+ last_y = snapped_y;
+ }
+ break;
+ default:
+ return FALSE;
+ }
+ return TRUE;
+
+ default:
+ return FALSE;
+ }
+ break;
+
+ case GDK_MOTION_NOTIFY:
+ if (sheet->state != SHEET_STATE_DRAG &&
+ sheet->state != SHEET_STATE_DRAG_START)
+ return FALSE;
+
+ if (sheet->state == SHEET_STATE_DRAG_START) {
+ sheet->state = SHEET_STATE_DRAG;
+
+ /*
+ * Update the selection if needed.
+ */
+ if (!sheet_item->priv->selected){
+ if (!(event->motion.state & GDK_SHIFT_MASK))
+ schematic_view_select_all (sv, FALSE);
+ sheet_item_select (sheet_item, TRUE);
+ }
+
+ gnome_canvas_item_set (
+ GNOME_CANVAS_ITEM (priv->selected_group),
+ "x", 0.0, "y", 0.0, NULL
+ );
+
+ /*
+ * Reparent the selected objects so that we can
+ * move them efficiently.
+ */
+ for (list = priv->selected_objects; list; list = list->next){
+ ItemData *item_data;
+
+ item_data = SHEET_ITEM (list->data)->priv->data;
+ item_data_unregister (item_data);
+ sheet_item_reparent (SHEET_ITEM (list->data), priv->selected_group);
+ }
+
+ gnome_canvas_item_grab (GNOME_CANVAS_ITEM (sheet_item),
+ GDK_POINTER_MOTION_MASK |
+ GDK_BUTTON_RELEASE_MASK,
+ NULL, event->button.time);
+
+ gnome_canvas_item_get_bounds (
+ GNOME_CANVAS_ITEM (priv->selected_group),
+ &bb_x1, &bb_y1, &bb_x2, &bb_y2
+ );
+
+ /*
+ * Start the autoscroll timeout.
+ */
+ priv->scroll_timeout_id =
+ g_timeout_add (50, (void *) scroll_timeout_callback, sheet);
+ }
+
+ snapped_x = event->motion.x;
+ snapped_y = event->motion.y;
+ snap_to_grid (sheet->grid, &snapped_x, &snapped_y);
+
+ dx = snapped_x - last_x;
+ dy = snapped_y - last_y;
+
+ x1 = bb_x1 + dx;
+ x2 = bb_x2 + dx;
+ y1 = bb_y1 + dy;
+ y2 = bb_y2 + dy;
+
+ gnome_canvas_w2c (canvas, x1, y1, &cx1, &cy1);
+ gnome_canvas_w2c (canvas, x2, y2, &cx2, &cy2);
+ sheet_get_size_pixels (sheet, &sheet_width, &sheet_height);
+
+ /* Check that we don't move outside the sheet... horizontally: */
+ if (cx1 <= 0){ /* leftmost edge */
+ dx = dx - x1;
+ snap_to_grid (sheet->grid, &dx, NULL);
+ snapped_x = last_x + dx;
+ } else if (cx2 >= sheet_width){ /* rightmost edge */
+ dx = dx - (x2 - sheet_width / priv->zoom);
+ snap_to_grid (sheet->grid, &dx, NULL);
+ snapped_x = last_x + dx;
+ }
+
+ /* And vertically: */
+ if (cy1 <= 0){ /* upper edge */
+ dy = dy - y1;
+ snap_to_grid (sheet->grid, NULL, &dy);
+ snapped_y = last_y + dy;
+ } else if (cy2 >= sheet_height){ /* lower edge */
+ dy = dy - (y2 - sheet_height / priv->zoom);
+ snap_to_grid (sheet->grid, NULL, &dy);
+ snapped_y = last_y + dy;
+ }
+
+ last_x = snapped_x;
+ last_y = snapped_y;
+
+ if (dx != 0 || dy != 0)
+ gnome_canvas_item_move (GNOME_CANVAS_ITEM (priv->selected_group), dx, dy);
+
+ /* Update the bounding box. */
+ bb_x1 += dx;
+ bb_x2 += dx;
+ bb_y1 += dy;
+ bb_y2 += dy;
+
+ break;
+
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+/*
+ * Cancel the placement of floating items and remove them.
+ */
+void
+sheet_item_cancel_floating (SchematicView *sv)
+{
+ GnomeCanvasGroup *group;
+ Sheet *sheet;
+ GList *list;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ sheet = schematic_view_get_sheet (sv);
+ group = sheet->priv->floating_group;
+ if (group == NULL)
+ return;
+
+ if (sheet->state != SHEET_STATE_FLOAT && sheet->state != SHEET_STATE_FLOAT_START)
+ return;
+
+ g_signal_handler_disconnect(G_OBJECT (sheet), sheet->priv->float_handler_id);
+
+ gtk_object_destroy (GTK_OBJECT (group));
+
+ /*
+ * If the state is _START, the items are not yet put in the
+ * object_group. This means we have to destroy them one by one.
+ */
+ if (sheet->state == SHEET_STATE_FLOAT_START) {
+ for (list = sheet->priv->floating_objects; list; list = list->next) {
+ gtk_object_destroy (GTK_OBJECT (list->data));
+ }
+ }
+
+ sheet->priv->floating_group = GNOME_CANVAS_GROUP (
+ gnome_canvas_item_new (
+ sheet->object_group,
+ gnome_canvas_group_get_type (),
+ "x", 0.0,
+ "y", 0.0,
+ NULL)
+ );
+
+ sheet->priv->float_handler_id = 0;
+ sheet->state = SHEET_STATE_NONE;
+ schematic_view_clear_ghosts (sv);
+}
+
+/*
+ * Event handler for a "floating" group of objects.
+ */
+int
+sheet_item_floating_event (Sheet *sheet, const GdkEvent *event, SchematicView *schematic_view)
+{
+ GnomeCanvas *canvas;
+ SheetPriv *priv;
+ GList *list;
+ static SheetPos delta, tmp;
+ static int control_key_down = 0;
+
+ /* Remember the last position of the mouse cursor. */
+ static double last_x, last_y;
+
+ /* Mouse cursor position in window coordinates, snapped to the grid
+ spacing. */
+ double snapped_x, snapped_y;
+
+ /* Move the selected item(s) by this movement. */
+ double dx, dy;
+
+ /* The sheet is scrolled by (canvas coordinates): */
+ int offset_x, offset_y;
+
+ /* The selected group's bounding box in window resp. canvas coordinates. */
+ double x1, y1, x2, y2;
+ int cx1, cy1, cx2, cy2;
+
+ /* The sheet's width and the its viewport's width. */
+ guint sheet_width, sheet_height;
+
+ g_return_val_if_fail (sheet != NULL, FALSE);
+ g_return_val_if_fail (IS_SHEET (sheet), FALSE);
+ g_return_val_if_fail (schematic_view != NULL, FALSE);
+ g_return_val_if_fail (IS_SCHEMATIC_VIEW (schematic_view), FALSE);
+ /* assert? */
+ g_return_val_if_fail (sheet->priv->floating_objects != NULL, FALSE);
+
+ priv = sheet->priv;
+ canvas = GNOME_CANVAS (sheet);
+
+ switch (event->type) {
+ case GDK_BUTTON_RELEASE:
+ g_signal_stop_emission_by_name (G_OBJECT (sheet), "event");
+ break;
+
+ case GDK_BUTTON_PRESS:
+ if (sheet->state != SHEET_STATE_FLOAT)
+ return TRUE;
+
+ switch (event->button.button) {
+ case 2:
+ case 4:
+ case 5:
+ return FALSE;
+
+ case 1:
+ control_key_down = event->button.state & GDK_CONTROL_MASK;
+
+ /* Continue adding if CTRL is pressed */
+ if (!control_key_down) {
+ sheet->state = SHEET_STATE_NONE;
+ g_signal_stop_emission_by_name (G_OBJECT (sheet), "event");
+ g_signal_handler_disconnect ( G_OBJECT (sheet), sheet->priv->float_handler_id);
+ sheet->priv->float_handler_id = 0;
+ }
+
+ g_object_get (G_OBJECT (sheet->priv->floating_group),
+ "x", &tmp.x,
+ "y", &tmp.y,
+ NULL);
+
+ delta.x = tmp.x - delta.x;
+ delta.y = tmp.y - delta.y;
+
+ for (list = priv->floating_objects; list; list = list->next) {
+ SheetItem *floating_item;
+ ItemData *floating_data;
+ /*
+ * Destroy the ghost item and place a real item.
+ */
+ floating_item = list->data;
+ if (!control_key_down)
+ floating_data = sheet_item_get_data (floating_item);
+ else
+ floating_data = item_data_clone (sheet_item_get_data (floating_item));
+
+ g_object_ref (G_OBJECT (floating_data));
+
+ item_data_move (floating_data, &delta);
+ schematic_add_item (schematic_view_get_schematic (schematic_view),
+ floating_data);
+
+ if (!control_key_down)
+ gtk_object_destroy (GTK_OBJECT(floating_item));
+ }
+
+ if (!control_key_down) {
+ g_list_free (sheet->priv->floating_objects);
+ sheet->priv->floating_objects = NULL;
+ } else {
+ gtk_object_set (GTK_OBJECT (sheet->priv->floating_group),
+ "x", tmp.x,
+ "y", tmp.y,
+ NULL);
+ }
+ delta.x = 0;
+ delta.y = 0;
+ break;
+
+ case 3:
+ /*
+ * Cancel the "float-placement" for button-3 clicks.
+ */
+ g_signal_stop_emission_by_name (G_OBJECT (sheet), "event");
+ sheet_item_cancel_floating (schematic_view);
+ break;
+ }
+ break;
+
+ case GDK_2BUTTON_PRESS:
+ case GDK_3BUTTON_PRESS:
+ g_signal_stop_emission_by_name (G_OBJECT (sheet), "event");
+ return TRUE;
+
+ case GDK_MOTION_NOTIFY:
+ if (sheet->state != SHEET_STATE_FLOAT &&
+ sheet->state != SHEET_STATE_FLOAT_START)
+ return FALSE;
+
+ g_signal_stop_emission_by_name (G_OBJECT (sheet), "event");
+
+ if (sheet->state == SHEET_STATE_FLOAT_START) {
+ sheet->state = SHEET_STATE_FLOAT;
+
+ /*
+ * Reparent the selected objects so that we can
+ * move them efficiently.
+ */
+ for (list = priv->floating_objects; list; list = list->next) {
+ sheet_item_reparent (SHEET_ITEM (list->data), priv->floating_group);
+ }
+
+ gtk_object_get (GTK_OBJECT (sheet->priv->floating_group),
+ "x", &delta.x,
+ "y", &delta.y,
+ NULL);
+
+ /*
+ * Center the objects around the mouse pointer.
+ */
+ gnome_canvas_item_get_bounds (GNOME_CANVAS_ITEM (priv->floating_group),
+ &x1, &y1, &x2, &y2);
+
+ gnome_canvas_window_to_world (canvas, event->motion.x, event->motion.y,
+ &snapped_x, &snapped_y);
+ snap_to_grid (sheet->grid, &snapped_x, &snapped_y);
+
+ dx = snapped_x - (x1 + (x2 - x1) / 2);
+ dy = snapped_y - (y1 + (y2 - y1) / 2);
+ snap_to_grid (sheet->grid, &dx, &dy);
+
+ gnome_canvas_item_move (GNOME_CANVAS_ITEM (priv->floating_group),
+ dx, dy);
+
+ x1 += dx;
+ y1 += dy;
+ x2 += dx;
+ y2 += dy;
+
+ last_x = snapped_x;
+ last_y = snapped_y;
+
+ return TRUE;
+ }
+
+ /*
+ * We have to convert from window to world coordinates here,
+ * since we get the coordinates relative the sheet and not the
+ * item like we do in sheet_item_event ().
+ */
+ gnome_canvas_window_to_world (canvas, event->motion.x, event->motion.y,
+ &snapped_x, &snapped_y);
+
+ snap_to_grid (sheet->grid, &snapped_x, &snapped_y);
+
+ /* Calculate which amount to move the selected objects by. */
+ dx = snapped_x - last_x;
+ dy = snapped_y - last_y;
+
+ /* We need the bounding box to check that we don't move anything
+ off-sheet. */
+ gnome_canvas_item_get_bounds (GNOME_CANVAS_ITEM (priv->floating_group),
+ &x1, &y1, &x2, &y2);
+
+ x1 += dx;
+ x2 += dx;
+ y1 += dy;
+ y2 += dy;
+
+ gnome_canvas_get_scroll_offsets (canvas, &offset_x, &offset_y);
+ gnome_canvas_w2c (canvas, x1, y1, &cx1, &cy1);
+ gnome_canvas_w2c (canvas, x2, y2, &cx2, &cy2);
+ sheet_get_size_pixels (sheet, &sheet_width, &sheet_height);
+
+ /* Check that we don't move outside the sheet horizontally */
+ if (cx1 <= 0){ /* leftmost edge */
+ dx = dx - x1;
+ snap_to_grid (sheet->grid, &dx, NULL);
+ snapped_x = last_x + dx;
+ } else if (cx2 >= sheet_width){ /* rightmost edge */
+ dx = dx - (x2 - sheet_width/sheet->priv->zoom);
+ snap_to_grid (sheet->grid, &dx, NULL);
+ snapped_x = last_x + dx;
+ }
+
+ /* And vertically */
+ if (cy1 <= 0){ /* upper edge */
+ dy = dy - y1;
+ snap_to_grid (sheet->grid, NULL, &dy);
+ snapped_y = last_y + dy;
+ } else if (cy2 >= sheet_height){ /* lower edge */
+ dy = dy - (y2 - sheet_height/sheet->priv->zoom);
+ snap_to_grid (sheet->grid, NULL, &dy);
+ snapped_y = last_y + dy;
+ }
+
+ last_x = snapped_x;
+ last_y = snapped_y;
+
+ if (dx != 0 || dy != 0){
+ gnome_canvas_item_move (GNOME_CANVAS_ITEM (priv->floating_group),
+ dx, dy);
+ }
+ break;
+
+ case GDK_KEY_PRESS:
+ switch (event->key.keyval) {
+ case GDK_r:
+ schematic_view_rotate_ghosts (schematic_view);
+ {
+ int x, y;
+
+ gdk_window_get_pointer (GDK_WINDOW (GTK_WIDGET (sheet)->window),
+ &x, &y, NULL);
+ gnome_canvas_window_to_world (GNOME_CANVAS (sheet), x, y,
+ &snapped_x, &snapped_y);
+
+ /*
+ * Center the objects around the mouse pointer.
+ */
+ gnome_canvas_item_get_bounds (GNOME_CANVAS_ITEM (priv->floating_group),
+ &x1, &y1, &x2, &y2);
+
+ snap_to_grid (sheet->grid, &snapped_x, &snapped_y);
+
+ dx = snapped_x - (x1 + (x2 - x1) / 2);
+ dy = snapped_y - (y1 + (y2 - y1) / 2);
+ snap_to_grid (sheet->grid, &dx, &dy);
+
+ gnome_canvas_item_move (GNOME_CANVAS_ITEM (priv->floating_group),
+ dx, dy);
+
+ last_x = snapped_x;
+ last_y = snapped_y;
+ }
+ break;
+ default:
+ return FALSE;
+ }
+ return TRUE;
+
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+gboolean
+sheet_item_select (SheetItem *item, gboolean select)
+{
+ g_return_val_if_fail (item != NULL, FALSE);
+ g_return_val_if_fail (IS_SHEET_ITEM (item), FALSE);
+
+ if ((item->priv->selected && select) ||
+ (!item->priv->selected && !select)) {
+ return FALSE;
+ }
+
+ g_signal_emit_by_name (G_OBJECT (item), "selection_changed", select);
+ item->priv->selected = select;
+
+ return TRUE;
+}
+
+void
+sheet_item_select_in_area (SheetItem *item, SheetPos *p1, SheetPos *p2)
+{
+ SheetItemClass *si_class;
+ gboolean in_area;
+
+ g_return_if_fail (item != NULL);
+ g_return_if_fail (IS_SHEET_ITEM (item));
+ g_return_if_fail (p1 != NULL);
+ g_return_if_fail (p2 != NULL);
+
+ si_class = SHEET_ITEM_CLASS (GTK_OBJECT_GET_CLASS (item));
+ in_area = si_class->is_in_area (item, p1, p2);
+
+ if (in_area && !item->priv->selected)
+ sheet_item_select (item, TRUE);
+ else if (!in_area && item->priv->selected &&
+ !item->priv->preserve_selection)
+ sheet_item_select (item, FALSE);
+}
+
+/*
+ * sheet_item_reparent ()
+ *
+ * Reparent a sheet object without moving it on the sheet.
+ */
+void
+sheet_item_reparent (SheetItem *object, GnomeCanvasGroup *group)
+{
+ double x1, y1, x2, y2;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (IS_SHEET_ITEM (object));
+ g_return_if_fail (group != NULL);
+ g_return_if_fail (GNOME_IS_CANVAS_GROUP (group));
+
+ g_object_get (G_OBJECT (object),
+ "x", &x1,
+ "y", &y1,
+ NULL);
+
+ gnome_canvas_item_i2w (GNOME_CANVAS_ITEM (object), &x1, &y1);
+
+ gnome_canvas_item_reparent (GNOME_CANVAS_ITEM (object), group);
+
+ g_object_get (G_OBJECT (object), "x", &x2, "y", &y2, NULL);
+
+ gnome_canvas_item_i2w (GNOME_CANVAS_ITEM (object), &x2, &y2);
+
+ gnome_canvas_item_move (GNOME_CANVAS_ITEM (object), x1 - x2, y1 - y2);
+
+ /* This is needed because of a bug (?) in gnome-libs. */
+ gnome_canvas_item_request_update (GNOME_CANVAS_ITEM (object));
+}
+
+void
+sheet_item_edit_properties (SheetItem *item)
+{
+ SheetItemClass *si_class;
+
+ g_return_if_fail (item != NULL);
+ g_return_if_fail (IS_SHEET_ITEM (item));
+
+ si_class = SHEET_ITEM_CLASS (GTK_OBJECT_GET_CLASS (item));
+
+ if (si_class->edit_properties)
+ si_class->edit_properties (item);
+}
+
+void
+sheet_item_rotate (SheetItem *sheet_item, int angle, SheetPos *center)
+{
+ g_return_if_fail (sheet_item != NULL);
+ g_return_if_fail (IS_SHEET_ITEM (sheet_item));
+
+ item_data_rotate (sheet_item->priv->data, angle, center);
+}
+
+void
+sheet_item_paste (SchematicView *schematic_view, ClipboardData *data)
+{
+ SheetItemClass *item_class;
+ ItemDataClass *id_class;
+ ItemData *item_data, *clone;
+
+ g_return_if_fail (schematic_view != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (schematic_view));
+ g_return_if_fail (data != NULL);
+
+ item_data = ITEM_DATA (clipboard_data_get_item_data (data));
+
+ id_class = ITEM_DATA_CLASS (G_OBJECT_GET_CLASS (item_data));
+ if (id_class->clone == NULL)
+ return;
+
+ /*
+ * Duplicate the data for the item and paste the item on the sheet.
+ */
+ item_class = SHEET_ITEM_CLASS (clipboard_data_get_item_class (data));
+ if (item_class->paste) {
+ clone = id_class->clone (item_data);
+ item_class->paste (schematic_view, clone);
+ }
+}
+
+ItemData *
+sheet_item_get_data (SheetItem *item)
+{
+ g_return_val_if_fail (item != NULL, NULL);
+ g_return_val_if_fail (IS_SHEET_ITEM (item), NULL);
+
+ return item->priv->data;
+}
+
+Sheet *
+sheet_item_get_sheet (SheetItem *item)
+{
+ g_return_val_if_fail (item != NULL, NULL);
+ g_return_val_if_fail (IS_SHEET_ITEM (item), NULL);
+
+ return SHEET (GNOME_CANVAS_ITEM (item)->canvas);
+}
+
+gboolean
+sheet_item_get_selected (SheetItem *item)
+{
+ g_return_val_if_fail (item != NULL, FALSE);
+ g_return_val_if_fail (IS_SHEET_ITEM (item), FALSE);
+
+ return item->priv->selected;
+}
+
+gboolean
+sheet_item_get_preserve_selection (SheetItem *item)
+{
+ g_return_val_if_fail (item != NULL, FALSE);
+ g_return_val_if_fail (IS_SHEET_ITEM (item), FALSE);
+
+ return item->priv->preserve_selection;
+}
+
+void
+sheet_item_set_preserve_selection (SheetItem *item, gboolean set)
+{
+ g_return_if_fail (item != NULL);
+ g_return_if_fail (IS_SHEET_ITEM (item));
+
+ item->priv->preserve_selection = set;
+}
+
+void
+sheet_item_place (SheetItem *item, SchematicView *sv)
+{
+ SheetItemClass *si_class;
+
+ g_return_if_fail (item != NULL);
+ g_return_if_fail (IS_SHEET_ITEM (item));
+
+ si_class = SHEET_ITEM_CLASS (GTK_OBJECT_GET_CLASS (item));
+
+ if (si_class->place)
+ si_class->place (item, sv);
+}
+
+void
+sheet_item_place_ghost (SheetItem *item, SchematicView *sv)
+{
+ SheetItemClass *si_class;
+
+ g_return_if_fail (item != NULL);
+ g_return_if_fail (IS_SHEET_ITEM (item));
+
+ si_class = SHEET_ITEM_CLASS (GTK_OBJECT_GET_CLASS (item));
+
+ if (si_class->place_ghost)
+ si_class->place_ghost (item, sv);
+}
+
+void
+sheet_item_add_menu (SheetItem *item, const char *menu,
+ const GtkActionEntry *action_entries, int nb_entries)
+{
+ GError *error = NULL;
+ gtk_action_group_add_actions (item->priv->action_group,
+ action_entries,
+ nb_entries,
+ NULL);
+
+ if (!gtk_ui_manager_add_ui_from_string (item->priv->ui_manager, menu, -1, &error)) {
+ g_message ("building menus failed: %s", error->message);
+ g_error_free (error);
+ exit (EXIT_FAILURE);
+ }
+}
diff --git a/src/sheet/sheet-item.h b/src/sheet/sheet-item.h
new file mode 100644
index 0000000..d7d544f
--- /dev/null
+++ b/src/sheet/sheet-item.h
@@ -0,0 +1,129 @@
+/*
+ * sheet-item.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __SHEET_ITEM_H
+#define __SHEET_ITEM_H
+
+#include <gtk/gtk.h>
+#include <glib.h>
+#include <libgnomecanvas/libgnomecanvas.h>
+#include "sheet-pos.h"
+#include "item-data.h"
+
+
+#define TYPE_SHEET_ITEM (sheet_item_get_type())
+#define SHEET_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST(obj, sheet_item_get_type (), SheetItem))
+#define SHEET_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST(klass, sheet_item_get_type (), SheetItemClass))
+#define IS_SHEET_ITEM(obj) (G_TYPE_INSTANCE_GET_CLASS(obj, TYPE_SHEET_ITEM, SheetItemClass))
+
+typedef struct _SheetItem SheetItem;
+typedef struct _SheetItemClass SheetItemClass;
+typedef struct _SheetItemPriv SheetItemPriv;
+
+#include "schematic-view.h"
+#include "sheet.h"
+#include "clipboard.h"
+
+struct _SheetItem {
+ GnomeCanvasGroup canvas_group;
+ SheetItemPriv *priv;
+};
+
+struct _SheetItemClass {
+ GnomeCanvasGroupClass parent_class;
+
+ /*
+ * Methods.
+ */
+ gboolean (*is_in_area) (SheetItem *item, SheetPos *p1, SheetPos *p2);
+ void (*show_labels) (SheetItem *sheet_item, gboolean show);
+ void (*edit_properties) (SheetItem *item);
+ void (*paste) (SchematicView *schematic_view,
+ ItemData *data);
+ void (*place) (SheetItem *item, SchematicView *sv);
+ void (*place_ghost) (SheetItem *item, SchematicView *sv);
+
+ /*
+ * Signal handlers.
+ */
+ void (*moved) (SheetItem *item);
+ void (*selection_changed)(SheetItem *item);
+ void (*mouse_over) (SheetItem *item);
+};
+
+GType sheet_item_get_type (void);
+
+void sheet_item_select_all (SchematicView *sv,
+ gboolean select);
+
+gboolean sheet_item_select (SheetItem *item,
+ gboolean select);
+
+Sheet *sheet_item_get_sheet (SheetItem *item);
+
+int sheet_item_event (SheetItem *sheet_item,
+ const GdkEvent *event,
+ SchematicView *sv);
+
+int sheet_item_floating_event (Sheet *sheet,
+ const GdkEvent *event,
+ SchematicView *schematic_view);
+
+void sheet_item_reparent (SheetItem *item,
+ GnomeCanvasGroup *group);
+
+void sheet_item_cancel_floating (SchematicView *sv);
+
+void sheet_item_edit_properties (SheetItem *item);
+
+ItemData *sheet_item_get_data (SheetItem *item);
+
+void sheet_item_paste (SchematicView *schematic_view,
+ ClipboardData *data);
+
+void sheet_item_rotate (SheetItem *sheet_item,
+ int angle, SheetPos *center);
+
+gboolean sheet_item_get_selected (SheetItem *item);
+
+gboolean sheet_item_get_preserve_selection (SheetItem *item);
+
+void sheet_item_set_preserve_selection (SheetItem *item,
+ gboolean set);
+
+void sheet_item_select_in_area (SheetItem *item,
+ SheetPos *p1,
+ SheetPos *p2);
+
+void sheet_item_place (SheetItem *item, SchematicView *sv);
+void sheet_item_place_ghost (SheetItem *item, SchematicView *sv);
+void sheet_item_add_menu (SheetItem *item, const char *menu,
+ const GtkActionEntry *action_entries, int nb_entries);
+
+#endif
diff --git a/src/sheet/sheet-private.h b/src/sheet/sheet-private.h
new file mode 100644
index 0000000..14025ee
--- /dev/null
+++ b/src/sheet/sheet-private.h
@@ -0,0 +1,54 @@
+/*
+ * sheet-private.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __SHEET_PRIVATE_H
+#define __SHEET_PRIVATE_H
+
+#include "sheet.h"
+
+struct _SheetPriv {
+
+ int wire_handler_id; /* Keeps the current signal handler for wire
+ creation. */
+ int float_handler_id; /* Keeps the signal handler for floating objects. */
+ int scroll_timeout_id;
+
+ double zoom;
+ gulong width;
+ gulong height;
+
+ void *current_object; /* SheetItem */
+
+ GnomeCanvasGroup *selected_group;
+ GnomeCanvasGroup *floating_group;
+ GList *selected_objects;
+ GList *floating_objects;
+};
+
+#endif
diff --git a/src/sheet/sheet.c b/src/sheet/sheet.c
new file mode 100644
index 0000000..aa73760
--- /dev/null
+++ b/src/sheet/sheet.c
@@ -0,0 +1,469 @@
+/*
+ * sheet.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <gdk/gdkprivate.h>
+#include "sheet-private.h"
+#include "sheet-item.h"
+#include "node-store.h"
+#include "wire-item.h"
+#include "part-item.h"
+#include "grid.h"
+
+static void sheet_class_init (SheetClass *klass);
+static void sheet_init (Sheet *sheet);
+static void sheet_set_property (GObject *object, guint prop_id,
+ const GValue *value, GParamSpec *spec);
+static void sheet_get_property (GObject *object, guint prop_id,
+ GValue *value, GParamSpec *spec);
+static void sheet_destroy (GtkObject *object);
+static void sheet_set_zoom (const Sheet *sheet, double zoom);
+static void sheet_realized (GtkWidget *widget, gpointer data);
+
+enum {
+ SELECTION_CHANGED,
+ BUTTON_PRESS,
+ CONTEXT_CLICK,
+ CANCEL,
+ RESET_TOOL,
+ LAST_SIGNAL
+};
+static guint signals[LAST_SIGNAL] = { 0 };
+
+GnomeCanvasClass *sheet_parent_class = NULL;
+
+enum {
+ ARG_0,
+ ARG_ZOOM
+};
+
+GType
+sheet_get_type ()
+{
+ static GType sheet_type = 0;
+
+ if (!sheet_type) {
+ static const GTypeInfo sheet_info = {
+ sizeof(SheetClass),
+ NULL,
+ NULL,
+ (GClassInitFunc)sheet_class_init,
+ NULL,
+ NULL,
+ sizeof(Sheet),
+ 0,
+ (GInstanceInitFunc)sheet_init,
+ NULL
+ };
+
+ sheet_type = g_type_register_static(GNOME_TYPE_CANVAS,
+ "Sheet", &sheet_info, 0);
+ }
+ return sheet_type;
+}
+
+static void
+sheet_class_init (SheetClass *sheet_class)
+{
+ GObjectClass *object_class;
+ GtkWidgetClass *widget_class;
+
+ object_class = G_OBJECT_CLASS (sheet_class);
+ widget_class = GTK_WIDGET_CLASS (sheet_class);
+ sheet_parent_class = g_type_class_peek(GNOME_TYPE_CANVAS);
+
+ object_class->set_property = sheet_set_property;
+ object_class->get_property = sheet_get_property;
+
+ g_object_class_install_property(
+ object_class,
+ ARG_ZOOM,
+ g_param_spec_double("zoom", "Sheet::zoom", "the zoom factor",
+ 0.01f, 10.0f, 1.0f, G_PARAM_READWRITE)
+ );
+
+ //object_class->destroy = sheet_destroy;
+
+ /* Signals. */
+ signals[SELECTION_CHANGED] = g_signal_new ("selection_changed",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (SheetClass, selection_changed),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ signals[BUTTON_PRESS] = g_signal_new ("button_press",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(SheetClass, button_press),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ /* TODO deberia ser boolean? */
+ G_TYPE_NONE, 1, GDK_TYPE_EVENT);
+ signals[CONTEXT_CLICK] = g_signal_new ("context_click",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(SheetClass, context_click),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_POINTER);
+ signals[CONTEXT_CLICK] = g_signal_new ("cancel",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(SheetClass, cancel),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ signals[RESET_TOOL] = g_signal_new ("reset_tool",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(SheetClass, reset_tool),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+}
+
+static void
+sheet_init (Sheet *sheet)
+{
+ sheet->priv = g_new0 (SheetPriv, 1);
+ sheet->priv->zoom = 1.0;
+ sheet->priv->selected_objects = NULL;
+ sheet->priv->selected_group = NULL;
+ sheet->priv->floating_group = NULL;
+ sheet->priv->wire_handler_id = 0;
+ sheet->priv->float_handler_id = 0;
+
+ sheet->state = SHEET_STATE_NONE;
+
+/* GNOME_CANVAS (sheet)->aa = TRUE;*/
+}
+
+void
+sheet_get_zoom (const Sheet *sheet, gdouble *zoom)
+{
+ *zoom = sheet->priv->zoom;
+}
+
+static void
+sheet_set_zoom (const Sheet *sheet, double zoom)
+{
+ gnome_canvas_set_pixels_per_unit (GNOME_CANVAS (sheet), zoom);
+ sheet->priv->zoom = zoom;
+}
+
+void
+sheet_change_zoom (const Sheet *sheet, gdouble rate)
+{
+ sheet->priv->zoom *= rate;
+
+ gnome_canvas_set_pixels_per_unit (GNOME_CANVAS (sheet), sheet->priv->zoom);
+}
+
+static void
+sheet_realized (GtkWidget *widget, gpointer data)
+{
+ GdkWindow *window;
+ GdkColormap *colormap;
+ GtkStyle *style;
+
+ /*
+ * We set the background pixmap to NULL so that X won't clear
+ * exposed areas and thus be faster.
+ */
+ gdk_window_set_back_pixmap (GTK_LAYOUT (widget)->bin_window, NULL, FALSE);
+
+ window = widget->window;
+
+ /*
+ * Set the background to white.
+ */
+ style = gtk_style_copy (widget->style);
+ colormap = gtk_widget_get_colormap (widget);
+ gdk_color_white (colormap, &style->bg[GTK_STATE_NORMAL]);
+ gtk_widget_set_style (widget, style);
+ gtk_style_unref (style);
+}
+
+GtkWidget *
+sheet_new (int width, int height)
+{
+ GnomeCanvas *sheet_canvas;
+ GnomeCanvasGroup *sheet_group;
+ GnomeCanvasPoints *points;
+ Sheet *sheet;
+ GtkWidget *sheet_widget;
+
+ /* Creo el Canvas con Anti-aliasing */
+ sheet = SHEET(g_object_new(TYPE_SHEET, NULL));
+
+ g_signal_connect(G_OBJECT(sheet),
+ "realize", G_CALLBACK(sheet_realized), 0);
+
+ sheet_canvas = GNOME_CANVAS(sheet);
+ sheet_group = GNOME_CANVAS_GROUP(sheet_canvas->root);
+ sheet_widget = GTK_WIDGET(sheet);
+
+ gnome_canvas_set_scroll_region (sheet_canvas,
+ 0, 0, width + 20, height + 20);
+
+ /* Since there is no API for this (yet), tweak it directly. */
+ sheet_canvas->close_enough = 6.0;
+
+ sheet->priv->width = width;
+ sheet->priv->height = height;
+
+ /* Create the dot grid. */
+ sheet->grid = GRID (gnome_canvas_item_new (
+ sheet_group,
+ grid_get_type (),
+ "color", "dark gray",
+ "spacing", 10.0,
+ "snap", TRUE,
+ NULL));
+
+ grid_show (sheet->grid, TRUE);
+
+ /* Everything outside the sheet should be gray. */
+ /* top */
+ gnome_canvas_item_new (
+ sheet_group,
+ gnome_canvas_rect_get_type (),
+ "fill_color", "gray",
+ "outline_color", NULL,
+ "width_pixels", (int)1,
+ "x1", 0.0,
+ "y1", 0.0,
+ "x2", (double)width + 20,
+ "y2", 20.0,
+ NULL);
+
+ gnome_canvas_item_new (
+ sheet_group,
+ gnome_canvas_rect_get_type (),
+ "fill_color", "gray",
+ "outline_color", NULL,
+ "width_pixels", (int)1,
+ "x1", 0.0,
+ "y1", (double)height,
+ "x2", (double)width + 20,
+ "y2", (double)height + 20,
+ NULL);
+
+ /* right */
+ gnome_canvas_item_new (
+ sheet_group,
+ gnome_canvas_rect_get_type (),
+ "fill_color", "gray",
+ "outline_color", NULL,
+ "width_pixels", (int)1,
+ "x1", 0.0,
+ "y1", 0.0,
+ "x2", 20.0,
+ "y2", (double)height + 20,
+ NULL);
+
+ gnome_canvas_item_new (
+ sheet_group,
+ gnome_canvas_rect_get_type (),
+ "fill_color", "gray",
+ "outline_color", NULL,
+ "width_pixels", (int)1,
+ "x1", (double)width,
+ "y1", 0.0,
+ "x2", (double)width + 20,
+ "y2", (double)height + 20,
+ NULL);
+
+ /* Draw a thin black border around the sheet. */
+ points = gnome_canvas_points_new (5);
+ points->coords[0] = 20.0;
+ points->coords[1] = 20.0;
+ points->coords[2] = width;
+ points->coords[3] = 20.0;
+ points->coords[4] = width;
+ points->coords[5] = height;
+ points->coords[6] = 20.0;
+ points->coords[7] = height;
+ points->coords[8] = 20.0;
+ points->coords[9] = 20.0;
+ gnome_canvas_item_new (
+ sheet_group,
+ gnome_canvas_line_get_type (),
+ "fill_color", "black",
+ "width_pixels", (int)1,
+ "points", points,
+ NULL);
+
+ gnome_canvas_points_free (points);
+
+ /* Finally, create the object group that holds all objects. */
+ sheet->object_group = GNOME_CANVAS_GROUP(gnome_canvas_item_new (
+ gnome_canvas_root(GNOME_CANVAS(sheet_canvas)),
+ GNOME_TYPE_CANVAS_GROUP,
+ "x", 0.0,
+ "y", 0.0,
+ NULL));
+
+ sheet->priv->selected_group = GNOME_CANVAS_GROUP (gnome_canvas_item_new (
+ sheet->object_group,
+ GNOME_TYPE_CANVAS_GROUP,
+ "x", 0.0,
+ "y", 0.0,
+ NULL));
+
+ sheet->priv->floating_group = GNOME_CANVAS_GROUP (gnome_canvas_item_new (
+ sheet->object_group,
+ gnome_canvas_group_get_type (),
+ "x", 0.0,
+ "y", 0.0,
+ NULL));
+
+ return sheet_widget;
+}
+
+static void
+sheet_set_property (GObject *object,
+ guint prop_id, const GValue *value, GParamSpec *spec)
+{
+ const Sheet *sheet = SHEET (object);
+
+ switch (prop_id) {
+ case ARG_ZOOM:
+ sheet_set_zoom (sheet, g_value_get_double(value));
+ break;
+ }
+}
+
+static void
+sheet_get_property (GObject *object,
+ guint prop_id, GValue *value, GParamSpec *spec)
+{
+ const Sheet *sheet = SHEET (object);
+
+ switch (prop_id) {
+ case ARG_ZOOM:
+ g_value_set_double(value, sheet->priv->zoom);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(sheet, prop_id, spec);
+ break;
+ }
+}
+
+static void
+sheet_destroy (GtkObject *object)
+{
+ Sheet *sheet;
+ SheetPriv *priv;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (IS_SHEET (object));
+
+ sheet = SHEET (object);
+ priv = sheet->priv;
+
+ if (priv) {
+ g_list_free (priv->selected_objects);
+ g_list_free (priv->floating_objects);
+
+ /*
+ * We need to destroy this first so that things get destroyed in the
+ * right order. Label groups are destroyed in their parent parts'
+ * destroy handler, so when the sheet gets destroyed, label groups
+ * will screw things up if this is not done.
+ */
+ gtk_object_destroy (GTK_OBJECT (sheet->object_group));
+
+ g_free (priv);
+ sheet->priv = NULL;
+ }
+
+ if (GTK_OBJECT_CLASS (sheet_parent_class)->destroy)
+ (* GTK_OBJECT_CLASS (sheet_parent_class)->destroy) (object);
+}
+
+void
+sheet_scroll (const Sheet *sheet, int delta_x, int delta_y)
+{
+ GtkAdjustment *hadj, *vadj;
+ GtkAllocation *allocation;
+ gfloat vnew, hnew;
+ gfloat hmax, vmax;
+ const SheetPriv *priv = sheet->priv;
+
+ hadj = GTK_LAYOUT (sheet)->hadjustment;
+ vadj = GTK_LAYOUT (sheet)->vadjustment;
+
+ allocation = &GTK_WIDGET (sheet)->allocation;
+
+ if (priv->width > allocation->width)
+ hmax = (gfloat) (priv->width - allocation->width);
+ else
+ hmax = 0.0;
+
+ if (priv->height > allocation->height)
+ vmax = (gfloat) (priv->height - allocation->height);
+ else
+ vmax = 0.0;
+
+ hnew = CLAMP (hadj->value + (gfloat) delta_x, 0.0, hmax);
+ vnew = CLAMP (vadj->value + (gfloat) delta_y, 0.0, vmax);
+
+ if (hnew != hadj->value) {
+ hadj->value = hnew;
+ g_signal_emit_by_name (G_OBJECT (hadj), "value_changed");
+ }
+ if (vnew != vadj->value) {
+ vadj->value = vnew;
+ g_signal_emit_by_name (G_OBJECT (vadj), "value_changed");
+ }
+}
+
+void
+sheet_get_size_pixels (const Sheet *sheet, guint *width, guint *height)
+{
+ *width = sheet->priv->width * sheet->priv->zoom;
+ *height = sheet->priv->height * sheet->priv->zoom;
+}
+
+void
+sheet_dialog_set_parent (const Sheet *sheet, GtkDialog *dialog)
+{
+/* gtk_window_set_transient_for (
+ GTK_WINDOW (dialog),
+ GTK_WINDOW (SCHEMATIC (sheet->schematic)->toplevel)
+ );*/
+}
diff --git a/src/sheet/sheet.h b/src/sheet/sheet.h
new file mode 100644
index 0000000..d880743
--- /dev/null
+++ b/src/sheet/sheet.h
@@ -0,0 +1,92 @@
+/*
+ * sheet.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __SHEET_H
+#define __SHEET_H
+
+#include <libgnomecanvas/libgnomecanvas.h>
+#include <gtk/gtkdialog.h>
+#include "grid.h"
+
+typedef struct _Sheet Sheet;
+typedef struct _SheetPriv SheetPriv;
+typedef struct _SheetClass SheetClass;
+
+#define TYPE_SHEET (sheet_get_type())
+#define SHEET(obj) (G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_SHEET, Sheet))
+#define SHEET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST (klass, TYPE_SHEET, SheetClass))
+#define IS_SHEET(obj) (G_TYPE_CHECK_INSTANCE_TYPE (obj, TYPE_SHEET))
+
+typedef enum {
+ SHEET_STATE_NONE,
+ SHEET_STATE_DRAG_START,
+ SHEET_STATE_DRAG,
+ SHEET_STATE_FLOAT_START,
+ SHEET_STATE_FLOAT,
+ SHEET_STATE_WIRE,
+ SHEET_STATE_TEXTBOX_WAIT,
+ SHEET_STATE_TEXTBOX_START,
+ SHEET_STATE_TEXTBOX_CREATING
+} SheetState;
+
+struct _Sheet {
+ GnomeCanvas parent_canvas;
+ SheetState state;
+ GnomeCanvasGroup *object_group;
+ Grid *grid;
+ SheetPriv *priv;
+};
+
+struct _SheetClass {
+ GnomeCanvasClass parent_class;
+
+ void (*selection_changed) (Sheet *sheet);
+ gint (*button_press) (Sheet *sheet, GdkEventButton *event);
+ void (*context_click) (Sheet *sheet,
+ const char *name, gpointer data);
+ void (*cancel) (Sheet *sheet);
+ void (*reset_tool) (Sheet *sheet);
+};
+
+GType sheet_get_type (void);
+GtkWidget *sheet_new (int width, int height);
+void sheet_scroll (const Sheet *sheet, int dx, int dy);
+void sheet_get_size_pixels (const Sheet *sheet, guint *width, guint *height);
+int sheet_get_num_selected_items (const Sheet *sheet);
+gpointer sheet_get_first_selected_item (const Sheet *sheet);
+GSList *sheet_get_selected_items (const Sheet *sheet);
+void sheet_change_zoom (const Sheet *sheet, double rate);
+void sheet_get_zoom (const Sheet *sheet, gdouble *zoom);
+void sheet_dialog_set_parent (const Sheet *sheet, GtkDialog *dialog);
+void sheet_delete_selected_items (const Sheet *sheet);
+void sheet_rotate_selected_items (const Sheet *sheet);
+void sheet_rotate_floating_items (const Sheet *sheet);
+void sheet_reset_floating_items (const Sheet *sheet);
+
+#endif
diff --git a/src/sheet/textbox-item.c b/src/sheet/textbox-item.c
new file mode 100644
index 0000000..2354c55
--- /dev/null
+++ b/src/sheet/textbox-item.c
@@ -0,0 +1,699 @@
+/*
+ * textbox-item.c
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+/*
+ * TextboxItem object: the graphical representation of a textbox.
+ *
+ * Author:
+ * Richard Hult (rhult@hem2.passagen.se)
+ *
+ * (C) 1999, 2000 Richard Hult, http://www.dtek.chalmers.se/~d4hult/oregano/
+ */
+
+#include <math.h>
+#include <gnome.h>
+#include <glade/glade.h>
+#include "cursors.h"
+#include "sheet-private.h"
+#include "sheet-pos.h"
+#include "textbox-item.h"
+#include "textbox.h"
+#include "dialogs.h"
+
+#define NORMAL_COLOR "black"
+#define SELECTED_COLOR "green"
+#define TEXTBOX_FONT "Arial 10"
+
+static void textbox_item_class_init (TextboxItemClass *klass);
+static void textbox_item_init (TextboxItem *item);
+static void textbox_item_destroy (GtkObject *object);
+static void textbox_item_moved (SheetItem *object);
+
+static void textbox_rotated_callback (ItemData *data, int angle,
+ SheetItem *sheet_item);
+static void textbox_flipped_callback (ItemData *data, gboolean horizontal,
+ SheetItem *sheet_item);
+static void textbox_moved_callback (ItemData *data, SheetPos *pos,
+ SheetItem *item);
+static void textbox_text_changed_callback (ItemData *data, gchar *new_text,
+ SheetItem *item);
+static void textbox_font_changed_callback (ItemData *data, gchar *new_font,
+ SheetItem *item);
+
+static void textbox_item_paste (SchematicView *sv, ItemData *data);
+static void selection_changed (TextboxItem *item, gboolean select,
+ gpointer user_data);
+static int select_idle_callback (TextboxItem *item);
+static int deselect_idle_callback (TextboxItem *item);
+static gboolean is_in_area (SheetItem *object, SheetPos *p1, SheetPos *p2);
+inline static void get_cached_bounds (TextboxItem *item, SheetPos *p1,
+ SheetPos *p2);
+
+static void textbox_item_place (SheetItem *item, SchematicView *sv);
+static void textbox_item_place_ghost (SheetItem *item, SchematicView *sv);
+
+static void edit_cmd (GtkWidget *widget, SchematicView *sv);
+static void edit_textbox (SheetItem *sheet_item);
+
+typedef struct {
+ GtkDialog *dialog;
+ GtkFontSelection *font;
+ GtkEntry *entry;
+} TextboxPropDialog;
+
+static TextboxPropDialog *prop_dialog = NULL;
+static SheetItemClass *textbox_item_parent_class = NULL;
+
+/* Use EDIT!! */
+static const char *textbox_item_context_menu =
+"<ui>"
+" <popup name='ItemMenu'>"
+" <menuitem action='EditText'/>"
+" </popup>"
+"</ui>";
+
+static GtkActionEntry action_entries[] = {
+ {"EditText", GTK_STOCK_PROPERTIES, N_("_Edit the text..."), NULL,
+ N_("Edit the text"),G_CALLBACK (edit_cmd)}
+};
+
+enum {
+ TEXTBOX_ITEM_ARG_0,
+ TEXTBOX_ITEM_ARG_NAME
+};
+
+struct _TextboxItemPriv {
+ guint cache_valid : 1;
+
+ guint highlight : 1;
+
+ // FIXME: More members.
+ GnomeCanvasItem *text_canvas_item;
+
+ /*
+ * Cached bounding box. This is used to make
+ * the rubberband selection a bit faster.
+ */
+ SheetPos bbox_start;
+ SheetPos bbox_end;
+};
+
+GType
+textbox_item_get_type ()
+{
+ static GType textbox_item_type = 0;
+
+ if (!textbox_item_type) {
+ static const GTypeInfo textbox_item_info = {
+ sizeof(TextboxItemClass),
+ NULL,
+ NULL,
+ (GClassInitFunc)textbox_item_class_init,
+ NULL,
+ NULL,
+ sizeof(TextboxItem),
+ 0,
+ (GInstanceInitFunc)textbox_item_init,
+ NULL
+ };
+
+ textbox_item_type = g_type_register_static(TYPE_SHEET_ITEM,
+ "TextboxItem", &textbox_item_info, 0);
+ }
+ return textbox_item_type;
+}
+
+static void
+textbox_item_class_init (TextboxItemClass *textbox_item_class)
+{
+ GObjectClass *object_class;
+ GtkObjectClass *gtk_object_class;
+ SheetItemClass *sheet_item_class;
+
+ object_class = G_OBJECT_CLASS(textbox_item_class);
+ gtk_object_class = GTK_OBJECT_CLASS(textbox_item_class);
+ sheet_item_class = SHEET_ITEM_CLASS(textbox_item_class);
+ textbox_item_parent_class =
+ g_type_class_peek_parent(textbox_item_class);
+
+ gtk_object_class->destroy = textbox_item_destroy;
+
+ sheet_item_class->moved = textbox_item_moved;
+ sheet_item_class->paste = textbox_item_paste;
+ sheet_item_class->is_in_area = is_in_area;
+ sheet_item_class->selection_changed = (gpointer) selection_changed;
+ sheet_item_class->edit_properties = edit_textbox;
+ sheet_item_class->place = textbox_item_place;
+ sheet_item_class->place_ghost = textbox_item_place_ghost;
+}
+
+static void
+textbox_item_init (TextboxItem *item)
+{
+ TextboxItemPriv *priv;
+
+ priv = g_new0 (TextboxItemPriv, 1);
+ item->priv = priv;
+
+ priv->highlight = FALSE;
+ priv->cache_valid = FALSE;
+
+ sheet_item_add_menu (SHEET_ITEM (item), textbox_item_context_menu,
+ action_entries, G_N_ELEMENTS (action_entries));
+}
+
+static void
+textbox_item_destroy (GtkObject *object)
+{
+ TextboxItem *textbox;
+ TextboxItemPriv *priv;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (IS_TEXTBOX_ITEM (object));
+
+ textbox = TEXTBOX_ITEM (object);
+ priv = textbox->priv;
+
+ if (priv) {
+ if (priv->text_canvas_item) {
+ gtk_object_destroy(GTK_OBJECT(priv->text_canvas_item));
+ }
+ textbox->priv = NULL;
+ g_free (priv);
+ }
+
+ if (GTK_OBJECT_CLASS(textbox_item_parent_class)->destroy){
+ GTK_OBJECT_CLASS(textbox_item_parent_class)->destroy(object);
+ }
+}
+
+/*
+ * textbox_item_moved
+ *
+ * "moved" signal handler. Invalidates the bounding box cache.
+ */
+static void
+textbox_item_moved (SheetItem *object)
+{
+ TextboxItem *item;
+ TextboxItemPriv *priv;
+
+ item = TEXTBOX_ITEM (object);
+ priv = item->priv;
+
+ priv->cache_valid = FALSE;
+}
+
+TextboxItem *
+textbox_item_new (Sheet *sheet, Textbox *textbox)
+{
+ TextboxItem *item;
+ TextboxItemPriv *priv;
+ SheetPos pos;
+
+ g_return_val_if_fail(sheet != NULL, NULL);
+ g_return_val_if_fail(IS_SHEET(sheet), NULL);
+
+ item_data_get_pos(ITEM_DATA(textbox), &pos);
+
+ item = TEXTBOX_ITEM(gnome_canvas_item_new (
+ sheet->object_group,
+ textbox_item_get_type(),
+ "data", textbox,
+ "x", (double) pos.x,
+ "y", (double) pos.y,
+ NULL));
+
+ priv = item->priv;
+
+ priv->text_canvas_item = gnome_canvas_item_new (
+ GNOME_CANVAS_GROUP (item),
+ gnome_canvas_text_get_type (),
+ "x", 0.0,
+ "y", 0.0,
+ "text", textbox_get_text (textbox),
+ "fill_color", NORMAL_COLOR,
+ "anchor", GTK_ANCHOR_SW,
+ "font", TEXTBOX_FONT,
+ NULL);
+
+ g_signal_connect_object(G_OBJECT (textbox),
+ "rotated", G_CALLBACK(textbox_rotated_callback),
+ G_OBJECT(item), 0);
+ g_signal_connect_object(G_OBJECT (textbox),
+ "flipped", G_CALLBACK(textbox_flipped_callback),
+ G_OBJECT(item), 0);
+ g_signal_connect_object(G_OBJECT (textbox),
+ "moved", G_CALLBACK(textbox_moved_callback),
+ G_OBJECT(item), 0);
+ g_signal_connect_object(G_OBJECT (textbox),
+ "text_changed", G_CALLBACK(textbox_text_changed_callback),
+ G_OBJECT(item), 0);
+ g_signal_connect_object(G_OBJECT (textbox),
+ "font_changed", G_CALLBACK(textbox_font_changed_callback),
+ G_OBJECT(item), 0);
+
+ textbox_update_bbox (textbox);
+
+ return item;
+}
+
+void
+textbox_item_signal_connect_placed (TextboxItem *textbox_item,
+ SchematicView *sv)
+{
+ g_signal_connect (
+ G_OBJECT (textbox_item),
+ "event",
+ G_CALLBACK(sheet_item_event),
+ sv);
+}
+
+static void
+textbox_rotated_callback (ItemData *data, int angle, SheetItem *sheet_item)
+{
+ TextboxItem *item;
+
+ g_return_if_fail (sheet_item != NULL);
+ g_return_if_fail (IS_TEXTBOX_ITEM (sheet_item));
+
+ item = TEXTBOX_ITEM (sheet_item);
+
+ item->priv->cache_valid = FALSE;
+}
+
+static void
+textbox_flipped_callback (ItemData *data,
+ gboolean horizontal, SheetItem *sheet_item)
+{
+ TextboxItem *item;
+
+ g_return_if_fail (sheet_item != NULL);
+ g_return_if_fail (IS_TEXTBOX_ITEM (sheet_item));
+
+ item = TEXTBOX_ITEM (sheet_item);
+
+ item->priv->cache_valid = FALSE;
+}
+
+static int
+select_idle_callback (TextboxItem *item)
+{
+ SheetPos bbox_start, bbox_end;
+ TextboxItemPriv *priv = item->priv;
+
+ get_cached_bounds (item, &bbox_start, &bbox_end);
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM (priv->text_canvas_item),
+ "fill_color", SELECTED_COLOR, NULL);
+
+ priv->highlight = TRUE;
+
+ return FALSE;
+}
+
+static int
+deselect_idle_callback (TextboxItem *item)
+{
+ TextboxItemPriv *priv = item->priv;
+
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM (priv->text_canvas_item),
+ "fill_color", NORMAL_COLOR, NULL);
+
+ priv->highlight = FALSE;
+
+ return FALSE;
+}
+
+static void
+selection_changed (TextboxItem *item, gboolean select, gpointer user_data)
+{
+ if (select)
+ gtk_idle_add ((gpointer) select_idle_callback, item);
+ else
+ gtk_idle_add ((gpointer) deselect_idle_callback, item);
+}
+
+static gboolean
+is_in_area (SheetItem *object, SheetPos *p1, SheetPos *p2)
+{
+ TextboxItem *item;
+ SheetPos bbox_start, bbox_end;
+
+ item = TEXTBOX_ITEM (object);
+
+ get_cached_bounds (item, &bbox_start, &bbox_end);
+
+ if (p1->x < bbox_start.x &&
+ p2->x > bbox_end.x &&
+ p1->y < bbox_start.y &&
+ p2->y > bbox_end.y)
+ return TRUE;
+
+ return FALSE;
+}
+
+/**
+ * Retrieves the bounding box. We use a caching scheme for this
+ * since it's too expensive to calculate it every time we need it.
+ */
+inline static void
+get_cached_bounds (TextboxItem *item, SheetPos *p1, SheetPos *p2)
+{
+ PangoFontDescription *font;
+ PangoFontMetrics *font_metric;
+ int width;
+ int rbearing;
+ int lbearing;
+ int ascent, descent;
+ SheetPos pos;
+
+ TextboxItemPriv *priv;
+ priv = item->priv;
+
+ if (!priv->cache_valid) {
+ SheetPos start_pos, end_pos;
+
+ font = pango_font_description_from_string(TEXTBOX_FONT);
+
+ item_data_get_pos (sheet_item_get_data (SHEET_ITEM (item)),
+ &pos);
+
+ start_pos.x = pos.x;
+ start_pos.y = pos.y-5;// - font->ascent;
+ end_pos.x = pos.x+5; // + rbearing;
+ end_pos.y = pos.y+5; // + font->descent;
+
+ priv->bbox_start = start_pos;
+ priv->bbox_end = end_pos;
+ priv->cache_valid = TRUE;
+ pango_font_description_free(font);
+ }
+
+ memcpy (p1, &priv->bbox_start, sizeof (SheetPos));
+ memcpy (p2, &priv->bbox_end, sizeof (SheetPos));
+
+}
+
+static void
+textbox_item_paste (SchematicView *sv, ItemData *data)
+{
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_TEXTBOX (data));
+
+ schematic_view_add_ghost_item (sv, data);
+}
+
+/**
+ * This is called when the textbox data was moved. Update the view accordingly.
+ */
+static void
+textbox_moved_callback (ItemData *data, SheetPos *pos, SheetItem *item)
+{
+ TextboxItem *textbox_item;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (data));
+ g_return_if_fail (item != NULL);
+ g_return_if_fail (IS_TEXTBOX_ITEM (item));
+
+ if (pos == NULL)
+ return;
+
+ textbox_item = TEXTBOX_ITEM (item);
+
+ /*
+ * Move the canvas item and invalidate the bbox cache.
+ */
+ gnome_canvas_item_move (GNOME_CANVAS_ITEM (item), pos->x, pos->y);
+ textbox_item->priv->cache_valid = FALSE;
+}
+
+static void
+textbox_text_changed_callback (ItemData *data,
+ gchar *new_text, SheetItem *item)
+{
+ TextboxItem *textbox_item;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (data));
+ g_return_if_fail (item != NULL);
+ g_return_if_fail (IS_TEXTBOX_ITEM (item));
+
+ textbox_item = TEXTBOX_ITEM (item);
+
+ gnome_canvas_item_set (
+ GNOME_CANVAS_ITEM ( textbox_item->priv->text_canvas_item ),
+ "text", new_text, NULL );
+
+}
+
+static void
+textbox_font_changed_callback (ItemData *data,
+ gchar *new_font, SheetItem *item)
+{
+ TextboxItem *textbox_item;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (data));
+ g_return_if_fail (item != NULL);
+ g_return_if_fail (IS_TEXTBOX_ITEM (item));
+ g_return_if_fail (new_font != NULL);
+
+ textbox_item = TEXTBOX_ITEM (item);
+
+ gnome_canvas_item_set (
+ GNOME_CANVAS_ITEM (textbox_item->priv->text_canvas_item),
+ "font", new_font, NULL);
+}
+
+static void
+textbox_item_place (SheetItem *item, SchematicView *sv)
+{
+ textbox_item_signal_connect_placed (TEXTBOX_ITEM (item), sv);
+
+ g_signal_connect (
+ G_OBJECT (item),
+ "double_clicked",
+ G_CALLBACK(edit_textbox),
+ item);
+}
+
+static void
+textbox_item_place_ghost (SheetItem *item, SchematicView *sv)
+{
+// textbox_item_signal_connect_placed (TEXTBOX_ITEM (item));
+}
+
+static gboolean
+create_textbox_event (Sheet *sheet, GdkEvent *event, SchematicView *sv)
+{
+ switch (event->type) {
+ case GDK_3BUTTON_PRESS:
+ case GDK_2BUTTON_PRESS:
+ return TRUE;
+
+ case GDK_BUTTON_PRESS:
+ if (event->button.button == 4 || event->button.button == 5)
+ return FALSE;
+
+ if (event->button.button == 1) {
+ if (sheet->state == SHEET_STATE_TEXTBOX_WAIT)
+ sheet->state = SHEET_STATE_TEXTBOX_START;
+
+ return TRUE;
+ } else
+ return FALSE;
+
+ case GDK_BUTTON_RELEASE:
+ if (event->button.button == 4 || event->button.button == 5)
+ return FALSE;
+
+ if (sheet->state == SHEET_STATE_TEXTBOX_START) {
+ Textbox *textbox;
+ SheetPos pos;
+
+ sheet->state = SHEET_STATE_NONE;
+
+ pos.x = event->button.x;
+ pos.y = event->button.y;
+
+ textbox = textbox_new (NULL);
+ item_data_set_pos (ITEM_DATA (textbox), &pos);
+ textbox_set_text (textbox, _("Label"));
+
+ schematic_add_item (schematic_view_get_schematic (sv),
+ ITEM_DATA (textbox));
+
+ g_signal_emit_by_name(G_OBJECT(sheet),
+ "reset_tool", NULL);
+ g_signal_handlers_disconnect_by_func (G_OBJECT (sheet),
+ G_CALLBACK(create_textbox_event), sv);
+ }
+
+ return TRUE;
+
+ default:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+ void
+textbox_item_cancel_listen (SchematicView *sv)
+{
+ Sheet *sheet;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+ sheet = schematic_view_get_sheet (sv);
+
+ sheet->state = SHEET_STATE_NONE;
+ g_signal_handlers_disconnect_by_func (G_OBJECT (sheet), G_CALLBACK(create_textbox_event), sv);
+}
+
+void
+textbox_item_listen (SchematicView *sv)
+{
+ Sheet *sheet;
+
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+
+// schematic_view_disconnect_handler (sv);
+ sheet = schematic_view_get_sheet (sv);
+
+ /*
+ * Connect to a signal handler that will
+ * let the user create a new textbox.
+ */
+ sheet->state = SHEET_STATE_TEXTBOX_WAIT;
+ g_signal_connect(G_OBJECT(sheet),
+ "event", G_CALLBACK(create_textbox_event), sv);
+}
+
+/*
+ * Go through the properties and commit the changes.
+ */
+static void
+edit_dialog_ok(TextboxItem *item)
+{
+ TextboxItemPriv *priv;
+ Textbox *textbox;
+ const gchar *value;
+
+ g_return_if_fail (item != NULL);
+ g_return_if_fail (IS_TEXTBOX_ITEM (item));
+
+ priv = item->priv;
+ textbox = TEXTBOX (sheet_item_get_data (SHEET_ITEM (item)));
+
+ value = gtk_entry_get_text(GTK_ENTRY(prop_dialog->entry));
+
+ textbox_set_text(textbox, value);
+ textbox_set_font(textbox,
+ gtk_font_selection_get_font_name(prop_dialog->font));
+}
+
+static void
+edit_textbox (SheetItem *sheet_item)
+{
+ Sheet *sheet;
+ TextboxItem *item;
+ TextboxItemPriv *priv;
+ Textbox *textbox;
+ char *msg, *value;
+ GladeXML *gui;
+
+ g_return_if_fail (sheet_item != NULL);
+ g_return_if_fail (IS_TEXTBOX_ITEM (sheet_item));
+
+ item = TEXTBOX_ITEM (sheet_item);
+ priv = item->priv;
+ textbox = TEXTBOX (sheet_item_get_data (sheet_item));
+
+ if (!g_file_test (OREGANO_GLADEDIR "/textbox-properties-dialog.glade",
+ G_FILE_TEST_EXISTS)) {
+ msg = g_strdup_printf (
+ _("The file %s could not be found. You might need to reinstall Oregano to fix this."),
+ OREGANO_GLADEDIR "/textbox-properties-dialog.glade");
+ oregano_error (_("Could not create textbox properties dialog"));
+ g_free (msg);
+ return;
+ }
+
+ gui = glade_xml_new (
+ OREGANO_GLADEDIR "/textbox-properties-dialog.glade",
+ NULL, NULL);
+ if (!gui) {
+ oregano_error (_("Could not create textbox properties dialog"));
+ return;
+ }
+
+ prop_dialog = g_new0 (TextboxPropDialog, 1);
+ prop_dialog->dialog = GTK_DIALOG (
+ glade_xml_get_widget (gui, "textbox-properties-dialog"));
+ prop_dialog->font = GTK_FONT_SELECTION (
+ glade_xml_get_widget (gui, "font_selector"));
+ prop_dialog->entry = GTK_ENTRY (glade_xml_get_widget (gui, "entry"));
+
+ value = textbox_get_font (textbox);
+ gtk_font_selection_set_font_name (
+ GTK_FONT_SELECTION (prop_dialog->font), value);
+
+ value = textbox_get_text(textbox);
+ gtk_entry_set_text (GTK_ENTRY (prop_dialog->entry), value);
+
+ sheet = sheet_item_get_sheet (SHEET_ITEM (item));
+ sheet_dialog_set_parent (sheet, (GtkDialog*) prop_dialog->dialog);
+
+ gtk_dialog_set_default_response (
+ GTK_DIALOG (prop_dialog->dialog), GTK_RESPONSE_OK);
+
+ gtk_dialog_run( GTK_DIALOG (prop_dialog->dialog));
+
+ edit_dialog_ok(item);
+
+ /* Clean the dialog */
+ gtk_widget_destroy(GTK_WIDGET(prop_dialog->dialog));
+ prop_dialog = NULL;
+}
+
+static void
+edit_cmd (GtkWidget *widget, SchematicView *sv)
+{
+ GList *list;
+
+ list = schematic_view_get_selection (sv);
+ if ((list != NULL) && IS_TEXTBOX_ITEM (list->data))
+ edit_textbox (list->data);
+}
diff --git a/src/sheet/textbox-item.h b/src/sheet/textbox-item.h
new file mode 100644
index 0000000..74edfff
--- /dev/null
+++ b/src/sheet/textbox-item.h
@@ -0,0 +1,67 @@
+/*
+ * textbox-item.h
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __TEXTBOX_ITEM_H
+#define __TEXTBOX_ITEM_H
+
+#include <gtk/gtk.h>
+#include "schematic-view.h"
+#include "sheet-item.h"
+#include "textbox.h"
+
+#define TEXTBOX_ITEM(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, textbox_item_get_type (), TextboxItem)
+#define TEXTBOX_ITEM_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, textbox_item_get_type (), TextboxItemClass)
+#define IS_TEXTBOX_ITEM(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, textbox_item_get_type ())
+
+typedef struct _TextboxItemPriv TextboxItemPriv;
+
+typedef enum {
+ TEXTBOX_DIR_NONE = 0,
+ TEXTBOX_DIR_HORIZ = 1,
+ TEXTBOX_DIR_VERT = 2,
+ TEXTBOX_DIR_DIAG = 3
+} TextboxDir;
+
+typedef struct {
+ SheetItem parent_object;
+ TextboxItemPriv *priv;
+} TextboxItem;
+
+typedef struct {
+ SheetItemClass parent_class;
+} TextboxItemClass;
+
+GType textbox_item_get_type (void);
+TextboxItem *textbox_item_new (Sheet *sheet, Textbox *textbox);
+void textbox_item_signal_connect_placed (TextboxItem *textbox_item, SchematicView *sv);
+void textbox_item_cancel_listen (SchematicView *sv);
+void textbox_item_listen (SchematicView *sv);
+
+
+#endif
diff --git a/src/sheet/wire-item.c b/src/sheet/wire-item.c
new file mode 100644
index 0000000..a5b542d
--- /dev/null
+++ b/src/sheet/wire-item.c
@@ -0,0 +1,916 @@
+/*
+ * wire-item.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <math.h>
+#include <gnome.h>
+#include "cursors.h"
+#include "sheet-private.h"
+#include "sheet-pos.h"
+#include "wire-item.h"
+#include "node-store.h"
+#include "wire.h"
+#include "wire-private.h"
+
+#define NORMAL_COLOR "blue"
+#define SELECTED_COLOR "green"
+#define HIGHLIGHT_COLOR "yellow"
+
+#define RESIZER_SIZE 4.0f
+
+static void wire_item_class_init (WireItemClass *klass);
+static void wire_item_init (WireItem *item);
+static void wire_item_set_arg (GtkObject *object, GtkArg *arg, guint arg_id);
+static void wire_item_get_arg (GtkObject *object, GtkArg *arg, guint arg_id);
+static void wire_item_destroy (GtkObject *object);
+static void wire_item_moved (SheetItem *object);
+
+static void wire_rotated_callback (ItemData *data, int angle,
+ SheetItem *sheet_item);
+static void wire_flipped_callback (ItemData *data, gboolean horizontal,
+ SheetItem *sheet_item);
+static void wire_moved_callback (ItemData *data, SheetPos *pos,
+ SheetItem *item);
+static void wire_changed_callback (Wire *, WireItem *item);
+static void wire_delete_callback (Wire *, WireItem *item);
+
+static void wire_item_paste (SchematicView *sv, ItemData *data);
+static void selection_changed (WireItem *item, gboolean select,
+ gpointer user_data);
+static int select_idle_callback (WireItem *item);
+static int deselect_idle_callback (WireItem *item);
+static gboolean is_in_area (SheetItem *object, SheetPos *p1, SheetPos *p2);
+inline static void get_bbox (WireItem *item, SheetPos *p1, SheetPos *p2);
+
+static void mouse_over_wire_cb (WireItem *item, SchematicView *sv);
+static void highlight_wire_cb (Wire *wire, WireItem *item);
+static int unhighlight_wire (WireItem *item);
+
+static void wire_item_place (SheetItem *item, SchematicView *sv);
+static void wire_item_place_ghost (SheetItem *item, SchematicView *sv);
+
+static SheetItemClass *wire_item_parent_class = NULL;
+
+enum {
+ WIRE_ITEM_ARG_0,
+ WIRE_ITEM_ARG_NAME
+};
+
+enum {
+ WIRE_RESIZER_NONE,
+ WIRE_RESIZER_1,
+ WIRE_RESIZER_2
+};
+
+struct _WireItemPriv {
+ guint cache_valid : 1;
+ guint resize_state;
+ guint highlight : 1;
+ WireDir direction; /* Direction of the wire. */
+
+ GnomeCanvasLine *line;
+ GnomeCanvasRect *resize1;
+ GnomeCanvasRect *resize2;
+
+ /*
+ * Cached bounding box. This is used to make
+ * the rubberband selection a bit faster.
+ */
+ SheetPos bbox_start;
+ SheetPos bbox_end;
+};
+
+GType
+wire_item_get_type ()
+{
+ static GType wire_item_type = 0;
+
+ if (!wire_item_type) {
+ static const GTypeInfo wire_item_info = {
+ sizeof (WireItemClass),
+ NULL,
+ NULL,
+ (GClassInitFunc)wire_item_class_init,
+ NULL,
+ NULL,
+ sizeof (WireItem),
+ 0,
+ (GInstanceInitFunc)wire_item_init,
+ NULL
+ };
+
+ wire_item_type = g_type_register_static(TYPE_SHEET_ITEM,
+ "WireItem", &wire_item_info, 0);
+ }
+ return wire_item_type;
+}
+
+static void
+wire_item_class_init (WireItemClass *wire_item_class)
+{
+ GObjectClass *object_class;
+ GtkObjectClass *gtk_object_class;
+ SheetItemClass *sheet_item_class;
+
+ object_class = G_OBJECT_CLASS(wire_item_class);
+ gtk_object_class = GTK_OBJECT_CLASS(wire_item_class);
+ sheet_item_class = SHEET_ITEM_CLASS(wire_item_class);
+ wire_item_parent_class = g_type_class_peek(TYPE_SHEET_ITEM);
+
+ gtk_object_class->destroy = wire_item_destroy;
+
+ sheet_item_class->moved = wire_item_moved;
+ sheet_item_class->paste = wire_item_paste;
+ sheet_item_class->is_in_area = is_in_area;
+ sheet_item_class->selection_changed = (gpointer) selection_changed;
+ sheet_item_class->place = wire_item_place;
+ sheet_item_class->place_ghost = wire_item_place_ghost;
+}
+
+static void
+wire_item_init (WireItem *item)
+{
+ WireItemPriv *priv;
+
+ priv = g_new0 (WireItemPriv, 1);
+
+ priv->direction = WIRE_DIR_NONE;
+ priv->highlight = FALSE;
+ priv->cache_valid = FALSE;
+
+ item->priv = priv;
+}
+
+static void
+wire_item_set_arg (GtkObject *object, GtkArg *arg, guint arg_id)
+{
+ WireItem *wire_item = WIRE_ITEM (object);
+
+ wire_item = WIRE_ITEM (object);
+
+ switch (arg_id) {
+ case WIRE_ITEM_ARG_NAME:
+ break;
+ }
+}
+
+static void
+wire_item_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
+{
+ WireItem *wire_item = WIRE_ITEM (object);
+
+ wire_item = WIRE_ITEM (object);
+
+ switch (arg_id) {
+ case WIRE_ITEM_ARG_NAME:
+ break;
+ default:
+ //arg->type = G_TYPE_INVALID;
+ break;
+ }
+}
+
+static void
+wire_item_destroy (GtkObject *object)
+{
+ WireItem *wire;
+ WireItemPriv *priv;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (IS_WIRE_ITEM (object));
+
+ wire = WIRE_ITEM (object);
+ priv = wire->priv;
+
+ if (priv) {
+ if (priv->line) {
+ /* TODO Check if destroy or unref have to be used for
+ * GnomeCanvasItem */
+ gtk_object_destroy (GTK_OBJECT (priv->line));
+ priv->line = NULL;
+ }
+ g_free (priv);
+ wire->priv = NULL;
+ }
+
+ if (GTK_OBJECT_CLASS(wire_item_parent_class)->destroy){
+ GTK_OBJECT_CLASS(wire_item_parent_class)->destroy(object);
+ }
+}
+
+/**
+ * "moved" signal handler. Invalidates the bounding box cache.
+ */
+static void
+wire_item_moved (SheetItem *object)
+{
+ WireItem *item;
+ WireItemPriv *priv;
+
+ item = WIRE_ITEM (object);
+ priv = item->priv;
+
+ priv->cache_valid = FALSE;
+}
+
+WireItem *
+wire_item_new (Sheet *sheet, Wire *wire)
+{
+ WireItem *item;
+ GnomeCanvasPoints *points;
+ WireItemPriv *priv;
+ SheetPos start_pos, length;
+
+ g_return_val_if_fail (sheet != NULL, NULL);
+ g_return_val_if_fail (IS_SHEET (sheet), NULL);
+
+ //g_object_ref (G_OBJECT(wire));
+ /* XXX Ver si hay equivalente gtk_object_sink (GTK_OBJECT (wire)); */
+
+ wire_get_pos_and_length (wire, &start_pos, &length);
+
+ /*
+ * Because of the GnomeCanvasGroup inheritance, a small hack is needed
+ * here. The group starts at the startpoint of the wire, and the line
+ * goes from (0,0) to (length.x, length.y).
+ */
+ item = WIRE_ITEM (gnome_canvas_item_new (
+ sheet->object_group,
+ wire_item_get_type (),
+ "data", wire,
+ "x", (double) start_pos.x,
+ "y", (double) start_pos.y,
+ NULL));
+
+ priv = item->priv;
+
+ priv->resize1 = GNOME_CANVAS_RECT (gnome_canvas_item_new (
+ GNOME_CANVAS_GROUP (item),
+ gnome_canvas_rect_get_type (),
+ "x1", -RESIZER_SIZE,
+ "y1", -RESIZER_SIZE,
+ "x2", RESIZER_SIZE,
+ "y2", RESIZER_SIZE,
+ "fill_color", "red",
+ "fill_color_rgba", 0x3cb37180,
+ "outline_color", "blue",
+ "width_pixels", 1,
+ NULL));
+
+ priv->resize2 = GNOME_CANVAS_RECT (gnome_canvas_item_new (
+ GNOME_CANVAS_GROUP (item),
+ gnome_canvas_rect_get_type (),
+ "x1", length.x-RESIZER_SIZE,
+ "y1", length.y-RESIZER_SIZE,
+ "x2", length.x+RESIZER_SIZE,
+ "y2", length.y+RESIZER_SIZE,
+ "fill_color", "red",
+ "fill_color_rgba", 0x3cb37180,
+ "outline_color", "blue",
+ "width_pixels", 1,
+ NULL));
+ gnome_canvas_item_hide (GNOME_CANVAS_ITEM (priv->resize1));
+ gnome_canvas_item_hide (GNOME_CANVAS_ITEM (priv->resize2));
+
+ points = gnome_canvas_points_new (2);
+ points->coords[0] = 0;
+ points->coords[1] = 0;
+ points->coords[2] = length.x;
+ points->coords[3] = length.y;
+
+ priv->line = GNOME_CANVAS_LINE (gnome_canvas_item_new (
+ GNOME_CANVAS_GROUP (item),
+ gnome_canvas_line_get_type (),
+ "points", points,
+ "fill_color", "blue",
+ "width_pixels", 1,
+ NULL));
+
+ gnome_canvas_points_free (points);
+
+ g_signal_connect_object(G_OBJECT(wire), "rotated",
+ G_CALLBACK(wire_rotated_callback), G_OBJECT(item), 0);
+ g_signal_connect_object(G_OBJECT(wire), "flipped",
+ G_CALLBACK(wire_flipped_callback), G_OBJECT(item), 0);
+ g_signal_connect_object(G_OBJECT(wire), "moved",
+ G_CALLBACK(wire_moved_callback), G_OBJECT(item), 0);
+
+ g_signal_connect (G_OBJECT (wire), "changed", G_CALLBACK (wire_changed_callback), item);
+ g_signal_connect (G_OBJECT (wire), "delete", G_CALLBACK (wire_delete_callback), item);
+ wire_update_bbox (wire);
+
+ return item;
+}
+
+static
+int wire_item_event (WireItem *wire_item, const GdkEvent *event, SchematicView *sv)
+{
+ SheetPos start_pos, length;
+ Wire *wire;
+ Sheet *sheet;
+ GnomeCanvas *canvas;
+ static double last_x, last_y;
+ double dx, dy, zoom;
+ /* The selected group's bounding box in window resp. canvas coordinates. */
+ double x1, y1, x2, y2;
+ static double bb_x1, bb_y1, bb_x2, bb_y2;
+ int cx1, cy1, cx2, cy2;
+ double snapped_x, snapped_y;
+ int sheet_width, sheet_height;
+ SheetPos pos;
+
+ sheet = schematic_view_get_sheet (sv);
+ canvas = GNOME_CANVAS (sheet);
+ g_object_get (G_OBJECT (wire_item), "data", &wire, NULL);
+
+ wire_get_pos_and_length (WIRE (wire), &start_pos, &length);
+ sheet_get_zoom (sheet, &zoom);
+
+ switch (event->type) {
+ case GDK_BUTTON_PRESS:
+ switch (event->button.button) {
+ case 1: {
+ g_signal_stop_emission_by_name (G_OBJECT (sheet), "event");
+ double x, y;
+ x = event->button.x - start_pos.x;
+ y = event->button.y - start_pos.y;
+ if ((x > -RESIZER_SIZE) && (x < RESIZER_SIZE) &&
+ (y > -RESIZER_SIZE) && (y < RESIZER_SIZE)) {
+ gtk_widget_grab_focus (GTK_WIDGET (sheet));
+ sheet->state = SHEET_STATE_DRAG_START;
+ wire_item->priv->resize_state = WIRE_RESIZER_1;
+
+ last_x = event->button.x;
+ last_y = event->button.y;
+ item_data_unregister (ITEM_DATA (wire));
+ return TRUE;
+ }
+ if ((x > (length.x-RESIZER_SIZE)) && (x < (length.x+RESIZER_SIZE)) &&
+ (y > (length.y-RESIZER_SIZE)) && (y < (length.y+RESIZER_SIZE))) {
+ gtk_widget_grab_focus (GTK_WIDGET (sheet));
+ sheet->state = SHEET_STATE_DRAG_START;
+ wire_item->priv->resize_state = WIRE_RESIZER_2;
+
+ last_x = event->button.x;
+ last_y = event->button.y;
+ item_data_unregister (ITEM_DATA (wire));
+ return TRUE;
+ }
+ }
+ break;
+ }
+ break;
+ case GDK_MOTION_NOTIFY:
+ if (sheet->state != SHEET_STATE_DRAG &&
+ sheet->state != SHEET_STATE_DRAG_START)
+ break;
+
+ if (wire_item->priv->resize_state == WIRE_RESIZER_NONE)
+ break;
+
+ if (sheet->state == SHEET_STATE_DRAG_START || sheet->state == SHEET_STATE_DRAG) {
+ sheet->state = SHEET_STATE_DRAG;
+
+ snapped_x = event->motion.x;
+ snapped_y = event->motion.y;
+ snap_to_grid (sheet->grid, &snapped_x, &snapped_y);
+
+ dx = snapped_x - last_x;
+ dy = snapped_y - last_y;
+
+
+ last_x = snapped_x;
+ last_y = snapped_y;
+
+ wire_get_pos_and_length (wire, &pos, &length);
+
+ if (wire_item->priv->resize_state == WIRE_RESIZER_1) {
+ switch (wire->priv->direction) {
+ case WIRE_DIR_VERT:
+ /* Vertical Wire */
+ pos.y = last_y;
+ length.y -= dy;
+ break;
+ case WIRE_DIR_HORIZ:
+ /* Horizontal Wire */
+ pos.x = last_x;
+ length.x -= dx;
+ break;
+ default:
+ pos.y = last_y;
+ length.y -= dy;
+ pos.x = last_x;
+ length.x -= dx;
+ }
+ } else {
+ switch (wire->priv->direction) {
+ case WIRE_DIR_VERT:
+ /* Vertical Wire */
+ length.y += dy;
+ break;
+ case WIRE_DIR_HORIZ:
+ /* Horizontal Wire */
+ length.x += dx;
+ break;
+ default:
+ length.y += dy;
+ length.x += dx;
+ }
+ }
+ snap_to_grid (sheet->grid, &length.x, &length.y);
+ item_data_set_pos (sheet_item_get_data (SHEET_ITEM (wire_item)), &pos);
+ wire_set_length (wire, &length);
+ return TRUE;
+ }
+ break;
+ case GDK_BUTTON_RELEASE:
+ switch (event->button.button) {
+ case 1:
+ if (sheet->state != SHEET_STATE_DRAG &&
+ sheet->state != SHEET_STATE_DRAG_START)
+ break;
+ if (wire_item->priv->resize_state == WIRE_RESIZER_NONE)
+ break;
+
+ g_signal_stop_emission_by_name (G_OBJECT (wire_item), "event");
+
+ //gtk_timeout_remove (priv->scroll_timeout_id); // Esto no esta bien.
+
+ sheet->state = SHEET_STATE_NONE;
+ gnome_canvas_item_ungrab (GNOME_CANVAS_ITEM (wire_item), event->button.time);
+
+ wire_item->priv->resize_state = WIRE_RESIZER_NONE;
+ sheet->state = SHEET_STATE_NONE;
+ item_data_register (ITEM_DATA (wire));
+ return TRUE;
+ }
+ break;
+ default:
+ return sheet_item_event (SHEET_ITEM (wire_item), event, sv);
+ }
+ return sheet_item_event (SHEET_ITEM (wire_item), event, sv);
+}
+
+void
+wire_item_signal_connect_placed (WireItem *wire, SchematicView *sv)
+{
+ g_signal_connect (
+ G_OBJECT (wire),
+ "event",
+ G_CALLBACK(wire_item_event),
+ sv);
+
+ g_signal_connect (
+ G_OBJECT (wire),
+ "mouse_over",
+ G_CALLBACK(mouse_over_wire_cb),
+ sv);
+
+ g_signal_connect (
+ G_OBJECT (sheet_item_get_data (SHEET_ITEM (wire))),
+ "highlight",
+ G_CALLBACK(highlight_wire_cb),
+ wire);
+}
+
+static void
+wire_rotated_callback (ItemData *data, int angle, SheetItem *sheet_item)
+{
+ WireItem *wire_item;
+ GnomeCanvasPoints *points;
+ SheetPos start_pos, length;
+
+ g_return_if_fail (sheet_item != NULL);
+ g_return_if_fail (IS_WIRE_ITEM (sheet_item));
+
+ wire_item = WIRE_ITEM (sheet_item);
+
+ wire_get_pos_and_length (WIRE (data), &start_pos, &length);
+
+ points = gnome_canvas_points_new (2);
+ points->coords[0] = 0;
+ points->coords[1] = 0;
+ points->coords[2] = length.x;
+ points->coords[3] = length.y;
+
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM (wire_item->priv->line),
+ "points", points,
+ NULL);
+ gnome_canvas_points_unref (points);
+
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM (wire_item),
+ "x", start_pos.x,
+ "y", start_pos.y,
+ NULL);
+
+ gnome_canvas_item_set (
+ GNOME_CANVAS_ITEM (wire_item-> priv->resize2),
+ "x1", length.x-RESIZER_SIZE,
+ "y1", length.y-RESIZER_SIZE,
+ "x2", length.x+RESIZER_SIZE,
+ "y2", length.y+RESIZER_SIZE,
+ NULL
+ );
+
+ /*
+ * Invalidate the bounding box cache.
+ */
+ wire_item->priv->cache_valid = FALSE;
+}
+
+static void
+wire_flipped_callback (ItemData *data,
+ gboolean horizontal, SheetItem *sheet_item)
+{
+ GnomeCanvasPoints *points;
+ WireItem *item;
+ WireItemPriv *priv;
+ SheetPos start_pos, length;
+
+ g_return_if_fail (sheet_item != NULL);
+ g_return_if_fail (IS_WIRE_ITEM (sheet_item));
+
+ item = WIRE_ITEM (sheet_item);
+ priv = item->priv;
+
+ wire_get_pos_and_length (WIRE (data), &start_pos, &length);
+
+ points = gnome_canvas_points_new (2);
+ points->coords[0] = 0;
+ points->coords[1] = 0;
+ points->coords[2] = length.x;
+ points->coords[3] = length.y;
+
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM (item->priv->line),
+ "points", points,
+ NULL);
+ gnome_canvas_points_unref (points);
+
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM (item),
+ "x", start_pos.x,
+ "y", start_pos.y,
+ NULL);
+
+ /*
+ * Invalidate the bounding box cache.
+ */
+ priv->cache_valid = FALSE;
+}
+
+static int
+select_idle_callback (WireItem *item)
+{
+ WireItemPriv *priv = item->priv;
+
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM (priv->line),
+ "fill_color", SELECTED_COLOR, NULL);
+
+ priv->highlight = TRUE;
+
+ g_object_unref (G_OBJECT (item));
+ return FALSE;
+}
+
+static int
+deselect_idle_callback (WireItem *item)
+{
+ WireItemPriv *priv = item->priv;
+
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM (priv->line),
+ "fill_color", NORMAL_COLOR, NULL);
+
+ priv->highlight = FALSE;
+
+ g_object_unref(G_OBJECT (item));
+ return FALSE;
+}
+
+static void
+selection_changed(WireItem *item, gboolean select, gpointer user_data)
+{
+ g_object_ref(G_OBJECT(item));
+ if (select) {
+ gtk_idle_add ((gpointer) select_idle_callback, item);
+ gnome_canvas_item_show (GNOME_CANVAS_ITEM (item->priv->resize1));
+ gnome_canvas_item_show (GNOME_CANVAS_ITEM (item->priv->resize2));
+ } else {
+ gtk_idle_add ((gpointer) deselect_idle_callback, item);
+ gnome_canvas_item_hide (GNOME_CANVAS_ITEM (item->priv->resize1));
+ gnome_canvas_item_hide (GNOME_CANVAS_ITEM (item->priv->resize2));
+ }
+}
+
+/**
+ * This function returns the position of the canvas item. It has
+ * nothing to do with where the wire is stored in the sheet node store.
+ */
+void
+wire_item_get_start_pos (WireItem *item, SheetPos *pos)
+{
+ g_return_if_fail (item != NULL);
+ g_return_if_fail (IS_WIRE_ITEM (item));
+ g_return_if_fail (pos != NULL);
+
+ g_object_get(G_OBJECT(item), "x", &pos->x, "y", &pos->y, NULL);
+}
+
+/**
+ * This function returns the length of the canvas item.
+ */
+void
+wire_item_get_length (WireItem *item, SheetPos *pos)
+{
+ WireItemPriv *priv;
+ GnomeCanvasPoints *points;
+
+ g_return_if_fail (item != NULL);
+ g_return_if_fail (IS_WIRE_ITEM (item));
+ g_return_if_fail (pos != NULL);
+
+ priv = item->priv;
+
+ g_object_get(G_OBJECT(priv->line), "points", &points, NULL);
+
+ /*
+ * This is not strictly neccessary, since the first point is always
+ * (0,0) but it's more correct and good to have if this changes in the
+ * future.
+ */
+ pos->x = points->coords[2] - points->coords[0];
+ pos->y = points->coords[3] - points->coords[1];
+ gnome_canvas_points_free (points);
+}
+
+static gboolean
+is_in_area (SheetItem *object, SheetPos *p1, SheetPos *p2)
+{
+ WireItem *item;
+ SheetPos bbox_start, bbox_end;
+
+ item = WIRE_ITEM (object);
+
+ get_bbox (item, &bbox_start, &bbox_end);
+
+ if (p1->x < bbox_start.x &&
+ p2->x > bbox_end.x &&
+ p1->y < bbox_start.y &&
+ p2->y > bbox_end.y)
+ return TRUE;
+
+ return FALSE;
+}
+
+/**
+ * Retrieves the bounding box. We use a caching scheme for this
+ * since it's too expensive to calculate it every time we need it.
+ */
+inline static void
+get_bbox (WireItem *item, SheetPos *p1, SheetPos *p2)
+{
+ WireItemPriv *priv;
+ priv = item->priv;
+
+ if (!priv->cache_valid) {
+ SheetPos start_pos, end_pos;
+
+ wire_item_get_start_pos (item, &start_pos);
+ wire_item_get_length (item, &end_pos);
+ end_pos.x += start_pos.x;
+ end_pos.y += start_pos.y;
+
+ priv->bbox_start.x = MIN (start_pos.x, end_pos.x);
+ priv->bbox_start.y = MIN (start_pos.y, end_pos.y);
+ priv->bbox_end.x = MAX (start_pos.x, end_pos.x);
+ priv->bbox_end.y = MAX (start_pos.y, end_pos.y);
+ priv->cache_valid = TRUE;
+ }
+
+ memcpy (p1, &priv->bbox_start, sizeof (SheetPos));
+ memcpy (p2, &priv->bbox_end, sizeof (SheetPos));
+}
+
+static void
+wire_item_paste (SchematicView *sv, ItemData *data)
+{
+ g_return_if_fail (sv != NULL);
+ g_return_if_fail (IS_SCHEMATIC_VIEW (sv));
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_WIRE (data));
+
+ schematic_view_add_ghost_item (sv, data);
+}
+
+static void wire_traverse (Wire *wire);
+
+static void
+node_traverse (Node *node)
+{
+ GSList *wires;
+
+ g_return_if_fail (node != NULL);
+ g_return_if_fail (IS_NODE (node));
+
+ if (node_is_visited (node))
+ return;
+
+ node_set_visited (node, TRUE);
+
+ for (wires = node->wires; wires; wires = wires->next) {
+ Wire *wire = wires->data;
+ wire_traverse (wire);
+ }
+}
+
+static void
+wire_traverse (Wire *wire)
+{
+ GSList *nodes;
+
+ g_return_if_fail (wire != NULL);
+ g_return_if_fail (IS_WIRE (wire));
+
+ if (wire_is_visited (wire))
+ return;
+
+ wire_set_visited (wire, TRUE);
+
+ g_signal_emit_by_name(G_OBJECT (wire), "highlight");
+
+ for (nodes = wire_get_nodes (wire); nodes; nodes = nodes->next) {
+ Node *node = nodes->data;
+
+ node_traverse (node);
+ }
+}
+
+static void
+node_foreach_reset (gpointer key, gpointer value, gpointer user_data)
+{
+ Node *node = value;
+
+ node_set_visited (node, FALSE);
+}
+
+static void
+mouse_over_wire_cb (WireItem *item, SchematicView *sv)
+{
+ GList *wires;
+ Wire *wire;
+ NodeStore *store;
+ Sheet *sheet;
+
+ sheet = schematic_view_get_sheet (sv);
+
+ if (sheet->state != SHEET_STATE_NONE)
+ return;
+
+ store = schematic_get_store (schematic_view_get_schematic (sv));
+
+ node_store_node_foreach (store, (GHFunc *) node_foreach_reset, NULL);
+ for (wires = store->wires; wires; wires = wires->next) {
+ wire = wires->data;
+ wire_set_visited (wire, FALSE);
+ }
+
+ wire = WIRE (sheet_item_get_data (SHEET_ITEM (item)));
+ wire_traverse (wire);
+}
+
+static void
+highlight_wire_cb (Wire *wire, WireItem *item)
+{
+ WireItemPriv *priv = item->priv;
+
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM (priv->line),
+ "fill_color", HIGHLIGHT_COLOR, NULL);
+
+ /*
+ * Guard against removal during the highlighting.
+ */
+ g_object_ref(G_OBJECT (item));
+
+ gtk_timeout_add (1000, (gpointer) unhighlight_wire, item);
+}
+
+static int
+unhighlight_wire (WireItem *item)
+{
+ char *color;
+ WireItemPriv *priv = item->priv;
+
+ color = sheet_item_get_selected (SHEET_ITEM (item)) ?
+ SELECTED_COLOR : NORMAL_COLOR;
+
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM (priv->line),
+ "fill_color", color, NULL);
+
+ g_object_unref (G_OBJECT (item));
+
+ return FALSE;
+}
+
+/**
+ * This is called when the wire data was moved. Update the view accordingly.
+ */
+static void
+wire_moved_callback (ItemData *data, SheetPos *pos, SheetItem *item)
+{
+ WireItem *wire_item;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (IS_ITEM_DATA (data));
+ g_return_if_fail (item != NULL);
+ g_return_if_fail (IS_WIRE_ITEM (item));
+
+ if (pos == NULL)
+ return;
+
+ wire_item = WIRE_ITEM (item);
+
+ /*
+ * Move the canvas item and invalidate the bbox cache.
+ */
+ gnome_canvas_item_move (GNOME_CANVAS_ITEM (item), pos->x, pos->y);
+ wire_item->priv->cache_valid = FALSE;
+}
+
+static void
+wire_item_place (SheetItem *item, SchematicView *sv)
+{
+ wire_item_signal_connect_placed (WIRE_ITEM (item), sv);
+}
+
+static void
+wire_item_place_ghost (SheetItem *item, SchematicView *sv)
+{
+// wire_item_signal_connect_placed (WIRE_ITEM (item));
+}
+
+
+static void
+wire_changed_callback (Wire *wire, WireItem *item)
+{
+ SheetPos start_pos, length;
+ GnomeCanvasPoints *points;
+
+ wire_get_pos_and_length (wire, &start_pos, &length);
+
+ points = gnome_canvas_points_new (2);
+ points->coords[0] = 0;
+ points->coords[1] = 0;
+ points->coords[2] = length.x;
+ points->coords[3] = length.y;
+
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM (item->priv->line),
+ "points", points,
+ NULL);
+ gnome_canvas_points_unref (points);
+
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM (item->priv->resize1),
+ "x1", -RESIZER_SIZE,
+ "y1", -RESIZER_SIZE,
+ "x2", RESIZER_SIZE,
+ "y2", RESIZER_SIZE,
+ NULL);
+
+ gnome_canvas_item_set (GNOME_CANVAS_ITEM (item->priv->resize2),
+ "x1", length.x-RESIZER_SIZE,
+ "y1", length.y-RESIZER_SIZE,
+ "x2", length.x+RESIZER_SIZE,
+ "y2", length.y+RESIZER_SIZE,
+ NULL);
+}
+
+static void
+wire_delete_callback (Wire *wire, WireItem *item)
+{
+ gtk_object_destroy (GTK_OBJECT (item));
+}
+
+
diff --git a/src/sheet/wire-item.h b/src/sheet/wire-item.h
new file mode 100644
index 0000000..11124cc
--- /dev/null
+++ b/src/sheet/wire-item.h
@@ -0,0 +1,60 @@
+/*
+ * wire-item.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __WIRE_ITEM_H
+#define __WIRE_ITEM_H
+
+#include <gnome.h>
+
+#include "schematic-view.h"
+#include "sheet-item.h"
+#include "wire.h"
+
+#define WIRE_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST (obj, wire_item_get_type (), WireItem))
+#define WIRE_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST (klass, wire_item_get_type (), WireItemClass))
+#define IS_WIRE_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE (obj, wire_item_get_type ()))
+
+typedef struct _WireItemPriv WireItemPriv;
+
+typedef struct {
+ SheetItem parent_object;
+ WireItemPriv *priv;
+} WireItem;
+
+typedef struct {
+ SheetItemClass parent_class;
+} WireItemClass;
+
+GType wire_item_get_type (void);
+WireItem *wire_item_new (Sheet *sheet, Wire *wire);
+void wire_item_initiate (Sheet *sheet);
+void wire_item_get_start_pos (WireItem *item, SheetPos *pos);
+void wire_item_get_length (WireItem *item, SheetPos *pos);
+
+#endif
diff --git a/src/sim-settings.c b/src/sim-settings.c
new file mode 100644
index 0000000..d8f1e61
--- /dev/null
+++ b/src/sim-settings.c
@@ -0,0 +1,1064 @@
+/*
+ * sim-settings.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <unistd.h>
+#include <ctype.h>
+#include <gnome.h>
+#include <glade/glade.h>
+#include <gtk/gtkclist.h>
+#include <gtk/gtkentry.h>
+#include "main.h"
+#include "sim-settings.h"
+#include "schematic.h"
+#include "schematic-view.h"
+#include "dialogs.h"
+#include "oregano-utils.h"
+
+struct _SimSettingsPriv {
+ /* Transient analysis. */
+ GtkWidget *w_main;
+ GtkWidget *w_trans_enable, *w_trans_start, *w_trans_stop;
+ GtkWidget *w_trans_step, *w_trans_step_enable, *w_trans_init_cond, *w_trans_frame;
+ gboolean trans_enable;
+ gboolean trans_init_cond;
+ gchar *trans_start;
+ gchar *trans_stop;
+ gchar *trans_step;
+ gboolean trans_step_enable;
+
+ /* AC */
+ GtkWidget *w_ac_enable, *w_ac_type, *w_ac_npoints, *w_ac_start, *w_ac_stop, *w_ac_frame;
+ gboolean ac_enable;
+ gchar *ac_type;
+ gchar *ac_npoints;
+ gchar *ac_start;
+ gchar *ac_stop;
+
+ /* DC */
+ GtkWidget *w_dc_enable,*w_dc_vin1,*w_dc_start1,*w_dc_stop1,*w_dc_step1,
+ *w_dc_vin2,*w_dc_start2,*w_dc_stop2,*w_dc_step2,*w_dcsweep_frame;
+ gboolean dc_enable;
+ gchar *dc_vin1;
+ gchar *dc_start1,*dc_stop1,*dc_step1;
+ gchar *dc_vin2;
+ gchar *dc_start2,*dc_stop2,*dc_step2;
+
+ /* Fourier analysis. Replace with something sane later. */
+ GtkWidget *w_four_enable,*w_four_freq,*w_four_vout,*w_four_combo,*w_four_add,*w_fourier_frame;
+ gboolean four_enable;
+ gchar *four_freq;
+ gchar *four_vout;
+
+ /* Options */
+ GtkEntry *w_opt_value;
+ GtkTreeView *w_opt_list;
+ GList *options;
+};
+
+
+static SimOption default_options[] = {
+ {"TEMP" ,NULL},
+
+ {"GMIN" ,NULL},
+ {"ABSTOL" ,NULL},
+ {"CHGTOL" ,NULL},
+ {"RELTOL" ,NULL},
+ {"VNTOL" ,NULL},
+
+ {"ITL1" ,NULL},
+ {"ITL2" ,NULL},
+ {"ITL4", NULL},
+
+ {"PIVREL", NULL},
+ {"PIVTOL", NULL},
+
+ {"TNOM", NULL},
+ {"TRTOL", NULL},
+
+ {"DEFAD", NULL},
+ {"DEFAS", NULL},
+ {"DEFL", NULL},
+ {"DEFW", NULL},
+ {NULL, NULL}
+};
+
+
+static void
+set_options_in_list(gchar *key, gchar *val, GtkTreeView *cl)
+{
+ int i;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ char *name;
+ char *value;
+
+ model = gtk_tree_view_get_model(cl);
+
+ i=0;
+ while (gtk_tree_model_iter_nth_child(model, &iter, NULL, i)) {
+ gtk_tree_model_get(model, &iter, 0, &name, 1, &value, -1);
+ if (!strcmp (name, key) ) {
+ gtk_list_store_set(GTK_LIST_STORE(model), &iter, 1, val, -1);
+ }
+ i++;
+ }
+}
+
+static void
+get_options_from_list (SimSettings *s)
+{
+ int i;
+ gchar *name,*value;
+ SimOption *so;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ GtkTreeView *cl = s->priv->w_opt_list;
+
+ /* Empty the list */
+ while (s->priv->options) {
+ so = s->priv->options->data;
+ if (so) {
+ /* Prevent sigfault on NULL */
+ if (so->name) g_free (so->name);
+ if (so->value) g_free (so->value);
+ s->priv->options = g_list_remove (s->priv->options,so);
+ g_free (so);
+ }
+ if (s->priv->options) s->priv->options = s->priv->options->next;
+ }
+
+ model = gtk_tree_view_get_model(cl);
+ i = 0;
+ while (gtk_tree_model_iter_nth_child(model, &iter, NULL, i)) {
+ SimOption *so;
+ gtk_tree_model_get(model, &iter, 0, &name, 1, &value, -1);
+
+ so = g_new0 (SimOption,1);
+ so->name = g_strdup(name);
+ so->value = g_strdup(value);
+ s->priv->options = g_list_append (s->priv->options, so);
+ /* TODO : name y value deben ser liberados ? */
+ i++;
+ }
+}
+
+static gboolean
+select_opt_callback (GtkWidget *widget,
+ GdkEventButton *event, SimSettings *sim)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ GtkTreeSelection *selection;
+ char *value;
+
+ if (event->button != 1) return FALSE;
+
+ /* Get the current selected row */
+ selection = gtk_tree_view_get_selection(sim->priv->w_opt_list);
+ model = gtk_tree_view_get_model(sim->priv->w_opt_list);
+
+ if (!gtk_tree_selection_get_selected(selection, NULL, &iter)) {
+ return FALSE;
+ }
+
+ gtk_tree_model_get(model, &iter, 1, &value, -1);
+
+ if (value)
+ gtk_entry_set_text (sim->priv->w_opt_value, value);
+ else
+ gtk_entry_set_text (sim->priv->w_opt_value, "");
+
+ return FALSE;
+}
+
+static void
+option_setvalue (GtkWidget *w, SimSettings *s)
+{
+ const gchar *value;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ GtkTreeSelection *selection;
+
+ value = gtk_entry_get_text (s->priv->w_opt_value);
+ if (!value) return;
+
+ /* Get the current selected row */
+ selection = gtk_tree_view_get_selection(s->priv->w_opt_list);
+ model = gtk_tree_view_get_model(s->priv->w_opt_list);
+
+ if (!gtk_tree_selection_get_selected(selection, NULL, &iter)) {
+ return;
+ }
+
+ gtk_list_store_set(GTK_LIST_STORE(model), &iter, 1, value, -1);
+
+// gnome_property_box_set_modified (GNOME_PROPERTY_BOX (s->pbox), TRUE);
+}
+
+static void
+add_option (GtkWidget *w, SimSettings *s)
+{
+ GtkEntry *entry;
+ GtkWidget *dialog = gtk_dialog_new_with_buttons (_("Add new option"),
+ NULL,
+ GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_STOCK_CANCEL,
+ GTK_RESPONSE_REJECT,
+ GTK_STOCK_OK,
+ GTK_RESPONSE_OK,
+ NULL);
+
+ entry = GTK_ENTRY (gtk_entry_new ());
+ gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), GTK_WIDGET (entry));
+ gtk_widget_show (GTK_WIDGET (entry));
+
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) {
+ GtkTreeIter iter;
+ SimOption *opt = g_new0 (SimOption, 1);
+ opt->name = g_strdup (gtk_entry_get_text (entry));
+ opt->value = g_strdup ("");
+ /* Warning : don't free opt later, is added to the list */
+ sim_settings_add_option (s, opt);
+
+ gtk_list_store_append (GTK_LIST_STORE (gtk_tree_view_get_model(s->priv->w_opt_list)), &iter);
+ gtk_list_store_set (GTK_LIST_STORE (gtk_tree_view_get_model(s->priv->w_opt_list)), &iter, 0, opt->name, -1);
+ }
+
+ gtk_widget_destroy (dialog);
+}
+
+
+static void
+option_remove (GtkWidget *w, SimSettings *s)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ GtkTreeSelection *selection;
+
+ /* Get the current selected row */
+ selection = gtk_tree_view_get_selection(s->priv->w_opt_list);
+ model = gtk_tree_view_get_model(s->priv->w_opt_list);
+
+ if (!gtk_tree_selection_get_selected(selection, NULL, &iter)) {
+ return;
+ }
+
+ gtk_list_store_set(GTK_LIST_STORE(model), &iter, 1, "", -1);
+}
+
+static void
+trans_enable_cb (GtkWidget *widget, SimSettings *s)
+{
+ gboolean enable, step_enable;
+
+ enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+ step_enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (s->priv->w_trans_step_enable));
+
+ if (enable)
+ gtk_widget_show (s->priv->w_trans_frame);
+ else
+ gtk_widget_hide (s->priv->w_trans_frame);
+ /*
+ gtk_widget_set_sensitive (s->priv->w_trans_start, enable);
+ gtk_widget_set_sensitive (s->priv->w_trans_stop, enable);
+ gtk_widget_set_sensitive (s->priv->w_trans_step, enable & step_enable);
+ gtk_widget_set_sensitive (s->priv->w_trans_step_enable, enable);
+ gtk_widget_set_sensitive (s->priv->w_trans_init_cond, enable);
+ gnome_property_box_changed (GNOME_PROPERTY_BOX (s->pbox));
+ */
+}
+
+static void
+trans_step_enable_cb (GtkWidget *widget, SimSettings *s)
+{
+ gboolean enable, step_enable;
+
+ step_enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+ enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (s->priv->w_trans_enable));
+
+ gtk_widget_set_sensitive (s->priv->w_trans_step, step_enable & enable);
+
+// gnome_property_box_changed (GNOME_PROPERTY_BOX (s->pbox));
+}
+
+static void
+entry_changed_cb (GtkWidget *widget, SimSettings *s)
+{
+// gnome_property_box_changed (GNOME_PROPERTY_BOX (s->pbox));
+}
+
+static void
+ac_enable_cb (GtkWidget *widget, SimSettings *s)
+{
+ gboolean enable;
+ enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+
+ if (enable)
+ gtk_widget_show (s->priv->w_ac_frame);
+ else
+ gtk_widget_hide (s->priv->w_ac_frame);
+/* gtk_widget_set_sensitive (s->priv->w_ac_type,enable);
+ gtk_widget_set_sensitive (s->priv->w_ac_npoints,enable);
+ gtk_widget_set_sensitive (s->priv->w_ac_start,enable);
+ gtk_widget_set_sensitive (s->priv->w_ac_stop,enable);
+
+ gnome_property_box_changed (GNOME_PROPERTY_BOX (s->pbox)); */
+}
+
+static void
+dc_enable_cb (GtkWidget *widget, SimSettings *s)
+{
+ gboolean enable;
+ enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+
+ if (enable)
+ gtk_widget_show (s->priv->w_dcsweep_frame);
+ else
+ gtk_widget_hide (s->priv->w_dcsweep_frame);
+ /*
+ gtk_widget_set_sensitive (s->priv->w_dc_vin1,enable);
+ gtk_widget_set_sensitive (s->priv->w_dc_start1,enable);
+ gtk_widget_set_sensitive (s->priv->w_dc_stop1,enable);
+ gtk_widget_set_sensitive (s->priv->w_dc_step1,enable);
+ gtk_widget_set_sensitive (s->priv->w_dc_vin2,enable);
+ gtk_widget_set_sensitive (s->priv->w_dc_start2,enable);
+ gtk_widget_set_sensitive (s->priv->w_dc_stop2,enable);
+ gtk_widget_set_sensitive (s->priv->w_dc_step2,enable);
+ gnome_property_box_changed (GNOME_PROPERTY_BOX (s->pbox)); */
+}
+
+static void
+four_enable_cb (GtkWidget *widget, SimSettings *s)
+{
+ gboolean enable;
+ enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+
+ if (enable)
+ gtk_widget_show (s->priv->w_fourier_frame);
+ else
+ gtk_widget_hide (s->priv->w_fourier_frame);
+ /*
+ gtk_widget_set_sensitive (s->priv->w_four_freq,enable);
+ gtk_widget_set_sensitive (s->priv->w_four_vout,enable);
+ gtk_widget_set_sensitive (s->priv->w_four_combo,enable);
+ gtk_widget_set_sensitive (s->priv->w_four_add,enable);
+
+ gnome_property_box_changed (GNOME_PROPERTY_BOX (s->pbox));*/
+}
+
+static void
+four_add_vout_cb (GtkWidget *widget, SimSettings *s)
+{
+
+}
+
+static int
+delete_event_cb (GtkWidget *widget, GdkEvent *event, SimSettings *s)
+{
+ s->pbox = NULL;
+ return FALSE;
+}
+
+SimSettings *
+sim_settings_new (Schematic *sm)
+{
+ SimSettings *s;
+
+ s = g_new0 (SimSettings, 1);
+ s->sm = sm;
+
+ s->priv = g_new0 (SimSettingsPriv, 1);
+
+ /*
+ * Set some default settings.
+ */
+ /* transient */
+ s->priv->trans_enable = TRUE;
+ s->priv->trans_start = g_strdup ("0 s");
+ s->priv->trans_stop = g_strdup ("5 ms");
+ s->priv->trans_step = g_strdup ("0.1 ms");
+ s->priv->trans_step_enable = FALSE;
+
+ /* ac */
+ s->priv->ac_enable = FALSE;
+ s->priv->ac_type = g_strdup ("DEC");
+ s->priv->ac_npoints= g_strdup ("50");
+ s->priv->ac_start = g_strdup ("1");
+ s->priv->ac_stop = g_strdup ("1 Meg");
+
+ /* dc */
+ s->priv->dc_enable = FALSE;
+ s->priv->dc_vin1 = g_strdup ("");
+ s->priv->dc_start1 = g_strdup ("");
+ s->priv->dc_stop1 = g_strdup ("");
+ s->priv->dc_step1 = g_strdup ("");
+ s->priv->dc_vin2 = g_strdup ("");
+ s->priv->dc_start2 = g_strdup ("");
+ s->priv->dc_stop2 = g_strdup ("");
+ s->priv->dc_step2 = g_strdup ("");
+
+ /* fourier */
+ s->priv->four_enable = FALSE;
+
+ s->priv->options=0;
+
+ return s;
+}
+
+gboolean
+sim_settings_get_trans (SimSettings *sim_settings)
+{
+ return sim_settings->priv->trans_enable;
+}
+
+gboolean
+sim_settings_get_trans_init_cond (SimSettings *sim_settings)
+{
+ return sim_settings->priv->trans_init_cond;
+}
+
+gdouble
+sim_settings_get_trans_start (SimSettings *sim_settings)
+{
+ gchar *text = sim_settings->priv->trans_start;
+ return oregano_strtod (text, 's');
+}
+
+gdouble
+sim_settings_get_trans_stop (SimSettings *sim_settings)
+{
+ gchar *text = sim_settings->priv->trans_stop;
+ return oregano_strtod (text, 's');
+}
+
+gdouble
+sim_settings_get_trans_step (SimSettings *sim_settings)
+{
+ gchar *text = sim_settings->priv->trans_step;
+ return oregano_strtod (text, 's');
+}
+
+gdouble
+sim_settings_get_trans_step_enable (SimSettings *sim_settings)
+{
+ return sim_settings->priv->trans_step_enable;
+}
+
+void
+sim_settings_set_trans (SimSettings *sim_settings, gboolean enable)
+{
+ sim_settings->priv->trans_enable = enable;
+}
+
+void
+sim_settings_set_trans_start (SimSettings *sim_settings, gchar *str)
+{
+ if (sim_settings->priv->trans_start)
+ g_strdup (sim_settings->priv->trans_start);
+ sim_settings->priv->trans_start = g_strdup (str);
+}
+
+void
+sim_settings_set_trans_init_cond(SimSettings *sim_settings, gboolean enable)
+{
+ sim_settings->priv->trans_init_cond = enable;
+}
+
+void
+sim_settings_set_trans_stop (SimSettings *sim_settings, gchar *str)
+{
+ if (sim_settings->priv->trans_stop)
+ g_strdup (sim_settings->priv->trans_stop);
+ sim_settings->priv->trans_stop = g_strdup (str);
+}
+
+void
+sim_settings_set_trans_step (SimSettings *sim_settings, gchar *str)
+{
+ if (sim_settings->priv->trans_step)
+ g_strdup (sim_settings->priv->trans_step);
+ sim_settings->priv->trans_step = g_strdup (str);
+}
+
+void
+sim_settings_set_trans_step_enable (SimSettings *sim_settings, gboolean enable)
+{
+ sim_settings->priv->trans_step_enable = enable;
+}
+
+gboolean
+sim_settings_get_ac (SimSettings *sim_settings)
+{
+ return sim_settings->priv->ac_enable;
+}
+
+gchar *
+sim_settings_get_ac_type (SimSettings *sim_settings)
+{
+ return sim_settings->priv->ac_type;
+}
+
+gint
+sim_settings_get_ac_npoints (SimSettings *sim_settings)
+{
+ return atoi (sim_settings->priv->ac_npoints);
+}
+
+gdouble
+sim_settings_get_ac_start (SimSettings *sim_settings)
+{
+ return oregano_strtod (sim_settings->priv->ac_start, 's');
+}
+
+gdouble
+sim_settings_get_ac_stop (SimSettings *sim_settings)
+{
+ return oregano_strtod (sim_settings->priv->ac_stop,'s');
+}
+
+void
+sim_settings_set_ac (SimSettings *sim_settings,gboolean enable)
+{
+ sim_settings->priv->ac_enable = enable;
+}
+
+void
+sim_settings_set_ac_type(SimSettings *sim_settings,gchar *str)
+{
+ if ( sim_settings->priv->ac_type )
+ g_free ( sim_settings->priv->ac_type );
+ sim_settings->priv->ac_type = g_strdup (str);
+}
+
+void
+sim_settings_set_ac_npoints(SimSettings *sim_settings,gchar *str)
+{
+ if ( sim_settings->priv->ac_npoints )
+ g_free ( sim_settings->priv->ac_npoints );
+ sim_settings->priv->ac_npoints = g_strdup (str);
+
+}
+
+void
+sim_settings_set_ac_start (SimSettings *sim_settings,gchar *str)
+{
+ if (sim_settings->priv->ac_start)
+ g_free (sim_settings->priv->ac_start);
+ sim_settings->priv->ac_start = g_strdup (str);
+}
+
+void
+sim_settings_set_ac_stop(SimSettings *sim_settings,gchar *str)
+{
+ if (sim_settings->priv->ac_stop)
+ g_free (sim_settings->priv->ac_stop);
+ sim_settings->priv->ac_stop = g_strdup (str);
+}
+
+gboolean
+sim_settings_get_dc (SimSettings *sim_settings)
+{
+ return sim_settings->priv->dc_enable;
+}
+
+gchar*
+sim_settings_get_dc_vsrc (SimSettings *sim_settings,gint i)
+{
+ gchar *tmp = (i==0 ? sim_settings->priv->dc_vin1 : sim_settings->priv->dc_vin2);
+ return (tmp && *tmp ? tmp : NULL);
+}
+
+gdouble
+sim_settings_get_dc_start (SimSettings *sim_settings, gint i)
+{
+ return oregano_strtod ( i==0
+ ? sim_settings->priv->dc_start1
+ : sim_settings->priv->dc_start2, 's');
+}
+
+gdouble
+sim_settings_get_dc_stop (SimSettings *sim_settings,gint i)
+{
+ return oregano_strtod ( i==0
+ ? sim_settings->priv->dc_stop1
+ : sim_settings->priv->dc_stop2, 's');
+}
+
+gdouble
+sim_settings_get_dc_step (SimSettings *sim_settings,gint i)
+{
+ return oregano_strtod ( i==0
+ ? sim_settings->priv->dc_step1
+ : sim_settings->priv->dc_step2, 's');
+}
+
+void
+sim_settings_set_dc (SimSettings *sim_settings, gboolean enable)
+{
+ sim_settings->priv->dc_enable = enable;
+}
+
+void
+sim_settings_set_dc_vsrc (SimSettings *sim_settings, gint i, gchar *str)
+{
+ gchar **val = (i==0
+ ? &sim_settings->priv->dc_vin1
+ : &sim_settings->priv->dc_vin2);
+ if ( *val ) g_free (*val);
+ *val = g_strdup (str);
+}
+
+void
+sim_settings_set_dc_start (SimSettings *sim_settings, gint i, gchar *str) {
+ gchar **val = (i==0
+ ? &sim_settings->priv->dc_start1
+ : &sim_settings->priv->dc_start2);
+ if ( *val ) g_free (*val);
+ *val = g_strdup (str);
+}
+
+void
+sim_settings_set_dc_stop (SimSettings *sim_settings, gint i, gchar *str)
+{
+ gchar **val = (i==0
+ ? &sim_settings->priv->dc_stop1
+ : &sim_settings->priv->dc_stop2);
+ if (*val) g_free (*val);
+ *val = g_strdup (str);
+}
+
+void
+sim_settings_set_dc_step (SimSettings *sim_settings, gint i, gchar *str)
+{
+ gchar **val = (i==0
+ ? &sim_settings->priv->dc_step1
+ : &sim_settings->priv->dc_step2);
+ if (*val) g_free (*val);
+ *val = g_strdup (str);
+}
+
+static void
+response_callback(GtkDialog *dlg, gint id, Schematic *sm)
+{
+ gint page;
+ SimSettings *s;
+
+ s = schematic_get_sim_settings (sm);
+
+ g_object_get(s->notebook, "page", &page, NULL);
+
+ /* Trans */
+ s->priv->trans_enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (s->priv->w_trans_enable));
+
+ if (s->priv->trans_start) g_free (s->priv->trans_start);
+ s->priv->trans_start = gtk_editable_get_chars (GTK_EDITABLE (s->priv->w_trans_start), 0, -1);
+
+ if (s->priv->trans_stop) g_free (s->priv->trans_stop);
+ s->priv->trans_stop = gtk_editable_get_chars (GTK_EDITABLE (s->priv->w_trans_stop), 0, -1);
+
+ if (s->priv->trans_step) g_free (s->priv->trans_step);
+ s->priv->trans_step = gtk_editable_get_chars (GTK_EDITABLE (s->priv->w_trans_step), 0, -1);
+
+ s->priv->trans_step_enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (s->priv->w_trans_step_enable));
+
+ s->priv->trans_init_cond = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (s->priv->w_trans_init_cond));
+
+ /* DC */
+ s->priv->dc_enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (s->priv->w_dc_enable));
+ if (s->priv->dc_vin1) g_free (s->priv->dc_vin1);
+ s->priv->dc_vin1 = g_strdup (gtk_entry_get_text(GTK_ENTRY(GTK_COMBO (s->priv->w_dc_vin1)->entry)));
+
+ if (s->priv->dc_start1) g_free (s->priv->dc_start1);
+ s->priv->dc_start1 = g_strdup (gtk_entry_get_text (GTK_ENTRY (s->priv->w_dc_start1)));
+
+ if (s->priv->dc_stop1) g_free(s->priv->dc_stop1);
+ s->priv->dc_stop1 = g_strdup(gtk_entry_get_text (GTK_ENTRY (s->priv->w_dc_stop1)));
+
+ if (s->priv->dc_step1) g_free(s->priv->dc_step1);
+ s->priv->dc_step1 = g_strdup(gtk_entry_get_text(GTK_ENTRY (s->priv->w_dc_step1)));
+
+ if (s->priv->dc_vin2) g_free(s->priv->dc_vin2);
+ s->priv->dc_vin2 = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO (s->priv->w_dc_vin2)->entry)));
+
+ if (s->priv->dc_start2) g_free(s->priv->dc_start2);
+ s->priv->dc_start2 = g_strdup(gtk_entry_get_text(GTK_ENTRY (s->priv->w_dc_start2)));
+
+ if (s->priv->dc_stop2) g_free(s->priv->dc_stop2);
+ s->priv->dc_stop2 = g_strdup(gtk_entry_get_text(GTK_ENTRY (s->priv->w_dc_stop2)));
+
+ if (s->priv->dc_step2) g_free(s->priv->dc_step2);
+ s->priv->dc_step2 = g_strdup(gtk_entry_get_text(GTK_ENTRY (s->priv->w_dc_step2)));
+
+ /* AC */
+ s->priv->ac_enable = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON (s->priv->w_ac_enable));
+
+ if (s->priv->ac_type) g_free(s->priv->ac_type);
+ s->priv->ac_type = g_strdup(gtk_entry_get_text(GTK_ENTRY( s->priv->w_ac_type)));
+
+ if (s->priv->ac_npoints) g_free (s->priv->ac_npoints);
+ s->priv->ac_npoints = g_strdup(gtk_entry_get_text(GTK_ENTRY( s->priv->w_ac_npoints)));
+
+ if (s->priv->ac_start) g_free (s->priv->ac_start);
+ s->priv->ac_start = g_strdup(gtk_entry_get_text(GTK_ENTRY( s->priv->w_ac_start)));
+
+ if (s->priv->ac_stop) g_free (s->priv->ac_stop);
+ s->priv->ac_stop = g_strdup(gtk_entry_get_text(GTK_ENTRY( s->priv->w_ac_stop)));
+
+ /* Options */
+ get_options_from_list (s);
+ gtk_widget_hide(GTK_WIDGET(dlg));
+ gtk_widget_destroy(GTK_WIDGET(dlg));
+ s->pbox = NULL;
+ s->notebook = NULL;
+
+ /* Schematic is dirty now ;-) */
+ schematic_set_dirty (sm, TRUE);
+}
+
+void
+sim_settings_show (GtkWidget *widget, SchematicView *sv)
+{
+ int i;
+ GtkWidget *toplevel, *w, *pbox;
+ GtkTreeView *opt_list;
+ GtkCellRenderer *cell_option, *cell_value;
+ GtkTreeViewColumn *column_option, *column_value;
+ GtkListStore *opt_model;
+ GtkTreeIter iter;
+ GladeXML *gui;
+ SimSettings *s;
+ Schematic *sm;
+ GList *list;
+ GList *items,*sources=NULL,*ltmp;
+
+ g_return_if_fail (sv != NULL);
+
+ sm = schematic_view_get_schematic (sv);
+ s = schematic_get_sim_settings (sm);
+
+ /* Only allow one instance of the property box per schematic. */
+ if (s->pbox){
+ gdk_window_raise (GTK_WIDGET (s->pbox)->window);
+ return;
+ }
+
+ if (!g_file_test (OREGANO_GLADEDIR "/sim-settings.glade", G_FILE_TEST_EXISTS)) {
+ gchar *msg;
+ msg = g_strdup_printf (
+ _("The file %s could not be found. You might need to reinstall Oregano to fix this."),
+ OREGANO_GLADEDIR "/sim-settings.glade");
+ oregano_error_with_title (_("Could not create simulation settings dialog"), msg);
+ g_free (msg);
+ return;
+ }
+
+ gui = glade_xml_new (OREGANO_GLADEDIR "/sim-settings.glade", "toplevel", NULL);
+ if (!gui) {
+ oregano_error (_("Could not create simulation settings dialog"));
+ return;
+ }
+
+ toplevel = glade_xml_get_widget (gui, "toplevel");
+ if (!toplevel) {
+ oregano_error (_("Could not create simulation settings dialog"));
+ return;
+ }
+
+ pbox = toplevel;
+ s->pbox = GTK_WIDGET (pbox);
+ s->notebook = GTK_NOTEBOOK (glade_xml_get_widget (gui, "notebook"));
+ g_signal_connect (G_OBJECT (pbox),
+ "delete_event", G_CALLBACK(delete_event_cb), s);
+
+ /* Prepare options list */
+ s->priv->w_opt_value = GTK_ENTRY (glade_xml_get_widget (gui, "opt_value"));
+ opt_list = s->priv->w_opt_list = GTK_TREE_VIEW(glade_xml_get_widget (gui,
+ "option_list"));
+
+ /* Grab the frames */
+ s->priv->w_trans_frame = GTK_WIDGET (glade_xml_get_widget (gui, "trans_frame"));
+ s->priv->w_ac_frame = GTK_WIDGET (glade_xml_get_widget (gui, "ac_frame"));
+ s->priv->w_dcsweep_frame = GTK_WIDGET (glade_xml_get_widget (gui, "dcsweep_frame"));
+ s->priv->w_fourier_frame = GTK_WIDGET (glade_xml_get_widget (gui, "fourier_frame"));
+
+ /* Create the Columns */
+ cell_option = gtk_cell_renderer_text_new();
+ cell_value = gtk_cell_renderer_text_new();
+ column_option = gtk_tree_view_column_new_with_attributes(N_("Option"),
+ cell_option, "text", 0, NULL);
+ column_value = gtk_tree_view_column_new_with_attributes(N_("Value"),
+ cell_value, "text", 1, NULL);
+
+ /* Create the model */
+ opt_model = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
+ gtk_tree_view_set_model(opt_list, GTK_TREE_MODEL(opt_model));
+ gtk_tree_view_append_column(opt_list, column_option);
+ gtk_tree_view_append_column(opt_list, column_value);
+
+ if (s->priv->options == NULL) {
+ /* Load defaults */
+ for (i = 0; default_options[i].name; i++) {
+ gtk_list_store_append(opt_model, &iter);
+ gtk_list_store_set(opt_model, &iter, 0, default_options[i].name, -1);
+ }
+ } else {
+ /* Load schematic options */
+ list = s->priv->options;
+ while (list) {
+ SimOption *so = list->data;
+ if (so) {
+ gtk_list_store_append(opt_model, &iter);
+ gtk_list_store_set(opt_model, &iter, 0, so->name, -1);
+ }
+ list = list->next;
+ }
+ }
+
+ /* Set the optinos already stored */
+ list = s->priv->options;
+ while (list) {
+ SimOption *so = list->data;
+ if (so)
+ set_options_in_list (so->name, so->value, opt_list);
+ list = list->next;
+ }
+
+ g_signal_connect(G_OBJECT (opt_list),
+ "button_release_event", G_CALLBACK(select_opt_callback), s);
+
+ w = glade_xml_get_widget (gui, "opt_accept");
+ g_signal_connect (G_OBJECT(w),"clicked", G_CALLBACK(option_setvalue), s);
+ w = glade_xml_get_widget (gui, "opt_remove");
+ g_signal_connect (G_OBJECT(w),"clicked", G_CALLBACK(option_remove), s);
+ w = glade_xml_get_widget (gui, "add_option");
+ g_signal_connect (G_OBJECT(w),"clicked", G_CALLBACK(add_option), s);
+
+ /* Setup callbacks. */
+ g_signal_connect (G_OBJECT (pbox),
+ "response", G_CALLBACK(response_callback), sm);
+
+ /* Transient */
+ w = glade_xml_get_widget (gui, "trans_start");
+ if (s->priv->trans_start) gtk_entry_set_text (GTK_ENTRY (w),
+ s->priv->trans_start);
+ s->priv->w_trans_start = w;
+ g_signal_connect(G_OBJECT (w),
+ "changed", G_CALLBACK(entry_changed_cb), s);
+
+ w = glade_xml_get_widget (gui, "trans_stop");
+ if (s->priv->trans_stop)
+ gtk_entry_set_text (GTK_ENTRY (w), s->priv->trans_stop);
+ s->priv->w_trans_stop = w;
+ g_signal_connect(G_OBJECT (w), "changed", G_CALLBACK(entry_changed_cb), s);
+
+ w = glade_xml_get_widget (gui, "trans_step");
+ if (s->priv->trans_step)
+ gtk_entry_set_text (GTK_ENTRY (w), s->priv->trans_step);
+ s->priv->w_trans_step = w;
+ g_signal_connect(G_OBJECT (w), "changed", G_CALLBACK(entry_changed_cb), s);
+
+ w = glade_xml_get_widget (gui, "trans_enable");
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), s->priv->trans_enable);
+ s->priv->w_trans_enable = w;
+
+ w = glade_xml_get_widget (gui, "trans_step_enable");
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w),
+ s->priv->trans_step_enable);
+ s->priv->w_trans_step_enable = w;
+
+ w = glade_xml_get_widget (gui, "trans_init_cond");
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w),
+ s->priv->trans_init_cond);
+ s->priv->w_trans_init_cond = w;
+
+ g_signal_connect(G_OBJECT(s->priv->w_trans_enable),
+ "clicked", G_CALLBACK(trans_enable_cb), s);
+
+ g_signal_connect(G_OBJECT(s->priv->w_trans_step_enable),
+ "clicked", G_CALLBACK(trans_step_enable_cb), s);
+
+ /* AC */
+ w = glade_xml_get_widget (gui, "ac_enable");
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), s->priv->ac_enable);
+ s->priv->w_ac_enable=w;
+ g_signal_connect (G_OBJECT (w), "clicked", G_CALLBACK(ac_enable_cb), s);
+
+ w = glade_xml_get_widget (gui, "ac_type");
+ if ( s->priv->ac_type )
+ gtk_entry_set_text ( GTK_ENTRY (GTK_COMBO (w)->entry),
+ s->priv->ac_type);
+ s->priv->w_ac_type = GTK_COMBO (w)->entry;
+ g_signal_connect(G_OBJECT (GTK_COMBO (w)->entry),
+ "changed", G_CALLBACK(entry_changed_cb), s);
+
+ w = glade_xml_get_widget (gui, "ac_npoints");
+ gtk_entry_set_text ( GTK_ENTRY (w), s->priv->ac_npoints);
+ s->priv->w_ac_npoints = w;
+ g_signal_connect(G_OBJECT (w), "changed", G_CALLBACK(entry_changed_cb), s);
+
+ w = glade_xml_get_widget (gui, "ac_start");
+ gtk_entry_set_text ( GTK_ENTRY (w), s->priv->ac_start);
+ s->priv->w_ac_start = w;
+ g_signal_connect(G_OBJECT (w), "changed", G_CALLBACK(entry_changed_cb), s);
+
+ w = glade_xml_get_widget (gui, "ac_stop");
+ gtk_entry_set_text(GTK_ENTRY (w), s->priv->ac_stop);
+ s->priv->w_ac_stop = w;
+ g_signal_connect(G_OBJECT(w), "changed", G_CALLBACK(entry_changed_cb), s);
+
+ /* DC */
+ /* Get list of sources */
+
+ items = node_store_get_parts (schematic_get_store (sm));
+ for ( ; items; items = items->next ) {
+ gchar *temp = part_get_property (items->data,"template");
+ gchar *name = part_get_property (items->data,"refdes");
+ if (temp) {
+ gchar c = tolower(*temp);
+ if (c=='v' || c=='i' || c=='e' ||
+ c=='f' || c=='g' || c=='h' || c=='b' ) {
+ gchar *vsrc = g_strdup_printf ("%c_%s",*temp,name);
+ sources = g_list_prepend (sources,vsrc);
+ }
+ }
+ }
+
+ w = glade_xml_get_widget (gui, "dc_enable");
+ s->priv->w_dc_enable = w;
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), s->priv->dc_enable);
+ g_signal_connect(G_OBJECT(w), "clicked", G_CALLBACK(dc_enable_cb), s);
+
+ w = glade_xml_get_widget (gui, "dc_vin1");
+ s->priv->w_dc_vin1 = w;
+ if (sources)
+ gtk_combo_set_popdown_strings (GTK_COMBO (w), sources);
+ gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (w)->entry),s->priv->dc_vin1);
+ g_signal_connect(G_OBJECT(GTK_COMBO(w)->entry),
+ "changed", G_CALLBACK(entry_changed_cb), s);
+
+ w = glade_xml_get_widget (gui, "dc_vin2");
+ s->priv->w_dc_vin2 = w;
+ if (sources)
+ gtk_combo_set_popdown_strings (GTK_COMBO (w),sources);
+ gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (w)->entry),s->priv->dc_vin2);
+ g_signal_connect(G_OBJECT(GTK_COMBO(w)->entry),
+ "changed", G_CALLBACK(entry_changed_cb), s);
+
+ w = glade_xml_get_widget (gui, "dc_start1");
+ s->priv->w_dc_start1 = w;
+ gtk_entry_set_text ( GTK_ENTRY (w), s->priv->dc_start1);
+ g_signal_connect(G_OBJECT(w), "changed", G_CALLBACK(entry_changed_cb), s);
+
+ w = glade_xml_get_widget (gui, "dc_stop1");
+ s->priv->w_dc_stop1 = w;
+ gtk_entry_set_text ( GTK_ENTRY (w), s->priv->dc_stop1);
+ g_signal_connect(G_OBJECT(w), "changed", G_CALLBACK(entry_changed_cb), s);
+
+ w = glade_xml_get_widget (gui, "dc_step1");
+ s->priv->w_dc_step1 = w;
+ gtk_entry_set_text ( GTK_ENTRY (w), s->priv->dc_step1);
+ g_signal_connect(G_OBJECT(w), "changed", G_CALLBACK(entry_changed_cb), s);
+
+ w = glade_xml_get_widget (gui, "dc_start2");
+ s->priv->w_dc_start2 = w;
+ gtk_entry_set_text ( GTK_ENTRY (w), s->priv->dc_start2);
+ g_signal_connect(G_OBJECT(w), "changed", G_CALLBACK(entry_changed_cb), s);
+
+ w = glade_xml_get_widget (gui, "dc_stop2");
+ s->priv->w_dc_stop2 = w;
+ gtk_entry_set_text ( GTK_ENTRY (w), s->priv->dc_stop2);
+ g_signal_connect(G_OBJECT(w), "changed", G_CALLBACK(entry_changed_cb), s);
+ w = glade_xml_get_widget (gui, "dc_step2");
+ s->priv->w_dc_step2 = w;
+ gtk_entry_set_text ( GTK_ENTRY (w), s->priv->dc_step2);
+ g_signal_connect(G_OBJECT(w), "changed", G_CALLBACK(entry_changed_cb), s);
+
+ for (ltmp = sources; ltmp; ltmp = ltmp->next)
+ g_free (ltmp->data);
+ g_list_free (sources);
+
+ /* Fourier */
+ w = glade_xml_get_widget (gui, "fourier_enable");
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), s->priv->four_enable);
+ s->priv->w_four_enable = w;
+ g_signal_connect(G_OBJECT(w), "clicked", G_CALLBACK(four_enable_cb), s);
+
+ w = glade_xml_get_widget (gui, "fourier_freq");
+ s->priv->w_four_freq = w;
+ g_signal_connect(G_OBJECT(w), "changed", G_CALLBACK(entry_changed_cb), s);
+
+ w = glade_xml_get_widget (gui, "fourier_vout");
+ s->priv->w_four_vout = w;
+ g_signal_connect(G_OBJECT(w), "changed", G_CALLBACK(entry_changed_cb), s);
+
+ w = glade_xml_get_widget (gui, "fourier_select_out");
+ s->priv->w_four_combo = w;
+ g_signal_connect (G_OBJECT (GTK_COMBO (w)->entry),
+ "changed", G_CALLBACK(entry_changed_cb), s);
+
+ w = glade_xml_get_widget (gui, "fourier_add");
+ s->priv->w_four_add = w;
+ g_signal_connect(G_OBJECT(w), "clicked", G_CALLBACK(four_add_vout_cb), s);
+
+ gtk_widget_show_all (toplevel);
+
+ ac_enable_cb (s->priv->w_ac_enable,s);
+ four_enable_cb (s->priv->w_four_enable, s);
+ dc_enable_cb(s->priv->w_dc_enable,s);
+ trans_enable_cb (s->priv->w_trans_enable, s);
+ trans_step_enable_cb (s->priv->w_trans_step_enable, s);
+}
+
+GList *
+sim_settings_get_options (SimSettings *s)
+{
+ return s->priv->options;
+}
+
+void
+sim_settings_add_option (SimSettings *s, SimOption *opt)
+{
+ GList *list=s->priv->options;
+
+ /* Remove the option if already in the list. */
+ while (list) {
+ SimOption *so=list->data;
+ if (so && !strcmp (opt->name,so->name)) {
+ GList * tmp_list;
+ g_free (so->name);
+ g_free (so->value);
+ tmp_list = g_list_remove (s->priv->options, so);
+ g_free (so);
+ }
+ list = list->next;
+ }
+ s->priv->options = g_list_append (s->priv->options, opt);
+}
+
diff --git a/src/sim-settings.h b/src/sim-settings.h
new file mode 100644
index 0000000..be2a3a0
--- /dev/null
+++ b/src/sim-settings.h
@@ -0,0 +1,169 @@
+/*
+ * sim-settings.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __SIM_SETTINGS_H
+#define __SIM_SETTINGS_H
+
+#include <gtk/gtk.h>
+
+typedef struct _SimSettings SimSettings;
+
+#include "schematic-view.h"
+#include "schematic.h"
+
+typedef struct _SimSettingsPriv SimSettingsPriv;
+
+struct _SimSettings {
+ Schematic *sm;
+ GtkWidget *pbox;
+ GtkNotebook *notebook;
+ SimSettingsPriv *priv;
+};
+
+typedef struct _SimOption {
+ gchar *name;
+ gchar *value;
+} SimOption;
+
+void sim_settings_show (GtkWidget *widget,
+ SchematicView *sv);
+
+SimSettings *sim_settings_new (Schematic *sm);
+
+/**
+ *
+ */
+gdouble sim_settings_get_trans_start (SimSettings *sim_settings);
+
+gdouble sim_settings_get_trans_stop (SimSettings *sim_settings);
+
+gdouble sim_settings_get_trans_step (SimSettings *sim_settings);
+
+gboolean sim_settings_get_trans (SimSettings *sim_settings);
+
+gdouble sim_settings_get_trans_step_enable (SimSettings *sim_settings);
+
+/**
+ *
+ */
+gboolean sim_settings_get_trans_init_cond (SimSettings *sim_settings);
+
+void sim_settings_set_trans_start (SimSettings *sim_settings,
+ gchar *str);
+
+void sim_settings_set_trans_stop (SimSettings *sim_settings,
+ gchar *str);
+
+void sim_settings_set_trans_step (SimSettings *sim_settings,
+ gchar *str);
+
+void sim_settings_set_trans (SimSettings *sim_settings,
+ gboolean enable);
+
+void sim_settings_set_trans_step_enable (SimSettings *sim_settings,
+ gboolean enable);
+
+void sim_settings_set_trans_init_cond(SimSettings *sim_settings,
+ gboolean enable);
+
+/**
+ *
+ */
+gboolean sim_settings_get_dc (SimSettings *);
+
+gchar *sim_settings_get_dc_vsrc (SimSettings *,gint);
+
+gdouble sim_settings_get_dc_start (SimSettings *, gint);
+
+gdouble sim_settings_get_dc_stop (SimSettings *,gint);
+
+gdouble sim_settings_get_dc_step (SimSettings *,gint);
+
+/**
+ *
+ */
+void sim_settings_set_dc (SimSettings *,
+ gboolean);
+
+void sim_settings_set_dc_vsrc (SimSettings * ,
+ gint,
+ gchar *);
+
+void sim_settings_set_dc_start (SimSettings *,
+ gint,
+ gchar *);
+
+void sim_settings_set_dc_stop (SimSettings *,
+ gint,
+ gchar *);
+
+void sim_settings_set_dc_step (SimSettings *,
+ gint,
+ gchar *);
+
+/**
+ *
+ */
+gboolean sim_settings_get_ac (SimSettings *);
+
+gchar *sim_settings_get_ac_type (SimSettings *);
+
+gint sim_settings_get_ac_npoints (SimSettings *);
+
+gdouble sim_settings_get_ac_start (SimSettings *);
+
+gdouble sim_settings_get_ac_stop (SimSettings *);
+
+/**
+ *
+ */
+void sim_settings_set_ac (SimSettings *,
+ gboolean);
+
+void sim_settings_set_ac_type (SimSettings *,
+ gchar *);
+
+void sim_settings_set_ac_npoints (SimSettings *,
+ gchar *);
+
+void sim_settings_set_ac_start (SimSettings *,
+ gchar *);
+
+void sim_settings_set_ac_stop (SimSettings *,
+ gchar *);
+
+/**
+ *
+ */
+GList *sim_settings_get_options (SimSettings *sim_settings);
+
+void sim_settings_add_option (SimSettings *,
+ SimOption *);
+
+#endif
diff --git a/src/simulation.c b/src/simulation.c
new file mode 100644
index 0000000..c6ae240
--- /dev/null
+++ b/src/simulation.c
@@ -0,0 +1,264 @@
+/*
+ * simulation.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#include <gtk/gtk.h>
+#include <locale.h>
+#include <glade/glade.h>
+
+#include "main.h"
+#include "simulation.h"
+#include "schematic.h"
+#include "schematic-view.h"
+#include "dialogs.h"
+#include "oregano-utils.h"
+#include "oregano-config.h"
+#include "plot.h"
+#include "gnucap.h"
+
+
+typedef struct {
+ Schematic *sm;
+ SchematicView *sv;
+ GtkDialog *dialog;
+ OreganoEngine *engine;
+ GtkProgressBar *progress;
+ GtkLabel *progress_label;
+ int progress_timeout_id;
+} Simulation;
+
+static int progress_bar_timeout_cb (Simulation *s);
+static void cancel_cb (GtkWidget *widget, gint arg1, Simulation *s);
+static void engine_done_cb (OreganoEngine *engine, Simulation *s);
+static void engine_aborted_cb (OreganoEngine *engine, Simulation *s);
+static gboolean simulate_cmd (Simulation *s);
+
+static int
+delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data)
+{
+ return FALSE;
+}
+
+/* TODO : This gpointer sucks */
+gpointer
+simulation_new (Schematic *sm)
+{
+ Simulation *s;
+
+ s = g_new0 (Simulation, 1);
+ s->sm = sm;
+ s->sv = NULL;
+
+ return s;
+}
+
+void
+simulation_show (GtkWidget *widget, SchematicView *sv)
+{
+ GtkWidget *w;
+ GladeXML *gui;
+ Simulation *s;
+ Schematic *sm;
+
+ g_return_if_fail (sv != NULL);
+
+ sm = schematic_view_get_schematic (sv);
+ s = schematic_get_simulation (sm);
+
+ /* Only allow one instance of the dialog box per schematic. */
+ if (s->dialog){
+ gdk_window_raise (GTK_WIDGET (s->dialog)->window);
+ return;
+ }
+
+ if (!g_file_test (OREGANO_GLADEDIR "/simulation.glade",
+ G_FILE_TEST_EXISTS)) {
+ oregano_error (_("Could not create simulation dialog"));
+ return;
+ }
+
+ gui = glade_xml_new (OREGANO_GLADEDIR "/simulation.glade", "toplevel", NULL);
+
+ if (!gui) {
+ oregano_error (_("Could not create simulation dialog"));
+ return;
+ }
+
+ w = glade_xml_get_widget (gui, "toplevel");
+ if (!w) {
+ oregano_error (_("Could not create simulation dialog"));
+ return;
+ }
+
+ s->dialog = GTK_DIALOG (w);
+ g_signal_connect (G_OBJECT (w), "delete_event", G_CALLBACK (delete_event_cb), s);
+
+ w = glade_xml_get_widget (gui, "progressbar");
+ s->progress = GTK_PROGRESS_BAR (w);
+ gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (s->progress), 0.0);
+
+ w = glade_xml_get_widget (gui, "progress_label");
+ s->progress_label = GTK_LABEL (w);
+
+ g_signal_connect (G_OBJECT (s->dialog), "response", G_CALLBACK (cancel_cb), s);
+
+ gtk_widget_show_all (GTK_WIDGET (s->dialog));
+
+ s->sv = sv;
+ simulate_cmd (s);
+}
+
+static int
+progress_bar_timeout_cb (Simulation *s)
+{
+ gchar *str;
+ double p;
+ g_return_val_if_fail (s != NULL, FALSE);
+
+ oregano_engine_get_progress (s->engine, &p);
+
+ if (p >= 1) p = 0;
+
+ gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (s->progress), p);
+
+ str = g_strdup_printf (_("Progress: <b>%s</b>"),
+ oregano_engine_get_current_operation (s->engine));
+ gtk_label_set_markup (s->progress_label, str);
+ g_free (str);
+
+ return TRUE;
+}
+
+static void
+engine_done_cb (OreganoEngine *engine, Simulation *s)
+{
+ if (s->progress_timeout_id != 0) {
+ g_source_remove (s->progress_timeout_id);
+ s->progress_timeout_id = 0;
+
+ /* Make sure that the progress bar is completed, just for good looks. */
+ gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (s->progress), 1.0);
+ }
+
+ gtk_widget_destroy (GTK_WIDGET (s->dialog));
+ s->dialog = NULL;
+
+ plot_show (s->engine);
+
+ if (oregano_engine_has_warnings (s->engine))
+ schematic_view_log_show (s->sv, FALSE);
+
+ schematic_view_clear_op_values (s->sv);
+ schematic_view_show_op_values (s->sv, s->engine);
+
+ /* I don't need the engine anymore. The plot
+ * window own his reference to the engine */
+ g_object_unref (s->engine);
+ s->engine = NULL;
+
+}
+
+static void
+engine_aborted_cb (OreganoEngine *engine, Simulation *s)
+{
+ GtkWidget *dialog;
+ int answer;
+
+ if (s->progress_timeout_id != 0) {
+ g_source_remove (s->progress_timeout_id);
+ s->progress_timeout_id = 0;
+ }
+
+ gtk_widget_destroy (GTK_WIDGET (s->dialog));
+ s->dialog = NULL;
+
+ if (!schematic_view_log_window_exists (s->sv)) {
+ dialog = gtk_message_dialog_new_with_markup (
+ GTK_WINDOW (s->sv->toplevel),
+ GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_YES_NO,
+ _("<span weight=\"bold\" size=\"large\">The simulation was aborted due to an error.</span>\n\n"
+ "Would you like to view the error log?"));
+
+ answer = gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+
+ if (answer == GTK_RESPONSE_YES) {
+ schematic_view_log_show (s->sv, TRUE);
+ }
+ } else {
+ oregano_error (_("The simulation was aborted due to an error"));
+
+ schematic_view_log_show (s->sv, FALSE);
+ }
+}
+
+static void
+cancel_cb (GtkWidget *widget, gint arg1, Simulation *s)
+{
+ g_return_if_fail (s != NULL);
+
+ if (s->progress_timeout_id != 0) {
+ g_source_remove (s->progress_timeout_id);
+ s->progress_timeout_id = 0;
+ }
+
+ if (s->engine)
+ oregano_engine_stop (s->engine);
+
+ gtk_widget_destroy (GTK_WIDGET (s->dialog));
+ s->dialog = NULL;
+ s->sv = NULL;
+}
+
+static gboolean
+simulate_cmd (Simulation *s)
+{
+ OreganoEngine *engine;
+
+ if (s->engine != NULL) {
+ g_object_unref (G_OBJECT (s->engine));
+ s->engine = NULL;
+ }
+
+ engine = oregano_engine_factory_create_engine (oregano.engine, s->sm);
+ s->engine = engine;
+
+ s->progress_timeout_id = g_timeout_add (100, (GSourceFunc)progress_bar_timeout_cb, s);
+
+ g_signal_connect (G_OBJECT (engine), "done", G_CALLBACK (engine_done_cb), s);
+ g_signal_connect (G_OBJECT (engine), "aborted", G_CALLBACK (engine_aborted_cb), s);
+
+ /*TODO: separar generate list del start */
+ oregano_engine_start (engine);
+
+ return TRUE;
+}
+
diff --git a/src/simulation.h b/src/simulation.h
new file mode 100644
index 0000000..3f4e23e
--- /dev/null
+++ b/src/simulation.h
@@ -0,0 +1,136 @@
+/*
+ * simulation.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __SIMULATION_H
+#define __SIMULATION_H
+
+#include <gtk/gtk.h>
+#include "schematic.h"
+#include "schematic-view.h"
+
+typedef struct _SimulationData SimulationData;
+
+typedef enum {
+ OP_POINT ,
+ TRANSIENT ,
+ DC_TRANSFER ,
+ AC ,
+ TRANSFER ,
+ DISTORTION ,
+ NOISE ,
+ POLE_ZERO ,
+ SENSITIVITY ,
+ ANALYSIS_UNKNOWN
+} AnalysisType;
+
+
+#define INFINITE 1e50f
+
+typedef enum {
+ FUNCTION_MINUS = 0,
+ FUNCTION_TRANSFER
+} SimulationFunctionType;
+
+typedef struct _SimulationFunction {
+ SimulationFunctionType type;
+ guint first;
+ guint second;
+} SimulationFunction;
+
+struct _SimulationData {
+ AnalysisType type;
+ gboolean binary;
+ gint state;
+ gint n_variables;
+ gint n_points;
+ gchar **var_names;
+ gchar **var_units;
+ GArray **data;
+ gdouble *min_data;
+ gdouble *max_data;
+ gint got_var;
+ gint got_points;
+ gint num_data;
+
+ /* Functions typeof SimulationFunction */
+ GList *functions;
+};
+
+
+typedef struct {
+ SimulationData sim_data;
+ int state;
+} SimOp;
+
+/* Placeholder for something real later. */
+typedef struct {
+ SimulationData sim_data;
+ double freq;
+ GList *out_var;
+} SimFourier;
+
+typedef struct {
+ SimulationData sim_data;
+ int state;
+ double sim_length;
+ double step_size;
+} SimTransient;
+
+typedef struct {
+ SimulationData sim_data;
+ int state;
+ double sim_length;
+ double start,stop;
+} SimAC;
+
+typedef struct {
+ SimulationData sim_data;
+ int state;
+ double sim_length;
+ double start1,stop1,step1;
+ double start2,stop2,step2;
+} SimDC;
+
+
+typedef union {
+ SimOp op;
+ SimTransient transient;
+ SimFourier fourier;
+ SimAC ac;
+ SimDC dc;
+} Analysis;
+
+void simulation_show (GtkWidget *widget, SchematicView *sv);
+gpointer simulation_new (Schematic *sm);
+gchar *sim_engine_analysis_name(SimulationData *);
+
+#define SIM_DATA(obj) ((SimulationData *)(obj))
+#define ANALYSIS(obj) ((Analysis *)(obj))
+
+#endif /* __SIMULATION_H */
diff --git a/src/smallicon.c b/src/smallicon.c
new file mode 100644
index 0000000..16d2e12
--- /dev/null
+++ b/src/smallicon.c
@@ -0,0 +1,66 @@
+/*
+ * smallicon.c
+ *
+ *
+ * Author:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ *
+ * http://www.dtek.chalmers.se/~d4hult/oregano/
+ *
+ * Copyright (C) 1999,2000 Richard Hult
+ *
+ * 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.
+ */
+#include <gdk/gdkprivate.h>
+#include <gdk/gdkx.h>
+#include <gdk/gdk.h>
+#include <X11/Xlib.h>
+
+#include "smallicon.h"
+
+void
+set_small_icon(GdkWindow *window,
+ GdkPixmap *pixmap,
+ GdkBitmap *mask)
+{
+#ifdef GNOME2_CONVERSION_COMPLETE
+ GdkAtom icon_atom;
+ long data[2];
+
+ g_return_if_fail (window != NULL);
+ g_return_if_fail (pixmap != NULL);
+
+ data[0] = ((GdkPixmapPrivate *)pixmap)->xwindow;
+ if (mask)
+ data[1] = ((GdkPixmapPrivate *)mask)->xwindow;
+ else
+ data[1] = 0;
+
+ icon_atom = gdk_atom_intern ("KWM_WIN_ICON", FALSE);
+ gdk_property_change (window, icon_atom, icon_atom,
+ 32,GDK_PROP_MODE_REPLACE,
+ (guchar *)data, 2);
+
+#endif
+}
diff --git a/src/smallicon.h b/src/smallicon.h
new file mode 100644
index 0000000..304d73e
--- /dev/null
+++ b/src/smallicon.h
@@ -0,0 +1,33 @@
+/*
+ * smallicon.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
+
+void set_small_icon(GdkWindow *window, GdkPixmap *pixmap, GdkBitmap *mask);
diff --git a/src/spice2to3.awk b/src/spice2to3.awk
new file mode 100644
index 0000000..32f7a46
--- /dev/null
+++ b/src/spice2to3.awk
@@ -0,0 +1,294 @@
+#==================================================== -*- AWK -*- =====
+# spice2to3.awk
+#
+# This awk program file is used to convert Spice2 input files to
+# Spice3 format.
+#
+# Specifically, nonlinear dependent sources are converted from
+# the polynomial model to the more general BXXXXX nonlinear
+# dependent source model used in Spice3.
+#
+#
+# Usage:
+# awk -f spice2to3.awk [comments=1] inputfile > outputfile
+#
+# If the optional comments=1 parameter is specified, the original
+# input lines that are converted will be saved as comments in the
+# output file.
+#
+# Limitations:
+# - Cubic and higher order terms are not handled except for
+# the special case of a single variable
+# - Initial conditions are not handled (IC=...)
+# - Continued lines are not handled
+# - This program uses features from GNU awk
+#
+#
+# Mike McCarrick Feb 1995
+# mmccarri@apti.com APTI, Wash DC
+#======================================================================
+
+BEGIN {
+ IGNORECASE = 1;
+}
+
+
+#----------------------------------------------------------------------
+# Utility functions
+#----------------------------------------------------------------------
+
+function min(a,b) {
+ return (a < b) ? a : b;
+}
+
+function max(a,b) {
+ return (a > b) ? a : b;
+}
+
+
+# Turn the original input line into a comment
+function make_comment(inputline) {
+ print "*SPICE2:";
+ print "*" inputline;
+ print "*SPICE3:";
+}
+
+
+# Get leading whitespace from the input line
+function get_leader(inputline)
+{
+ if ((i = match(inputline, "[^ \t]")) != 0)
+ return substr(inputline, 1, i-1);
+ else
+ return "";
+}
+
+
+# Get trailing comments from the input line
+function get_trailer(inputline)
+{
+ if ((i = index(inputline, ";")) != 0)
+ return substr(inputline, i, length(inputline)-i+1);
+ else
+ return "";
+}
+
+
+# Canonicalize the input line
+function canonicalize(inputline)
+{
+ # Strip parentheses and commas from the input line
+ gsub(/\(/, " ", inputline);
+ gsub(/\)/, " ", inputline);
+ gsub(/,/, " ", inputline);
+
+ # chop off any trailing comments
+ if ((i = index(inputline, ";")) != 0)
+ inputline = substr(inputline, 1, i-1);
+
+ return inputline;
+}
+
+
+# Convert numerical values to canonical form (the scale factors are
+# not recognized for B devices at least in 3f4)
+function convert_num(strval)
+{
+ sub(/T/, "E12", strval);
+ sub(/G/, "E9", strval);
+ sub(/MEG/, "E6", strval);
+ sub(/K/, "E3", strval);
+ sub(/M/, "E-3", strval);
+ sub(/U/, "E-6", strval);
+ sub(/N/, "E-9", strval);
+ sub(/P/, "E-12", strval);
+ sub(/F/, "E-15", strval);
+
+ return strval;
+}
+
+
+
+#----------------------------------------------------------------------
+# E: Voltage controlled voltage source
+# G: Voltage controlled current source
+# H: Current controlled voltage source
+# F: Current controlled current source
+#----------------------------------------------------------------------
+/^ *[EGHF].+POLY/ {
+
+ # Save the old line as a comment
+ origline = $0;
+ if (comments != 0)
+ make_comment(origline);
+
+ # Save any leading whitespace and trailing comments
+ leader = get_leader($0);
+ trailer = get_trailer($0);
+
+ # canonicalize the input line
+ $0 = canonicalize($0);
+
+ # Print the new source name with its node connections
+ printf("%sB%s %s %s ", leader, $1, $2, $3);
+
+ # The format differs for voltage vs current controlled sources
+ stype = toupper(substr($1, 1, 1));
+ if (stype == "E" || stype == "H")
+ printf("V = ");
+ else
+ printf("I = ");
+ nvars = $5;
+ inodes = 6;
+ if (stype == "E" || stype == "G")
+ {
+ v_controlled = 1;
+ nnodes = 2 * nvars;
+ }
+ else
+ {
+ v_controlled = 0;
+ nnodes = nvars;
+ }
+
+ icoeff = inodes + nnodes;
+ ncoeff = NF - icoeff + 1;
+ plusflag = 0;
+
+ # Constant term
+ if ($icoeff != 0.0)
+ {
+ printf("%s", convert_num($icoeff));
+ plusflag = 1;
+ }
+ icoeff++;
+ ncoeff--;
+
+ # Linear terms
+ nlinear = min(ncoeff, nvars);
+ for (ic = 0; ic < nlinear; ic++)
+ {
+ if ((val = convert_num($(icoeff + ic))) != 0.0)
+ {
+ if (plusflag)
+ printf(" + ");
+ if (v_controlled)
+ {
+ ip = inodes + 2 * ic;
+ im = ip + 1;
+ if (val != 1.0)
+ printf("%s*V(%s,%s)", val, $ip, $im);
+ else
+ printf("V(%s,%s)", $ip, $im);
+ }
+ else
+ {
+ is = inodes + ic;
+ if (val != 1.0)
+ printf("%s*I(%s)", val, $is);
+ else
+ printf("I(%s)", $is);
+ }
+ plusflag = 1;
+ }
+ }
+ icoeff += ic;
+ ncoeff -= ic;
+
+
+ # Quadratic terms
+ nquad = min(ncoeff, nvars*(nvars+1)/2);
+ for (n1 = ic = 0; n1 < nvars; n1++)
+ {
+ for (n2 = 0; n2 <= n1; n2++)
+ {
+ if (ic > nquad)
+ break;
+
+ if ((val = convert_num($(icoeff + ic))) != 0.0)
+ {
+ if (plusflag)
+ printf(" + ");
+ if (v_controlled)
+ {
+ ip1 = inodes + 2 * n1;
+ im1 = ip1 + 1;
+ ip2 = inodes + 2 * n2;
+ im2 = ip2 + 1;
+ if (val != 1.0)
+ printf("%s*V(%s,%s)*V(%s,%s)", val, $ip1, $im1, $ip2, $im2);
+ else
+ printf("V(%s,%s)*V(%s,%s)", $ip1, $im1, $ip2, $im2);
+ }
+ else
+ {
+ is1 = inodes + n1;
+ is2 = inodes + n2;
+ if (val != 1.0)
+ printf("%s*I(%s)*I(%s)", val, $is1, $is2);
+ else
+ printf("I(%s)*I(%s)", $is1, $is2);
+ }
+ plusflag = 1;
+ }
+ ic++;
+ }
+ }
+
+ icoeff += ic;
+ ncoeff -= ic;
+
+ # Cubic and higher order terms are handled only for a single variable
+ if (ncoeff > 0 && nvars > 1)
+ {
+ print "Warning: the following source line contains" > "/dev/stderr";
+ print "polynomial terms greater than second order." > "/dev/stderr";
+ print "Convert this line manually:" > "/dev/stderr";
+ print origline > "/dev/stderr";
+ # Add a warning message comment in the output file
+ printf(" ; ***ERROR CONVERTING SPICE2 ENTRY\n");
+ next;
+ }
+
+ # Single variable higher-order terms
+ for (ic = 0; ic < ncoeff; ic++)
+ {
+ if ((val = convert_num($(icoeff + ic))) != 0.0)
+ {
+ if (plusflag)
+ printf(" + ");
+ if (v_controlled)
+ {
+ ip = inodes + 2 * ic;
+ im = ip + 1;
+ if (val != 1.0)
+ printf("%s*V(%s,%s)^%d", val, $ip, $im, ic+3);
+ else
+ printf("V(%s,%s)^%d", $ip, $im, ic+3);
+ }
+ else
+ {
+ is = inodes + ic;
+ if (val != 1.0)
+ printf("%s*I(%s)^%d", val, $is, ic+3);
+ else
+ printf("I(%s)^%d", $is, ic+3);
+ }
+ plusflag = 1;
+ }
+ }
+
+ # Add trailing comments to the output line
+ printf(" %s\n", trailer);
+ next;
+
+}
+
+
+
+#----------------------------------------------------------------------
+# Default: just print out the line
+#----------------------------------------------------------------------
+{
+ print $0;
+}
diff --git a/src/splash.c b/src/splash.c
new file mode 100644
index 0000000..65094f2
--- /dev/null
+++ b/src/splash.c
@@ -0,0 +1,118 @@
+/*
+ * splash.c
+ *
+ *
+ * Author:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ *
+ * Copyright (C) 2003-2008 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+
+#include <unistd.h>
+#include <glade/glade.h>
+#include "splash.h"
+#include "splash.xpm"
+#include "dialogs.h"
+
+
+/* TODO : If we support this, we need to know how to stop the g_timeout :-/ */
+static void
+oregano_splash_destroy (GtkWidget *w, GdkEvent *event, Splash *sp)
+{
+ if ((event->type == GDK_BUTTON_PRESS) && (event->button.button == 1)) {
+ if (sp->can_destroy)
+ gtk_widget_destroy (GTK_WIDGET (sp->win));
+ }
+}
+
+Splash *
+oregano_splash_new ()
+{
+ GladeXML *gui;
+ Splash *sp;
+ GtkImage *img;
+ GtkEventBox *event;
+ GdkPixbuf *logo;
+ gchar *msg;
+
+ if (!g_file_test (OREGANO_GLADEDIR "/splash.glade", G_FILE_TEST_EXISTS) ||
+ !g_file_test (OREGANO_GLADEDIR "/splash.xpm", G_FILE_TEST_EXISTS)) {
+ msg = g_strdup_printf (
+ _("The files %s or %s could not be found. You might need to reinstall Oregano to fix this."),
+ OREGANO_GLADEDIR "/splash.glade", OREGANO_GLADEDIR "/splash.xpm");
+ oregano_error_with_title (_("Could not create textbox properties dialog"), msg);
+ g_free (msg);
+ return;
+ }
+ gui = glade_xml_new (OREGANO_GLADEDIR "/splash.glade", NULL, NULL);
+ if (!gui) {
+ oregano_error (_("Could not create textbox properties dialog"));
+ return;
+ }
+
+ sp = g_new0 (Splash, 1);
+ sp->can_destroy = FALSE;
+
+ sp->win = GTK_WINDOW (glade_xml_get_widget (gui, "splash"));
+ sp->lbl = GTK_LABEL (glade_xml_get_widget (gui, "label"));
+ sp->progress = glade_xml_get_widget (gui, "pbar");
+
+ event = GTK_EVENT_BOX (glade_xml_get_widget (gui, "event"));
+ sp->event = GTK_WIDGET (event);
+
+ // Replaced with TimeOut!
+ //g_signal_connect (G_OBJECT (event), "button_press_event", G_CALLBACK (oregano_splash_destroy), sp);
+
+ gtk_progress_bar_set_pulse_step (GTK_PROGRESS_BAR (sp->progress), 0.07);
+ gtk_widget_show_all (GTK_WIDGET (sp->win));
+
+ while (gtk_events_pending ())
+ gtk_main_iteration ();
+ return sp;
+}
+
+gboolean
+oregano_splash_free (Splash *sp)
+{
+ /* Need to disconnect the EventBox Widget! */
+ g_signal_handlers_disconnect_by_func (sp->event, oregano_splash_destroy, sp);
+ gtk_widget_destroy (GTK_WIDGET (sp->win));
+ g_free (sp);
+ return FALSE;
+}
+
+void
+oregano_splash_step (Splash *sp, char *s)
+{
+ int i;
+ gtk_label_set_text (sp->lbl, s);
+ gtk_progress_bar_pulse (GTK_PROGRESS_BAR (sp->progress));
+ while (gtk_events_pending ())
+ gtk_main_iteration ();
+}
+
+
+void
+oregano_splash_done (Splash *sp, char *s)
+{
+ gtk_label_set_text (sp->lbl, s);
+ sp->can_destroy = TRUE;
+ g_timeout_add (2000, (GSourceFunc)(oregano_splash_free), sp);
+}
+
diff --git a/src/splash.h b/src/splash.h
new file mode 100644
index 0000000..e689f34
--- /dev/null
+++ b/src/splash.h
@@ -0,0 +1,46 @@
+/*
+ * splash.h
+ *
+ *
+ * Author:
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ *
+ * Copyright (C) 2003-2008 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#ifndef _OREGANO_SPLASH_H_
+#define _OREGANO_SPLASH_H_
+
+#include <gtk/gtk.h>
+
+typedef struct _Splash Splash;
+
+struct _Splash {
+ GtkWindow *win;
+ GtkWidget *progress;
+ GtkWidget *event;
+ GtkLabel *lbl;
+ gboolean can_destroy;
+};
+
+Splash *oregano_splash_new ();
+gboolean oregano_splash_free (Splash *);
+void oregano_splash_step (Splash *, char *s);
+void oregano_splash_done (Splash *, char *s);
+
+#endif //_OREGANO_SPLASH_H_
diff --git a/src/stock.c b/src/stock.c
new file mode 100644
index 0000000..8b42e34
--- /dev/null
+++ b/src/stock.c
@@ -0,0 +1,92 @@
+/*
+ * stock.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+/*
+ * Stock icon code, stolen from:
+ * Eye of Gnome image viewer - stock icons
+ *
+ * Copyright (C) 1999 The Free Software Foundation
+ *
+ * Author: Federico Mena-Quintero <federico@gimp.org>
+ */
+
+#include <gnome.h>
+#include "stock.h"
+#include "stock/sim-settings.xpm"
+#include "stock/rotate.xpm"
+#include "stock/zoom_in.xpm"
+#include "stock/zoom_out.xpm"
+#include "stock/plot.xpm"
+#include "stock/part-browser.xpm"
+#include "stock/grid.xpm"
+#include "stock/arrow.xpm"
+#include "stock/text.xpm"
+#include "stock/wire.xpm"
+#include "stock/voltmeter.xpm"
+#include "stock/vclamp.xpm"
+#include "stock/zoom_pan.xpm"
+#include "stock/zoom_region.xpm"
+
+static void
+add_stock_entry (const gchar *stock_id, char **xpm_data)
+{
+ static GtkIconFactory *factory = NULL;
+ GdkPixbuf *pixbuf;
+ GtkIconSet *icon_set;
+
+ if (!factory) {
+ factory =gtk_icon_factory_new ();
+ gtk_icon_factory_add_default (factory);
+ }
+
+ pixbuf = gdk_pixbuf_new_from_xpm_data ((const gchar **)xpm_data);
+ icon_set = gtk_icon_set_new_from_pixbuf (pixbuf);
+ gtk_icon_factory_add (factory, stock_id, icon_set);
+ gtk_icon_set_unref (icon_set);
+ g_object_unref (G_OBJECT (pixbuf));
+}
+
+void
+stock_init (void)
+{
+ add_stock_entry (STOCK_PIXMAP_SIM_SETTINGS, sim_settings_xpm);
+ add_stock_entry (STOCK_PIXMAP_ROTATE, rotate_xpm);
+ add_stock_entry (STOCK_PIXMAP_ZOOM_IN, zoom_in_xpm);
+ add_stock_entry (STOCK_PIXMAP_ZOOM_OUT, zoom_out_xpm);
+ add_stock_entry (STOCK_PIXMAP_PLOT, plot_xpm);
+ add_stock_entry (STOCK_PIXMAP_PART_BROWSER, part_browser_xpm);
+ add_stock_entry (STOCK_PIXMAP_GRID, grid_xpm);
+ add_stock_entry (STOCK_PIXMAP_ARROW, arrow_xpm);
+ add_stock_entry (STOCK_PIXMAP_TEXT, text_xpm);
+ add_stock_entry (STOCK_PIXMAP_WIRE, wire_xpm);
+ add_stock_entry (STOCK_PIXMAP_VOLTMETER, voltmeter_xpm);
+ add_stock_entry (STOCK_PIXMAP_V_CLAMP, vclamp_xpm);
+ add_stock_entry (STOCK_PIXMAP_ZOOM_PAN, zoom_pan_xpm);
+ add_stock_entry (STOCK_PIXMAP_ZOOM_REGION, zoom_region_xpm);
+}
diff --git a/src/stock.h b/src/stock.h
new file mode 100644
index 0000000..d736f98
--- /dev/null
+++ b/src/stock.h
@@ -0,0 +1,53 @@
+/*
+ * stock.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#ifndef __STOCK_H
+#define __STOCK_H
+
+/* Stock names */
+
+#define STOCK_PIXMAP_SIM_SETTINGS "OREGANO_stock_sim_settings"
+#define STOCK_PIXMAP_ROTATE "OREGANO_stock_rotate"
+#define STOCK_PIXMAP_ZOOM_IN "OREGANO_stock_zoom_in"
+#define STOCK_PIXMAP_ZOOM_OUT "OREGANO_stock_zoom_out"
+#define STOCK_PIXMAP_PLOT "OREGANO_stock_plot"
+#define STOCK_PIXMAP_PART_BROWSER "OREGANO_stock_part_browser"
+#define STOCK_PIXMAP_GRID "OREGANO_stock_grid"
+#define STOCK_PIXMAP_ARROW "OREGANO_stock_arrow"
+#define STOCK_PIXMAP_TEXT "OREGANO_stock_text"
+#define STOCK_PIXMAP_WIRE "OREGANO_stock_wire"
+#define STOCK_PIXMAP_VOLTMETER "OREGANO_stock_voltmeter"
+#define STOCK_PIXMAP_V_CLAMP "OREGANO_stock_v_clamp"
+#define STOCK_PIXMAP_ZOOM_PAN "OREGANO_stock_zoom_pan"
+#define STOCK_PIXMAP_ZOOM_REGION "OREGANO_stock_zoom_region"
+
+void stock_init (void);
+
+#endif
diff --git a/src/stock/Makefile.am b/src/stock/Makefile.am
new file mode 100644
index 0000000..e4a0270
--- /dev/null
+++ b/src/stock/Makefile.am
@@ -0,0 +1,18 @@
+EXTRA_DIST = \
+ README \
+ arrow.xpm \
+ grid.xcf \
+ grid.xpm \
+ part-browser.xcf \
+ part-browser.xpm \
+ plot.xcf \
+ plot.xpm \
+ plot2.xcf \
+ rotate.xpm \
+ sim-settings.xpm \
+ text.xpm \
+ voltmeter.xpm \
+ wire.xpm \
+ zoom_in.xpm \
+ zoom_out.xpm
+
diff --git a/src/stock/arrow.xpm b/src/stock/arrow.xpm
new file mode 100644
index 0000000..a0e8abc
--- /dev/null
+++ b/src/stock/arrow.xpm
@@ -0,0 +1,64 @@
+/* XPM */
+static char * arrow_xpm[] = {
+"24 24 37 1",
+" c None",
+". c #000000",
+"+ c #DADADA",
+"@ c #FBFBFB",
+"# c #D7D7D7",
+"$ c #F9F9F9",
+"% c #D4D4D4",
+"& c #F6F6F6",
+"* c #D1D1D1",
+"= c #FCFCFC",
+"- c #FAFAFA",
+"; c #F7F7F7",
+"> c #F3F3F3",
+", c #CFCFCF",
+"' c #FDFDFD",
+") c #F8F8F8",
+"! c #F4F4F4",
+"~ c #F0F0F0",
+"{ c #CCCCCC",
+"] c #F5F5F5",
+"^ c #F2F2F2",
+"/ c #EEEEEE",
+"( c #CACACA",
+"_ c #EFEFEF",
+": c #EBEBEB",
+"< c #C9C9C9",
+"[ c #FEFEFE",
+"} c #EDEDED",
+"| c #969696",
+"1 c #B2B2B2",
+"2 c #FFFFFF",
+"3 c #888888",
+"4 c #DCDCDC",
+"5 c #A3A3A3",
+"6 c #BFBFBF",
+"7 c #D2D2D2",
+"8 c #D6D6D6",
+" ",
+" ",
+" . ",
+" .. ",
+" .+. ",
+" .@#. ",
+" .@$%. ",
+" .@$&*. ",
+" .=-;>,. ",
+" .'@)!~{. ",
+" .'@$]^/(. ",
+" .'=-;>_:<. ",
+" .['@)!~}(|. ",
+" .['=$&*1.. ",
+" .2['@)3. ",
+" .245.#&.. ",
+" .6....;7. ",
+" ... .8]. ",
+" .;7. ",
+" .8]. ",
+" ... ",
+" ",
+" ",
+" "};
diff --git a/src/stock/clamp.xpm b/src/stock/clamp.xpm
new file mode 100644
index 0000000..3ac42eb
--- /dev/null
+++ b/src/stock/clamp.xpm
@@ -0,0 +1,30 @@
+/* XPM */
+static char * clamp_xpm[] = {
+"24 24 3 1",
+" c None",
+". c #000000",
+"+ c #BE5959",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" . ",
+" ... ",
+" ... ",
+" ... ",
+" ... ",
+" ... ",
+" ... ",
+" . ... ",
+" .. ... ",
+" .++... ",
+" .+++. ",
+" .++++. ",
+" .+++++.. ",
+" .+++.. ",
+" .+... ",
+" .. ",
+" ",
+" "};
diff --git a/src/stock/grid.xcf b/src/stock/grid.xcf
new file mode 100644
index 0000000..768f69d
--- /dev/null
+++ b/src/stock/grid.xcf
Binary files differ
diff --git a/src/stock/grid.xpm b/src/stock/grid.xpm
new file mode 100644
index 0000000..37910c6
--- /dev/null
+++ b/src/stock/grid.xpm
@@ -0,0 +1,56 @@
+/* XPM */
+static char * grid_xpm[] = {
+"24 24 29 1",
+" c None",
+". c #000000",
+"+ c #E9E9E9",
+"@ c #FFFFFF",
+"# c #B1B1B1",
+"$ c #FBFBFB",
+"% c #BABABA",
+"& c #E4E4E4",
+"* c #ECECEC",
+"= c #B9B9B9",
+"- c #BCBCBC",
+"; c #E7E7E7",
+"> c #B8B8B8",
+", c #969696",
+"' c #7F7F7F",
+") c #707070",
+"! c #737373",
+"~ c #ABABAB",
+"{ c #EBEBEB",
+"] c #7B7B7B",
+"^ c #858585",
+"/ c #747474",
+"( c #E5E5E5",
+"_ c #C3C3C3",
+": c #BFBFBF",
+"< c #757575",
+"[ c #7E7E7E",
+"} c #BBBBBB",
+"| c #A3A3A3",
+" ",
+" ",
+" ",
+" ................. ",
+" .+@@@#$$@@@%@@@&. ",
+" .@*************=. ",
+" .@***-***;*-***>. ",
+" .,**-'-***-'-**). ",
+" .@***-*****-***-. ",
+" .@*************-. ",
+" .@***-*****-***-. ",
+" .,**-'-***-'-**!. ",
+" .@***~*****-*{*-. ",
+" .@*************>. ",
+" .@***-****+-***-. ",
+" .,**-]-***-^-**/. ",
+" .@***-(**;*-***>. ",
+" .@*****{{******-. ",
+" .+__:<-----[>-}|. ",
+" ................. ",
+" ",
+" ",
+" ",
+" "};
diff --git a/src/stock/part-browser.xcf b/src/stock/part-browser.xcf
new file mode 100644
index 0000000..4aa45b3
--- /dev/null
+++ b/src/stock/part-browser.xcf
Binary files differ
diff --git a/src/stock/part-browser.xpm b/src/stock/part-browser.xpm
new file mode 100644
index 0000000..89031d8
--- /dev/null
+++ b/src/stock/part-browser.xpm
@@ -0,0 +1,427 @@
+/* XPM */
+static char * part_browser_xpm[] = {
+"32 32 392 2",
+" c None",
+". c #525251",
+"+ c #606360",
+"@ c #5F625F",
+"# c #60635F",
+"$ c #60625F",
+"% c #5F625E",
+"& c #494B48",
+"* c #C7CCC6",
+"= c #A8B3A5",
+"- c #9CA899",
+"; c #AEB6A6",
+"> c #AAB4A4",
+", c #ABB4A5",
+"' c #9AA797",
+") c #ACB5A5",
+"! c #9DAA9A",
+"~ c #B3BAAA",
+"{ c #9BA897",
+"] c #849081",
+"^ c #252924",
+"/ c #B7C0B5",
+"( c #6F8066",
+"_ c #67775B",
+": c #6B7B5E",
+"< c #5F7155",
+"[ c #6C7B5E",
+"} c #647659",
+"| c #5C6F53",
+"1 c #808A6D",
+"2 c #647559",
+"3 c #54694D",
+"4 c #50664A",
+"5 c #485C43",
+"6 c #171E16",
+"7 c #91997F",
+"8 c #576B4F",
+"9 c #BAC2B8",
+"0 c #B2BAB0",
+"a c #B3BAB1",
+"b c #A5ADA3",
+"c c #697466",
+"d c #586B4F",
+"e c #738064",
+"f c #778367",
+"g c #88947E",
+"h c #B6BDB4",
+"i c #929990",
+"j c #596954",
+"k c #171D15",
+"l c #B7C1B5",
+"m c #889278",
+"n c #6D7C64",
+"o c #6F7E6B",
+"p c #D1D1D1",
+"q c #A6A6A6",
+"r c #979797",
+"s c #6F6F6F",
+"t c #414540",
+"u c #4C5A49",
+"v c #4E6047",
+"w c #8F9883",
+"x c #8B9589",
+"y c #C9C9C9",
+"z c #989898",
+"A c #515151",
+"B c #444B42",
+"C c #4E5E49",
+"D c #55664D",
+"E c #1B2018",
+"F c #9DA287",
+"G c #697660",
+"H c #5F695C",
+"I c #D5D5D5",
+"J c #BCBCBC",
+"K c #C8C8C8",
+"L c #7B7B7B",
+"M c #3A3D39",
+"N c #424D3F",
+"O c #4D5E46",
+"P c #727E6C",
+"Q c #818880",
+"R c #CACACA",
+"S c #C0C0C0",
+"T c #C5C5C5",
+"U c #4C4C4C",
+"V c #3F463D",
+"W c #424F3E",
+"X c #55684D",
+"Y c #9EA388",
+"Z c #738068",
+"` c #ABABAB",
+" . c #A7A7A7",
+".. c #6D6D6D",
+"+. c #3E423D",
+"@. c #4F5D4B",
+"#. c #4E6147",
+"$. c #929B85",
+"%. c #8C9689",
+"&. c #C7C7C7",
+"*. c #A5A5A5",
+"=. c #A1A1A1",
+"-. c #4B4B4B",
+";. c #464F43",
+">. c #4F5F4A",
+",. c #596B50",
+"'. c #65735D",
+"). c #5D675A",
+"!. c #7E7E7E",
+"~. c #3F433E",
+"{. c #424E40",
+"]. c #495B42",
+"^. c #687564",
+"/. c #80877F",
+"(. c #C6C6C6",
+"_. c #D3D3D3",
+":. c #CDCDCD",
+"<. c #434A41",
+"[. c #42503F",
+"}. c #56694E",
+"|. c #B8C1B6",
+"1. c #9FA489",
+"2. c #6F7D6B",
+"3. c #D0D0D0",
+"4. c #A9A9A9",
+"5. c #B3B3B3",
+"6. c #6B6B6B",
+"7. c #4D5A49",
+"8. c #4E6247",
+"9. c #929A85",
+"0. c #8C968A",
+"a. c #C4C4C4",
+"b. c #AAAAAA",
+"c. c #494949",
+"d. c #444B41",
+"e. c #67745E",
+"f. c #9F9F9F",
+"g. c #ACACAC",
+"h. c #606060",
+"i. c #383B37",
+"j. c #414B3E",
+"k. c #4A5C43",
+"l. c #697564",
+"m. c #7C837A",
+"n. c #BFBFBF",
+"o. c #A2A2A2",
+"p. c #454545",
+"q. c #3E453D",
+"r. c #414E3D",
+"s. c #A4A98D",
+"t. c #6C7B63",
+"u. c #B1B1B1",
+"v. c #666666",
+"w. c #3B3F3B",
+"x. c #4A5747",
+"y. c #4C5F46",
+"z. c #74836E",
+"A. c #899387",
+"B. c #BDBDBD",
+"C. c #C2C2C2",
+"D. c #3E443C",
+"E. c #505F4B",
+"F. c #5A6C51",
+"G. c #54654B",
+"H. c #191F17",
+"I. c #B6BFB3",
+"J. c #A4A78C",
+"K. c #68765F",
+"L. c #5D675B",
+"M. c #787878",
+"N. c #3E473B",
+"O. c #475941",
+"P. c #6B7966",
+"Q. c #7D837B",
+"R. c #919191",
+"S. c #414141",
+"T. c #3E453C",
+"U. c #4B5444",
+"V. c #57694F",
+"W. c #A0A589",
+"X. c #697860",
+"Y. c #677564",
+"Z. c #ADADAD",
+"`. c #333732",
+" + c #505D4D",
+".+ c #64725F",
+"++ c #677261",
+"@+ c #858B7F",
+"#+ c #ACACAA",
+"$+ c #A3A3A3",
+"%+ c #939393",
+"&+ c #3F3F3F",
+"*+ c #434C41",
+"=+ c #646F59",
+"-+ c #5B6D52",
+";+ c #999F85",
+">+ c #67755F",
+",+ c #5F6A5C",
+"'+ c #646464",
+")+ c #575757",
+"!+ c #3A3A3A",
+"~+ c #636361",
+"{+ c #8F8C83",
+"]+ c #6E6A5F",
+"^+ c #736E64",
+"/+ c #797469",
+"(+ c #8C867A",
+"_+ c #A8A6A0",
+":+ c #747372",
+"<+ c #313131",
+"[+ c #4E5249",
+"}+ c #505948",
+"|+ c #586A4F",
+"1+ c #6A765C",
+"2+ c #989F84",
+"3+ c #3B4239",
+"4+ c #2E352C",
+"5+ c #2C312A",
+"6+ c #5C5C56",
+"7+ c #878275",
+"8+ c #47473A",
+"9+ c #4B5644",
+"0+ c #596A53",
+"a+ c #515F4B",
+"b+ c #3D4136",
+"c+ c #5D594A",
+"d+ c #7A7362",
+"e+ c #36352D",
+"f+ c #384634",
+"g+ c #6C7B5F",
+"h+ c #667359",
+"i+ c #161D15",
+"j+ c #8C967B",
+"k+ c #788467",
+"l+ c #717F63",
+"m+ c #69785C",
+"n+ c #757D67",
+"o+ c #807D6E",
+"p+ c #505243",
+"q+ c #5C6C56",
+"r+ c #9AA791",
+"s+ c #ACB7A3",
+"t+ c #99A58B",
+"u+ c #708265",
+"v+ c #6E765F",
+"w+ c #676654",
+"x+ c #656251",
+"y+ c #5C654E",
+"z+ c #707D61",
+"A+ c #66775A",
+"B+ c #5A6950",
+"C+ c #61755C",
+"D+ c #848D70",
+"E+ c #495D43",
+"F+ c #8C8E7F",
+"G+ c #4D4A3E",
+"H+ c #74806A",
+"I+ c #9CAD96",
+"J+ c #D3DACC",
+"K+ c #B4C3B0",
+"L+ c #90A386",
+"M+ c #7A8F70",
+"N+ c #7B8A6D",
+"O+ c #4E5F47",
+"P+ c #787363",
+"Q+ c #484C3C",
+"R+ c #616F56",
+"S+ c #7F8A6C",
+"T+ c #68785C",
+"U+ c #465A41",
+"V+ c #929187",
+"W+ c #414637",
+"X+ c #97A48C",
+"Y+ c #B8C6B4",
+"Z+ c #CFD8C7",
+"`+ c #9BAF94",
+" @ c #869B7B",
+".@ c #7B9071",
+"+@ c #808F71",
+"@@ c #4E6248",
+"#@ c #9C9C8D",
+"$@ c #5A584C",
+"%@ c #5C6A51",
+"&@ c #B9B697",
+"*@ c #738164",
+"=@ c #69755A",
+"-@ c #9B988D",
+";@ c #4D5644",
+">@ c #D9D8C5",
+",@ c #C7D1BF",
+"'@ c #EBE9D8",
+")@ c #9EAF91",
+"!@ c #D8D6BC",
+"~@ c #8D9D7F",
+"{@ c #C1BEA3",
+"]@ c #667059",
+"^@ c #9A9786",
+"/@ c #656157",
+"(@ c #A3A084",
+"_@ c #656F56",
+":@ c #DACFAF",
+"<@ c #7E896C",
+"[@ c #747D62",
+"}@ c #A29D93",
+"|@ c #495041",
+"1@ c #DFDAC9",
+"2@ c #B4BFA9",
+"3@ c #F1ECD9",
+"4@ c #9DAD8F",
+"5@ c #EBE5CD",
+"6@ c #92A083",
+"7@ c #CEC7AE",
+"8@ c #606753",
+"9@ c #9B9587",
+"0@ c #545145",
+"a@ c #C0B79A",
+"b@ c #6E755D",
+"c@ c #4B4F4A",
+"d@ c #364133",
+"e@ c #766F5F",
+"f@ c #424839",
+"g@ c #736D5D",
+"h@ c #3D4133",
+"i@ c #746F62",
+"j@ c #474538",
+"k@ c #787267",
+"l@ c #596050",
+"m@ c #8C8677",
+"n@ c #555C4B",
+"o@ c #878171",
+"p@ c #4D5544",
+"q@ c #666154",
+"r@ c #393B33",
+"s@ c #A19C91",
+"t@ c #3A392E",
+"u@ c #666052",
+"v@ c #3C3F32",
+"w@ c #1F271C",
+"x@ c #030403",
+"y@ c #36332B",
+"z@ c #615A4C",
+"A@ c #1A1814",
+"B@ c #020202",
+"C@ c #000000",
+"D@ c #010101",
+"E@ c #6F6E6B",
+"F@ c #7A7467",
+"G@ c #201E19",
+"H@ c #554F42",
+"I@ c #3E3930",
+"J@ c #474237",
+"K@ c #2E2C27",
+"L@ c #212121",
+"M@ c #464645",
+"N@ c #96948D",
+"O@ c #726C60",
+"P@ c #3D382F",
+"Q@ c #555149",
+"R@ c #312D25",
+"S@ c #5E584A",
+"T@ c #7C7769",
+"U@ c #ABA89F",
+"V@ c #A5A199",
+"W@ c #948F82",
+"X@ c #686358",
+"Y@ c #302C26",
+"Z@ c #524C3F",
+"`@ c #ACA8A0",
+" # c #AAA8A1",
+".# c #777572",
+"+# c #4F493D",
+"@# c #585245",
+"## c #4F493E",
+"$# c #27241F",
+"%# c #999690",
+"&# c #938E86",
+"*# c #2F2C26",
+"=# c #0C0B09",
+"-# c #2B2721",
+";# c #98938D",
+"># c #A7A39D",
+",# c #2D2922",
+"'# c #8E8A84",
+")# c #ABA7A1",
+"!# c #34322C",
+"~# c #9A9690",
+"{# c #B3B0AB",
+"]# c #2C2922",
+"^# c #8A8780",
+"/# c #33312C",
+"(# c #7D7970",
+"_# c #47433C",
+" . + @ @ # # $ % # # $ $ @ # # @ @ # # @ & ",
+" * = - ; > > , ' ) ! ~ { ! ! ! ! ' ! ! ! ] ^ ",
+" / ( _ : < < [ } | 1 2 3 4 4 4 4 4 4 4 4 5 6 ",
+" / 7 _ 8 9 0 a b c d e f g h a a i j 4 4 5 k ",
+" l m n o p q r s t u v w x y z r A B C d D E ",
+" l F G H I J K L M N O P Q R S T U V W X D E ",
+" / Y Z o p ` ...+.@.#.$.%.&.*.=.-.;.>.,.D E ",
+" / Y '.).p p &.!.~.{.].^./.(._.:.-.<.[.}.D E ",
+" |.1.n 2.3.4.5.6.~.7.8.9.0.a.` b.c.d.>.,.D E ",
+" / 1.e.).&.f.g.h.i.j.k.l.m.n.o.z p.q.r.}.D E ",
+" |.s.t.2.K S u.v.w.x.y.z.A.B.C.q p.D.E.F.G.H. ",
+" I.J.K.L.y z u.M.i.N.O.P.Q.B.R.a.S.T.U.V.G.H. ",
+" |.W.X.Y.R Z.*.h.`. +.+++@+#+$+%+&+*+=+-+D E ",
+" / ;+>+,+` '+)+!+~+{+]+^+/+(+_+:+<+[+}+|+1+E ",
+" |.2+4 4 3+4+5+6+7+8+9+0+a+b+c+d+e+f+g+4 h+i+ ",
+" I.j+k+g+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+A+B+i+ ",
+" |.C+D+4 g+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+4 5 i+ ",
+" |.C+S+4 T+U+V+W+X+Y+Z+`+ @.@+@@@#@$@%@4 5 i+ ",
+" / C+&@*@&@=@-@;@>@,@'@)@!@~@{@]@^@/@(@_@5 i+ ",
+" |.C+:@<@:@[@}@|@1@2@3@4@5@6@7@8@9@0@a@b@5 i+ ",
+" c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@ ",
+" y@z@A@B@C@ C@D@E@F@G@C@ ",
+" H@I@J@K@ L@M@N@O@P@Q@ ",
+" R@S@T@U@V@W@X@Y@Z@`@ #.# ",
+" +#@###$# %#&#*#=# ",
+" -#;#>#G@=# ",
+" ,#'#)#!#=# ",
+" ,#~#{#G@=# ",
+" ]#^#)#/# ",
+" ]#(#_# ",
+" ",
+" "};
diff --git a/src/stock/plot.xcf b/src/stock/plot.xcf
new file mode 100644
index 0000000..04510f4
--- /dev/null
+++ b/src/stock/plot.xcf
Binary files differ
diff --git a/src/stock/plot.xpm b/src/stock/plot.xpm
new file mode 100644
index 0000000..23c48cb
--- /dev/null
+++ b/src/stock/plot.xpm
@@ -0,0 +1,209 @@
+/* XPM */
+static char * plot_xpm[] = {
+"32 32 174 2",
+" c None",
+". c #141414",
+"+ c #3B3B3B",
+"@ c #404040",
+"# c #545454",
+"$ c #555555",
+"% c #F6F6F6",
+"& c #FFFFFF",
+"* c #FAFAFA",
+"= c #D6D6D6",
+"- c #878787",
+"; c #242424",
+"> c #FEFEFE",
+", c #E6E6E6",
+"' c #F0F0F0",
+") c #A0A0A0",
+"! c #000000",
+"~ c #F8F8F8",
+"{ c #D8D8D8",
+"] c #F5F5F5",
+"^ c #979797",
+"/ c #252525",
+"( c #FDFDFD",
+"_ c #F7F7F7",
+": c #C9C9C9",
+"< c #E0E0E0",
+"[ c #888888",
+"} c #212121",
+"| c #FDFDFC",
+"1 c #FCFCFC",
+"2 c #BFBFBF",
+"3 c #E1E1E1",
+"4 c #C8C8C8",
+"5 c #C2C2C2",
+"6 c #8E8E8E",
+"7 c #FBFBFB",
+"8 c #F1F1F1",
+"9 c #FCFCFB",
+"0 c #F6F6F5",
+"a c #A9A9A9",
+"b c #666666",
+"c c #5D5D5D",
+"d c #565656",
+"e c #5A5A5A",
+"f c #848484",
+"g c #535353",
+"h c #D5D5D5",
+"i c #EAEAEA",
+"j c #C7C7C6",
+"k c #A6A6A6",
+"l c #9A9A9A",
+"m c #6C6C6C",
+"n c #F9F9F9",
+"o c #EEEEEE",
+"p c #DFDFDF",
+"q c #AEAEAE",
+"r c #C4C4C4",
+"s c #DEDEDE",
+"t c #505050",
+"u c #C3C3C3",
+"v c #DDDDDD",
+"w c #F8F8F7",
+"x c #F7F7F6",
+"y c #ECECEB",
+"z c #BEBEBD",
+"A c #DCDCDB",
+"B c #F4F4F3",
+"C c #FEFEFD",
+"D c #EDEDED",
+"E c #C0C0C0",
+"F c #DADADA",
+"G c #F2F2F2",
+"H c #F5F5F4",
+"I c #4E4E4E",
+"J c #C0C0BF",
+"K c #DADAD9",
+"L c #F0F0EF",
+"M c #F3F3F2",
+"N c #E8E8E7",
+"O c #BBBBBA",
+"P c #D7D7D6",
+"Q c #4B6983",
+"R c #E4E4E3",
+"S c #EBEBEA",
+"T c #F2F2F1",
+"U c #3A5165",
+"V c #E7E7E6",
+"W c #BABABA",
+"X c #7590AE",
+"Y c #CFCFCE",
+"Z c #E6E6E5",
+"` c #455668",
+" . c #263440",
+".. c #EEEEED",
+"+. c #C3C3C2",
+"@. c #F1F1F0",
+"#. c #4D4D4D",
+"$. c #6985A1",
+"%. c #CDCDCC",
+"&. c #EDEDEC",
+"*. c #64809D",
+"=. c #3E4F61",
+"-. c #2D3E4E",
+";. c #EFEFEE",
+">. c #EFEFEF",
+",. c #E3E3E3",
+"'. c #64809B",
+"). c #5D7A94",
+"!. c #607C99",
+"~. c #5B7793",
+"{. c #495F75",
+"]. c #CACACA",
+"^. c #E2E2E2",
+"/. c #EBEBEB",
+"(. c #E5E5E4",
+"_. c #68849F",
+":. c #5B7894",
+"<. c #54718C",
+"[. c #D6D6D5",
+"}. c #C2C2C1",
+"|. c #EDEDEB",
+"1. c #4C4C4B",
+"2. c #6C88A2",
+"3. c #5F7B97",
+"4. c #263442",
+"5. c #B5B5B3",
+"6. c #D7D7D5",
+"7. c #EAEAE8",
+"8. c #EAEAE9",
+"9. c #DFDFDE",
+"0. c #1A2026",
+"a. c #67849E",
+"b. c #7692AC",
+"c. c #A2A2A1",
+"d. c #C1C1C0",
+"e. c #E1E1DF",
+"f. c #9D9D9C",
+"g. c #CBCBC9",
+"h. c #E4E4E2",
+"i. c #E6E6E4",
+"j. c #E5E5E3",
+"k. c #C0C0BE",
+"l. c #DADAD8",
+"m. c #E2E2E0",
+"n. c #D5D5D3",
+"o. c #989897",
+"p. c #959594",
+"q. c #494948",
+"r. c #949493",
+"s. c #979795",
+"t. c #969694",
+"u. c #A0A09F",
+"v. c #BABAB9",
+"w. c #F3F3F3",
+"x. c #E3E3E1",
+"y. c #C5C5C3",
+"z. c #B5B5B4",
+"A. c #BCBCBB",
+"B. c #C1C1BF",
+"C. c #D0D0CE",
+"D. c #DBDBD9",
+"E. c #DFDFDD",
+"F. c #D9D9D7",
+"G. c #D2D2D1",
+"H. c #D9D9D8",
+"I. c #D8D8D6",
+"J. c #DEDEDC",
+"K. c #E0E0DE",
+"L. c #E9E9E9",
+"M. c #B6B6B5",
+"N. c #323232",
+"O. c #C5C5C4",
+"P. c #C1C1C1",
+"Q. c #979796",
+". + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # $ ",
+"+ % & & & & & & & & & & & & & & & & & * = - ; ",
+"@ & & & & & & & & & & & > > > > > > > * , ' ) ! ",
+"@ & & & & & & & & & > > > > > > > > > ~ { & ] ^ / ",
+"@ & & & & & & & > > > > > > > > > ( ( _ : ( ( < [ } ",
+"@ & & & & > ( > > > > > > ( ( ( | 1 1 % 2 3 = 4 5 6 ",
+"@ & & & 7 ! 8 ~ ( > > > ( ( | 1 1 1 9 0 a b c d e f ! ",
+"@ & & & g ! h i 7 > ( ( 1 1 1 1 9 * * _ ' = j k l m ! ",
+"@ & * n o ! 5 p % * * * * * * * * * * * * * * * * q ! ",
+"@ & * * 8 ! r s % * * * * * * * * * * n * * * * * 5 ! ",
+"@ > n n t ! u v ] n n n n n n n n n n n n n n n n r ! ",
+"@ > w x y ! z A B w w w w w w w w w w w w w w w w r ! ",
+"@ C % % D ! E F G % % % % % % % % % % % % % % % % r ! ",
+"@ ( H H I ! J K L M B H H H H H B M M H H H H H H u ! ",
+"@ ( B M N ! O P Q R S T B B B T U R S L B B B B B u ! ",
+"@ 1 T T V ! W Q X Q Y Z L T L Q ` .Y Z ..T T T T +.! ",
+"@ 1 @.@.#.! Q X $.Q Q %.R &.Q X *.=.-.%.R ..;.L @.+.! ",
+"@ 1 >.o ,.! X $.'.).Q Q : Q X !.~.{.U -.].^./.o >.5 ! ",
+"@ 7 ....(.! $.'._.).Q Q Q X ~.:.<.Q U U -.Q [.Z &.}.! ",
+"@ * |.|.1.! '.'.2.Q Q ).).*.3.Q <.Q Q U U 4.5.6.7.}.! ",
+"@ x S 8.9.0.a.<.Q <.).b.2.3.<.<.Q Q Q Q Q Q c.Y V d.! ",
+"@ 0 7.7.e.! Q Q Q Q Q Q Q Q <.Q Q Q Q Q Q Q f.g.h.E ! ",
+"@ B i.j.! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! k.l.J ! ",
+"@ B h.m.n.! o.p.q.r.s.q.r.s.q.r.s.q.r.s.q.t.u.v.n.J ! ",
+"@ w.x.m.K y.z.O k.A.B.B.A.B.B.A.B.B.A.B.B.A.+.C.D.J ! ",
+"@ M e.e.E.F.G.6.H.I.H.H.I.H.H.I.H.H.I.H.H.I.l.J.K.J ! ",
+"+ L.e.e.e.K.E.K.e.K.e.e.K.e.e.K.e.e.K.e.e.K.e.e.e.M.! ",
+"N.O.P.P.d.d.d.d.d.d.d.d.E E E E E E E E E E E E M.Q.! ",
+" ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ",
+" ",
+" ",
+" "};
diff --git a/src/stock/plot2.xcf b/src/stock/plot2.xcf
new file mode 100644
index 0000000..1071ccf
--- /dev/null
+++ b/src/stock/plot2.xcf
Binary files differ
diff --git a/src/stock/rotate.xpm b/src/stock/rotate.xpm
new file mode 100644
index 0000000..78b2090
--- /dev/null
+++ b/src/stock/rotate.xpm
@@ -0,0 +1,62 @@
+/* XPM */
+static char * rotate_xpm[] = {
+"16 16 43 1",
+" c None",
+". c #000000",
+"+ c #F3F3F5",
+"@ c #ECECEE",
+"# c #939CA2",
+"$ c #8D959C",
+"% c #E0E0E1",
+"& c #87929D",
+"* c #8A95A0",
+"= c #9299A1",
+"- c #D2D2D3",
+"; c #8F99A4",
+"> c #939DA8",
+", c #A2AAB0",
+"' c #CED0D1",
+") c #ECEEEE",
+"! c #97A2AC",
+"~ c #9CA6B0",
+"{ c #A9AFB6",
+"] c #CFD0D2",
+"^ c #A0A5AB",
+"/ c #A0AAB4",
+"( c #A3ADB7",
+"_ c #AFB5BB",
+": c #C3C4C5",
+"< c #3A3A3A",
+"[ c #A8AEB2",
+"} c #A7B1BA",
+"| c #AAB4BD",
+"1 c #B3BAC0",
+"2 c #939393",
+"3 c #666666",
+"4 c #AFB3B6",
+"5 c #AEB8C1",
+"6 c #8D8D8D",
+"7 c #B2B6BB",
+"8 c #ABB4BD",
+"9 c #909090",
+"0 c #B5BAC0",
+"a c #B2BBC3",
+"b c #959595",
+"c c #B8B8B8",
+"d c #9C9C9C",
+" ",
+" .. ",
+" . ",
+" .. . ",
+" .++. ... ",
+" .@#$%. . ",
+" .@#&*=-. ",
+" .@#&*;>,'. ",
+".)#&*;>!~{]. ",
+" .^*;>!~/(_:. ",
+" <[>!~/(}|12. ",
+" 34~/(}|56. ",
+" <78}|59. ",
+" .0a5b. ",
+" .cd. ",
+" .. "};
diff --git a/src/stock/sim-settings.xpm b/src/stock/sim-settings.xpm
new file mode 100644
index 0000000..3bcfe43
--- /dev/null
+++ b/src/stock/sim-settings.xpm
@@ -0,0 +1,187 @@
+/* XPM */
+static char * sim_settings_xpm[] = {
+"24 24 160 2",
+" c None",
+". c #000000",
+"+ c #E5E5E5",
+"@ c #CECECE",
+"# c #CDCDCD",
+"$ c #DCCB94",
+"% c #DCDCDC",
+"& c #C7C7C7",
+"* c #8E7D45",
+"= c #CFCFCF",
+"- c #C1C1C1",
+"; c #B2A97E",
+"> c #CCC9B7",
+", c #BAB7AB",
+"' c #898989",
+") c #E3E3DF",
+"! c #AB5959",
+"~ c #D9D9D9",
+"{ c #878787",
+"] c #DBDBDB",
+"^ c #B0A77C",
+"/ c #B5AC80",
+"( c #4A4634",
+"_ c #CAC6B4",
+": c #CEC9B4",
+"< c #CECBBA",
+"[ c #A84F4F",
+"} c #A7A7A7",
+"| c #9B9B9B",
+"1 c #B7AE81",
+"2 c #BDB486",
+"3 c #343124",
+"4 c #CFCCBB",
+"5 c #F5F5F5",
+"6 c #F3F3F3",
+"7 c #A65757",
+"8 c #6E6E6E",
+"9 c #ADA57B",
+"0 c #B4AC80",
+"a c #7C7557",
+"b c #4C4836",
+"c c #D0CCB9",
+"d c #CBBEAC",
+"e c #A35252",
+"f c #C48B8B",
+"g c #AA6C6C",
+"h c #B1A87D",
+"i c #B9B082",
+"j c #BEB586",
+"k c #4C4936",
+"l c #867F7F",
+"m c #A65353",
+"n c #633434",
+"o c #CFCBBA",
+"p c #D0CCBB",
+"q c #332D18",
+"r c #C6C6C6",
+"s c #7A7356",
+"t c #BAB183",
+"u c #7F7F7F",
+"v c #D1CEBB",
+"w c #D3D0BE",
+"x c #D4D0BE",
+"y c #4B4735",
+"z c #7F7554",
+"A c #554B29",
+"B c #494533",
+"C c #2B2B2B",
+"D c #E4E4E4",
+"E c #D6D6D0",
+"F c #C0C0BB",
+"G c #828279",
+"H c #4A4735",
+"I c #D7D4C1",
+"J c #D8D4C1",
+"K c #D9D5C1",
+"L c #E2DFCB",
+"M c #B7A155",
+"N c #96854B",
+"O c #504C38",
+"P c #4E4B37",
+"Q c #C3BFA9",
+"R c #AEAA90",
+"S c #63635B",
+"T c #A7A79A",
+"U c #818174",
+"V c #D4D0BC",
+"W c #DAD6C1",
+"X c #D9D6C1",
+"Y c #D4D6C1",
+"Z c #58543E",
+"` c #54503B",
+" . c #B5B194",
+".. c #B3B093",
+"+. c #B4B095",
+"@. c #64645C",
+"#. c #C8C8C8",
+"$. c #C2B889",
+"%. c #504D39",
+"&. c #DDD9C4",
+"*. c #B9B598",
+"=. c #A9A587",
+"-. c #A19D80",
+";. c #C0C1AA",
+">. c #D7D3BA",
+",. c #D6D2BA",
+"'. c #D5D1B9",
+"). c #828282",
+"!. c #C2B98A",
+"~. c #514D39",
+"{. c #D2CEBA",
+"]. c #DFDBC5",
+"^. c #D3CFB9",
+"/. c #C0BDB0",
+"(. c #DFDBC6",
+"_. c #DEDAC5",
+":. c #DCD8C4",
+"<. c #C8C4B0",
+"[. c #524F3A",
+"}. c #BBB284",
+"|. c #CAC18F",
+"1. c #534F3B",
+"2. c #BCB9AD",
+"3. c #D3D0BD",
+"4. c #BDBBAD",
+"5. c #524E3A",
+"6. c #69644A",
+"7. c #BCB385",
+"8. c #C3BA8A",
+"9. c #CAC08F",
+"0. c #534F3A",
+"a. c #D8D4C0",
+"b. c #DCD9C4",
+"c. c #BBB8AC",
+"d. c #DAD6C2",
+"e. c #CCC8B3",
+"f. c #CCC290",
+"g. c #C4BA8A",
+"h. c #C8BE8D",
+"i. c #CDC491",
+"j. c #DDD9C5",
+"k. c #D4CFB6",
+"l. c #6E684D",
+"m. c #CEC592",
+"n. c #C5BC8C",
+"o. c #CEC491",
+"p. c #CFC592",
+"q. c #C1B888",
+"r. c #BEB486",
+"s. c #C6BC8C",
+"t. c #C8BF8D",
+"u. c #C9C08F",
+"v. c #C9BF8E",
+"w. c #C7BE8D",
+"x. c #C5BB8B",
+"y. c #C0B788",
+"z. c #B2A97D",
+"A. c #C2B989",
+"B. c #BFB687",
+"C. c #B3AA7E",
+" ",
+" . . ",
+" . . + @ . . ",
+" . . # + + + . . $ . ",
+" . . . % + + + + + & . . $ * . ",
+" . . . . # + + + + = + - + + . . $ * . ",
+" . ; . > , ' ) + ! + ~ + = { + ] . $ * . ",
+". ^ / ( _ : < ' + [ } + | { + + . $ * . ",
+". . 1 2 3 4 ' 5 6 7 + 8 + + + . $ * . ",
+". 9 0 a b c d e f g + ' ' + . $ * . ~ . ",
+". . h i j k + l m n o 4 p . $ q . = + r . ",
+" . s . t s u v ' + w x y z A B C D E F G . ",
+" . . . H I J K L M N O P Q R S T T U . ",
+" . V W X Y Z ` ...+.@.T T #.. ",
+" . $.%.&.*.=.-.;.>.,.'.' ).. . ",
+" . i !.~.{.].^./.K (._.:.<.[.. ",
+" . }.!.|.1._.2.3.4.(._.5.6.j . ",
+" . 7.8.9.0.a.b.c.d.e.6.f.g.}.. ",
+" . . h.i.` j.k.0.l.m.h.. . ",
+" . n.9.o.[.0.p.f.h.q.. ",
+" . r.8.s.t.u.v.w.x.y.}.z.. ",
+" . j . . A.$.B.. . C.. ",
+" . . }.t 1 . . ",
+" . . . "};
diff --git a/src/stock/text.xpm b/src/stock/text.xpm
new file mode 100644
index 0000000..e2d19ff
--- /dev/null
+++ b/src/stock/text.xpm
@@ -0,0 +1,30 @@
+/* XPM */
+static char * text_xpm[] = {
+"24 24 3 1",
+" c None",
+". c #000000",
+"+ c #777777",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ........... ",
+" ..++...++..+ ",
+" .++ ...+ .+ ",
+" + ...+ + ",
+" +..+ ",
+" +..+ ",
+" +..+ ",
+" ...+ ",
+" ..+ ",
+" +..+ ",
+" +..+ ",
+" ...+ ",
+" ..... ",
+" +++++ ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/src/stock/vclamp.xpm b/src/stock/vclamp.xpm
new file mode 100644
index 0000000..9629725
--- /dev/null
+++ b/src/stock/vclamp.xpm
@@ -0,0 +1,88 @@
+/* XPM */
+static char * vclamp_xpm[] = {
+"24 24 61 1",
+" c None",
+". c #000000",
+"+ c #2C2C2C",
+"@ c #3F4040",
+"# c #535353",
+"$ c #101010",
+"% c #262625",
+"& c #404040",
+"* c #595A5A",
+"= c #70706F",
+"- c #1A1A1A",
+"; c #656666",
+"> c #7F7F7F",
+", c #8F8F8F",
+"' c #2C2C2B",
+") c #262526",
+"! c #3F403F",
+"~ c #7F7F80",
+"{ c #9A9999",
+"] c #A5A5A5",
+"^ c #ABACAC",
+"/ c #403F40",
+"( c #40403F",
+"_ c #80807F",
+": c #BFBFBF",
+"< c #BFC0BF",
+"[ c #C0BFBF",
+"} c #535453",
+"| c #5A5A5A",
+"1 c #656566",
+"2 c #FFFFFF",
+"3 c #E5E5E5",
+"4 c #DAD9DA",
+"5 c #D3D3D4",
+"6 c #706F6F",
+"7 c #808080",
+"8 c #EFEFEF",
+"9 c #FF003C",
+"0 c #908F90",
+"a c #A5A5A6",
+"b c #D9D9D9",
+"c c #2B2A2A",
+"d c #555555",
+"e c #ACACAC",
+"f c #D3D3D3",
+"g c #070707",
+"h c #030303",
+"i c #2B2B2B",
+"j c #010101",
+"k c #020202",
+"l c #2B2B2A",
+"m c #807F80",
+"n c #AAAAAA",
+"o c #2A2A2B",
+"p c #D4D5D4",
+"q c #2A2A2A",
+"r c #807F7F",
+"s c #D4D4D4",
+"t c #7F8080",
+"u c #D5D4D5",
+"v c #D5D4D4",
+" ",
+" ",
+" ..... ",
+" ..+@#.. ",
+" ..$%&*=.. ",
+" ..$.-&;>,.. ",
+" .')-.!~{]^. ",
+" .@/(&_:<[:. ",
+" .}|1_:2345. ",
+" ...67{:328.. ",
+" ..99.0a:b8..99 ",
+" ..cd99.e:fgh9922",
+" ..id7992jkk. 992 ",
+" ..ldmn992 992 ",
+" ..od>np299 9922 ",
+" ..qdrnp2.992 992 ",
+" ..ldmns2. 99 9922 ",
+" ..dtnu2. 992 992 ",
+" ....nv2. 992 992 ",
+" .....2. 999922 ",
+" ...... 99992 ",
+" ... 9922 ",
+" 992 ",
+" 22 "};
diff --git a/src/stock/voltmeter.xpm b/src/stock/voltmeter.xpm
new file mode 100644
index 0000000..369f2b1
--- /dev/null
+++ b/src/stock/voltmeter.xpm
@@ -0,0 +1,30 @@
+/* XPM */
+static char * voltmeter_xpm[] = {
+"24 24 3 1",
+" c None",
+". c #000000",
+"+ c #5373E8",
+" ",
+" ",
+" ",
+" ",
+" . . ",
+" + . . ",
+" + . . ",
+" + . . ",
+" + . . ",
+" + . ",
+" + ",
+" + ",
+" . ",
+" ... ",
+" +++.....+++++ ",
+" ... ",
+" . ",
+" + ",
+" + ",
+" + ",
+" + ",
+" ",
+" ",
+" "};
diff --git a/src/stock/wire.xpm b/src/stock/wire.xpm
new file mode 100644
index 0000000..4e205bc
--- /dev/null
+++ b/src/stock/wire.xpm
@@ -0,0 +1,184 @@
+/* XPM */
+static char * wire_xpm[] = {
+"32 31 150 2",
+" c None",
+". c #E0B5AE",
+"+ c #DEB2AA",
+"@ c #D39F90",
+"# c #C88974",
+"$ c #BD7659",
+"% c #E1B6AF",
+"& c #DFB3AC",
+"* c #D9A79C",
+"= c #CD9280",
+"- c #C17C63",
+"; c #B56848",
+"> c #DCAEA4",
+", c #D19A8A",
+"' c #C6846E",
+") c #BA6F51",
+"! c #AF5B36",
+"~ c #A64B21",
+"{ c #DDB0A7",
+"] c #D5A294",
+"^ c #CA8C78",
+"/ c #BE775C",
+"( c #B26240",
+"_ c #A74D24",
+": c #A14216",
+"< c #E6C28E",
+"[ c #DAB08C",
+"} c #CE9482",
+"| c #C27F66",
+"1 c #B66A4A",
+"2 c #AB552E",
+"3 c #9F4013",
+"4 c #9C3A0B",
+"5 c #F3E538",
+"6 c #DEDE05",
+"7 c #CAC80C",
+"8 c #C5B11D",
+"9 c #B27B28",
+"0 c #A24C1A",
+"a c #9D3C0A",
+"b c #9C3909",
+"c c #F5F600",
+"d c #D5D900",
+"e c #C9CE00",
+"f c #C3C501",
+"g c #A59208",
+"h c #945709",
+"i c #9E5A05",
+"j c #0000FF",
+"k c #FEFE00",
+"l c #E9EC00",
+"m c #CED300",
+"n c #CACF00",
+"o c #B7BB00",
+"p c #8F8F00",
+"q c #857600",
+"r c #9F7602",
+"s c #FDFD00",
+"t c #DCDF00",
+"u c #A7AA00",
+"v c #828300",
+"w c #8F9000",
+"x c #ABAC00",
+"y c #F7F700",
+"z c #D0D400",
+"A c #929400",
+"B c #7A7A00",
+"C c #9B9C00",
+"D c #B4B500",
+"E c #FCFC00",
+"F c #ECEE00",
+"G c #C5CA00",
+"H c #7B7C00",
+"I c #787800",
+"J c #DFE200",
+"K c #C6CB00",
+"L c #AEB200",
+"M c #797900",
+"N c #808000",
+"O c #FFFF00",
+"P c #EEF000",
+"Q c #BFC400",
+"R c #9A9C00",
+"S c #818100",
+"T c #8C8D00",
+"U c #E3E600",
+"V c #B4B700",
+"W c #898A00",
+"X c #A3A600",
+"Y c #7C7D00",
+"Z c #9C9D00",
+"` c #F4F600",
+" . c #CCD100",
+".. c #C3C800",
+"+. c #919300",
+"@. c #ADAF00",
+"#. c #FBFB00",
+"$. c #E6E900",
+"%. c #B4B800",
+"&. c #838400",
+"*. c #7E7F00",
+"=. c #F4F400",
+"-. c #D8D900",
+";. c #C9CB00",
+">. c #C9CD00",
+",. c #A0A300",
+"'. c #DCB400",
+"). c #C3A000",
+"!. c #C1AA00",
+"~. c #C2B900",
+"{. c #8B8C00",
+"]. c #D89F00",
+"^. c #D29700",
+"/. c #B88300",
+"(. c #B58300",
+"_. c #917A00",
+":. c #8F8E00",
+"<. c #D59800",
+"[. c #CC9200",
+"}. c #B58100",
+"|. c #A87800",
+"1. c #9F7700",
+"2. c #9D9600",
+"3. c #C78E00",
+"4. c #B78200",
+"5. c #AF7C00",
+"6. c #A27300",
+"7. c #A47800",
+"8. c #AF8E00",
+"9. c #C18A00",
+"0. c #B58000",
+"a. c #A77700",
+"b. c #A37400",
+"c. c #BB8500",
+"d. c #AE7C00",
+"e. c #AD7B00",
+"f. c #9B6F40",
+"g. c #986C28",
+"h. c #A57501",
+"i. c #3626BC",
+"j. c #402DA1",
+"k. c #775446",
+"l. c #1811E0",
+"m. c #291DC1",
+"n. c #4E00B0",
+"o. c #4B1DA2",
+"p. c #C90035",
+"q. c #FF0000",
+"r. c #E60017",
+"s. c #9A274F",
+" ",
+" ",
+" . + @ # $ ",
+" % & * = - ; ",
+" . > , ' ) ! ~ ",
+" . { ] ^ / ( _ : ",
+" < [ } | 1 2 3 4 ",
+" 5 6 7 8 9 0 a b ",
+" c d e f g h i ",
+" j j j j j j j k l m n o p q r ",
+" j s t n n u v w x ",
+" j k y z n n A B C D ",
+" j E F n e G H I ",
+" j y J n K L M N ",
+" j O P d n Q R S T ",
+" j k U m n V W T ",
+" j O d n n X Y Z ",
+" j k ` .n ..+.M @. ",
+" j #.$.n n %.&.*. ",
+" j =.-.;.>.,.H *. ",
+" j '.).!.~.{.N ",
+" j ].^././.(._.:. ",
+" j <.[./.}.|.1.2. ",
+" j <.3.4.5.6.7.8. ",
+" j <.9.0.a.b. ",
+" j <.c.d.b.e. ",
+" j f.g.h.|. ",
+" j i.j.k. ",
+" j l.m. ",
+" n. o. ",
+" p. q. q. r.s. "};
diff --git a/src/stock/zoom_in.xpm b/src/stock/zoom_in.xpm
new file mode 100644
index 0000000..b78f85e
--- /dev/null
+++ b/src/stock/zoom_in.xpm
@@ -0,0 +1,36 @@
+/* XPM */
+static char * zoom_in_xpm[] = {
+"24 24 9 1",
+" c None",
+". c #020204",
+"+ c #B5B5B6",
+"@ c #D0D0D1",
+"# c #9A9A98",
+"$ c #E8E8E9",
+"% c #8F8F91",
+"& c #6E6E6E",
+"* c #5A5A5C",
+" ",
+" ",
+" ",
+" ... ",
+" ..+@+.. ",
+" .#@$$$@#. ",
+" .%$$$.#$+&. ",
+" .@$$$.#$@#. ",
+" .+$$$$.+$$#&. ",
+" .@$.......@&. ",
+" .+$##+.&%&@*. ",
+" .@$$$.&#$&. ",
+" .#+@@.&$%*. ",
+" ..%#+#@%*. ",
+" .#...&&*.. ",
+" ..#. ... ",
+" .$.. ",
+" .$... ",
+" .$... ",
+" .#.. ",
+" .. ",
+" ",
+" ",
+" "};
diff --git a/src/stock/zoom_out.xpm b/src/stock/zoom_out.xpm
new file mode 100644
index 0000000..8923760
--- /dev/null
+++ b/src/stock/zoom_out.xpm
@@ -0,0 +1,36 @@
+/* XPM */
+static char * zoom_out_xpm[] = {
+"24 24 9 1",
+" c None",
+". c #020204",
+"+ c #B5B5B6",
+"@ c #D0D0D1",
+"# c #9A9A98",
+"$ c #E8E8E9",
+"% c #8F8F91",
+"& c #6E6E6E",
+"* c #5A5A5C",
+" ",
+" ",
+" ",
+" ... ",
+" ..+@+.. ",
+" .#@$$$@#. ",
+" .%$$$$$$+&. ",
+" .@$$$$$$@#. ",
+" .+$$$$$$$@#&. ",
+" .@$.......+&. ",
+" .+$@####%&+*. ",
+" .@$$$@+#$&. ",
+" .#+@@+#$%*. ",
+" ..%#+#@%*. ",
+" .#...&&*.. ",
+" ..#. ... ",
+" .$.. ",
+" .$... ",
+" .$... ",
+" .#.. ",
+" .. ",
+" ",
+" ",
+" "};
diff --git a/src/stock/zoom_pan.xpm b/src/stock/zoom_pan.xpm
new file mode 100644
index 0000000..b609067
--- /dev/null
+++ b/src/stock/zoom_pan.xpm
@@ -0,0 +1,270 @@
+/* XPM */
+static char * zoom_pan_xpm[] = {
+"24 24 243 2",
+" c None",
+". c #000000",
+"+ c #0E0E0E",
+"@ c #282828",
+"# c #616161",
+"$ c #D3D3D3",
+"% c #F6F6F6",
+"& c #FFFFFF",
+"* c #F9F9F9",
+"= c #F9F9F8",
+"- c #E7E7E7",
+"; c #E4E4E4",
+"> c #CDCDCD",
+", c #1F1F1F",
+"' c #EFEFEE",
+") c #AFAFAE",
+"! c #E9E9E9",
+"~ c #B3B3B3",
+"{ c #383838",
+"] c #FEFEFE",
+"^ c #FDFDFD",
+"/ c #EEEEEE",
+"( c #A4A4A3",
+"_ c #F0F0F0",
+": c #F4F4F4",
+"< c #ABABAB",
+"[ c #050505",
+"} c #FCFCFB",
+"| c #FBFBFB",
+"1 c #F2F2F2",
+"2 c #9E9E9E",
+"3 c #FAFAF9",
+"4 c #F8F8F7",
+"5 c #F7F7F6",
+"6 c #D3D3D2",
+"7 c #B9B7B6",
+"8 c #838381",
+"9 c #848381",
+"0 c #6A6763",
+"a c #F6F6F5",
+"b c #8F8F8E",
+"c c #9F9E9D",
+"d c #D8D8D8",
+"e c #D9D7D5",
+"f c #C8C8C6",
+"g c #B4B4B2",
+"h c #716F6B",
+"i c #8F8F8F",
+"j c #878686",
+"k c #EEEDEC",
+"l c #C3BEA2",
+"m c #A29C86",
+"n c #D6D5D3",
+"o c #30302F",
+"p c #6C6C6A",
+"q c #7C7970",
+"r c #A6A48D",
+"s c #D7D4B7",
+"t c #979796",
+"u c #E9E2BF",
+"v c #D1C8AB",
+"w c #606060",
+"x c #636050",
+"y c #E8E1BD",
+"z c #7C7870",
+"A c #F8F7F6",
+"B c #F5F4F3",
+"C c #C6C4A9",
+"D c #DAD7B9",
+"E c #666666",
+"F c #1C1B1B",
+"G c #E7DFBC",
+"H c #D0C5A8",
+"I c #1E1E1E",
+"J c #C0B798",
+"K c #CFC7A5",
+"L c #0D0D0D",
+"M c #88837A",
+"N c #F6F5F4",
+"O c #F5F5F3",
+"P c #F2F1F0",
+"Q c #737262",
+"R c #615F52",
+"S c #EDEACA",
+"T c #D1CCB1",
+"U c #E7DCBB",
+"V c #CFC3A5",
+"W c #5C5849",
+"X c #E4D9B2",
+"Y c #8C846D",
+"Z c #131313",
+"` c #F4F3F2",
+" . c #F3F2F1",
+".. c #F0F0EE",
+"+. c #E2E2E0",
+"@. c #A5A38D",
+"#. c #DED8BD",
+"$. c #96907D",
+"%. c #E6DBBA",
+"&. c #BCB192",
+"*. c #E1D3AD",
+"=. c #514B3D",
+"-. c #040404",
+";. c #847B66",
+">. c #E4D8B5",
+",. c #E8E8E6",
+"'. c #575756",
+"). c #424141",
+"!. c #EBE4C7",
+"~. c #D3CDB1",
+"{. c #CFC2A4",
+"]. c #E1D3AC",
+"^. c #CAB997",
+"/. c #6B6350",
+"(. c #E0CCA9",
+"_. c #6C6654",
+":. c #898988",
+"<. c #D5D4D3",
+"[. c #C4BEA6",
+"}. c #EAE3C4",
+"|. c #E8E1C0",
+"1. c #E7DDBB",
+"2. c #DCCEAF",
+"3. c #E2D1AF",
+"4. c #DFCEA8",
+"5. c #C9B894",
+"6. c #DEC7A3",
+"7. c #C6B394",
+"8. c #ECECEA",
+"9. c #EEEBCB",
+"0. c #7D7B6A",
+"a. c #4F4F4E",
+"b. c #504D43",
+"c. c #EAE2C4",
+"d. c #BBB49A",
+"e. c #E8DDBE",
+"f. c #C0B59F",
+"g. c #E2D2B1",
+"h. c #DFCDA7",
+"i. c #D6C39C",
+"j. c #DCC49F",
+"k. c #CBB494",
+"l. c #81745F",
+"m. c #E9E8E6",
+"n. c #EDEACB",
+"o. c #868273",
+"p. c #EBE4C9",
+"q. c #9B988F",
+"r. c #EBE1C7",
+"s. c #918C82",
+"t. c #DFD2B6",
+"u. c #9F998C",
+"v. c #CFB997",
+"w. c #D4B998",
+"x. c #C4B08F",
+"y. c #E5E4E1",
+"z. c #747472",
+"A. c #D9D3BA",
+"B. c #8C8977",
+"C. c #EEE6CF",
+"D. c #A5A49E",
+"E. c #D6CEB6",
+"F. c #9C9993",
+"G. c #DFCEB3",
+"H. c #99958D",
+"I. c #D5C0A1",
+"J. c #C7B08F",
+"K. c #776C57",
+"L. c #E3E2DF",
+"M. c #DAD9D6",
+"N. c #3B3B3A",
+"O. c #959380",
+"P. c #ECE6CA",
+"Q. c #D2CCB3",
+"R. c #DAD4BC",
+"S. c #EDE6CC",
+"T. c #929088",
+"U. c #D4CAAD",
+"V. c #A6A29C",
+"W. c #D1BF9F",
+"X. c #918A7C",
+"Y. c #B29E80",
+"Z. c #B19F7F",
+"`. c #57544E",
+" + c #EDEDED",
+".+ c #E1E0DD",
+"++ c #DDDBD8",
+"@+ c #D2D1CE",
+"#+ c #636155",
+"$+ c #ECE7CA",
+"%+ c #D9D2B9",
+"&+ c #EBE5C7",
+"*+ c #C1BBA5",
+"=+ c #E7DDBC",
+"-+ c #BEBAB2",
+";+ c #CCBA9B",
+">+ c #776B57",
+",+ c #B29F80",
+"'+ c #51483A",
+")+ c #7B776D",
+"!+ c #D1D1D1",
+"~+ c #E1DFDB",
+"{+ c #DFDDD9",
+"]+ c #D9D8D4",
+"^+ c #8D8C8A",
+"/+ c #212121",
+"(+ c #C5BFA8",
+"_+ c #E7DCBD",
+":+ c #CBC2B0",
+"<+ c #CAB99A",
+"[+ c #C4B290",
+"}+ c #9F9174",
+"|+ c #8A8885",
+"1+ c #807B72",
+"2+ c #999891",
+"3+ c #A39E92",
+"4+ c #A49E93",
+"5+ c #A29C91",
+"6+ c #9D978B",
+"7+ c #79746C",
+"8+ c #252421",
+"9+ c #1B1A17",
+"0+ c #D8D3B7",
+"a+ c #E8DCBE",
+"b+ c #E6D8B9",
+"c+ c #CBBD9A",
+"d+ c #B7A787",
+"e+ c #A29677",
+"f+ c #79756C",
+"g+ c #5B574E",
+"h+ c #D2CDB2",
+"i+ c #E7DEBD",
+"j+ c #E5D7B6",
+"k+ c #C1B395",
+"l+ c #AEA183",
+"m+ c #A69A7B",
+"n+ c #C3BFA3",
+"o+ c #C2BB9F",
+"p+ c #C1B69B",
+"q+ c #ADA288",
+"r+ c #7E7761",
+"s+ c #7D7760",
+"t+ c #26241E",
+" . . . . . . . . . . . . . + @ # ",
+" . $ % & & & & & & & & * = = - ; > , ",
+" . % & & & & & & & & & & = ' ) ! & ~ { ",
+" . & & & & & & & ] & ] ^ = / ( _ & : < [ ",
+" . & & & & & ] ^ } ^ } | = 1 2 . . . . . ",
+" . & & & ] ^ } | 3 | 3 4 5 1 6 7 8 9 0 . ",
+" . & ] ^ } | = 5 a 4 b . . c d e f g h . ",
+" . & } | 3 i . . j k . l m . n . o p q . ",
+" . & 3 = 5 . r s . t . u v . w x y . z . ",
+" . & 4 A B . C D E F . G H . I J K L M . ",
+" . & N O P Q R S T . . U V . W X Y Z . . . ",
+" . & ` ...+.. @.#.$.. %.V . &.*.=.-.;.>.. ",
+" . & ` ...,.'.).!.~.. %.{.. ].^.. /.(._.. ",
+" . & ..:.. . <.. [.}.|.1.2.3.4.5.. 6.7.. . ",
+" . & 8.. 9.0.. a.b.c.d.e.f.g.h.i.j.k.l.. ",
+" . & m.. 9.n.o.. . p.q.r.s.t.u.v.w.x.. . ",
+" . & y.z.. n.A.B.Z C.D.E.F.G.H.I.J.K.. . ",
+" . * L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.. `.. ",
+" . +.+++@+. #+$+%+&+*+=+-+;+>+,+'+. )+. ",
+" . !+~+{+]+^+. /+(+&+}._+:+<+[+}+. |+1+. ",
+" . 2+3+4+5+6+7+8+9+0+c.a+b+c+d+e+. f+g+. ",
+" . . . . . . . . h+}.i+j+k+l+m+. . . . ",
+" . r n+o+p+q+r+s+t+ ",
+" . "};
diff --git a/src/stock/zoom_region.xpm b/src/stock/zoom_region.xpm
new file mode 100644
index 0000000..f5a7869
--- /dev/null
+++ b/src/stock/zoom_region.xpm
@@ -0,0 +1,229 @@
+/* XPM */
+static char * zoom_region_xpm[] = {
+"24 24 202 2",
+" c None",
+". c #343434",
+"+ c #2D2D2D",
+"@ c #292929",
+"# c #262626",
+"$ c #2E2E2E",
+"% c #303030",
+"& c #737373",
+"* c #A1A1A1",
+"= c #B4B4B4",
+"- c #B2B2B2",
+"; c #9D9D9D",
+"> c #676767",
+", c #202020",
+"' c #1C1C1C",
+") c #272727",
+"! c #616161",
+"~ c #CACACA",
+"{ c #CFCFCF",
+"] c #D0D0D0",
+"^ c #CECECE",
+"/ c #C9C9C9",
+"( c #C1C1C1",
+"_ c #A7A7A7",
+": c #4C4C4C",
+"< c #131313",
+"[ c #222222",
+"} c #757575",
+"| c #D3D3D3",
+"1 c #DBDBDB",
+"2 c #E7E7E7",
+"3 c #EFEFEF",
+"4 c #F3F3F3",
+"5 c #F1F1F1",
+"6 c #E5E5E5",
+"7 c #D2D2D2",
+"8 c #BCBCBC",
+"9 c #5E5E5E",
+"0 c #101010",
+"a c #212121",
+"b c #5B5B5B",
+"c c #CCCCCC",
+"d c #D7D7D7",
+"e c #F5F5F5",
+"f c #FAFAFA",
+"g c #FBFBFB",
+"h c #F8F8F8",
+"i c #F0F0F0",
+"j c #E1E1E1",
+"k c #C2C2C2",
+"l c #434343",
+"m c #0F0F0F",
+"n c #1D1D1D",
+"o c #3F3F3F",
+"p c #444444",
+"q c #4A4A4A",
+"r c #4B4B4B",
+"s c #FDFDFD",
+"t c #FCFCFC",
+"u c #F2F2F2",
+"v c #ECECEC",
+"w c #E4E4E4",
+"x c #ABABAB",
+"y c #0E0E0E",
+"z c #1B1B1B",
+"A c #6A6963",
+"B c #C8C1AB",
+"C c #D7CFB7",
+"D c #EAE2C8",
+"E c #EEE7CB",
+"F c #F1E0A4",
+"G c #FEFEFE",
+"H c #F9F9F9",
+"I c #EEEEEE",
+"J c #E6E6E6",
+"K c #575757",
+"L c #090909",
+"M c #141414",
+"N c #A2997B",
+"O c #CEBF8C",
+"P c #E2D39A",
+"Q c #EAD99F",
+"R c #EDDCA1",
+"S c #F0DFA3",
+"T c #F4F4F4",
+"U c #DCDCDC",
+"V c #9B9B9B",
+"W c #060606",
+"X c #111111",
+"Y c #BCAF84",
+"Z c #D4C591",
+"` c #E3D49B",
+" . c #E9D99F",
+".. c #ECDBA0",
+"+. c #EFDEA3",
+"@. c #6F6C5E",
+"#. c #818B94",
+"$. c #6D695C",
+"%. c #EDEDED",
+"&. c #BFBFBF",
+"*. c #BCAF80",
+"=. c #D8C993",
+"-. c #E0D199",
+";. c #E6D69D",
+">. c #A7B7C7",
+",. c #484848",
+"'. c #C8C8C8",
+"). c #EAEAEA",
+"!. c #E0E0E0",
+"~. c #BABABA",
+"{. c #050505",
+"]. c #0B0B0B",
+"^. c #9D936E",
+"/. c #D6C792",
+"(. c #DCCD96",
+"_. c #E1D29A",
+":. c #E5D59C",
+"<. c #E8D89E",
+"[. c #494949",
+"}. c #5C5C5C",
+"|. c #7F8892",
+"1. c #96A8BC",
+"2. c #818F9E",
+"3. c #7E7E7E",
+"4. c #D1D1D1",
+"5. c #939393",
+"6. c #020202",
+"7. c #0A0A0A",
+"8. c #5B5746",
+"9. c #CFC08D",
+"0. c #DBCC95",
+"a. c #DFD098",
+"b. c #474747",
+"c. c #A1B0C1",
+"d. c #93A4B8",
+"e. c #90A2B5",
+"f. c #B6B6B6",
+"g. c #D4D4D4",
+"h. c #000000",
+"i. c #090908",
+"j. c #AB9F74",
+"k. c #D1C38E",
+"l. c #D7C892",
+"m. c #DACB94",
+"n. c #778088",
+"o. c #8FA0B3",
+"p. c #8C9DB0",
+"q. c #8A9AAD",
+"r. c #768290",
+"s. c #CBCBCB",
+"t. c #040303",
+"u. c #383527",
+"v. c #C2B484",
+"w. c #C8BA88",
+"x. c #CABC89",
+"y. c #CFC18D",
+"z. c #414141",
+"A. c #93A1B0",
+"B. c #8798A9",
+"C. c #8596A7",
+"D. c #8493A5",
+"E. c #8090A1",
+"F. c #3B3B3B",
+"G. c #BDBDBD",
+"H. c #070706",
+"I. c #4D4734",
+"J. c #B8AC7D",
+"K. c #BDB081",
+"L. c #7B4E44",
+"M. c #8A97A5",
+"N. c #7F8E9F",
+"O. c #7D8D9E",
+"P. c #7C8A9B",
+"Q. c #788796",
+"R. c #717F8F",
+"S. c #AAA285",
+"T. c #030302",
+"U. c #373737",
+"V. c #7F8B99",
+"W. c #748291",
+"X. c #717E8D",
+"Y. c #59636F",
+"Z. c #1A1D21",
+"`. c #F5E9BF",
+" + c #BFAC66",
+".+ c #3B3520",
+"++ c #2D3135",
+"@+ c #4B545E",
+"#+ c #5F6A77",
+"$+ c #4A525C",
+"%+ c #25292E",
+"&+ c #EED680",
+"*+ c #464646",
+"=+ c #262A30",
+"-+ c #07080A",
+";+ c #C7D0D8",
+">+ c #7590AE",
+",+ c #617891",
+"'+ c #686868",
+")+ c #797979",
+"!+ c #3A3A3A",
+"~+ c #1F1F1F",
+" . + @ # # # ",
+" $ % & * = - ; > , ' ",
+" ) ! = ~ { ] ^ / ( _ : < ",
+" [ } ~ | 1 2 3 4 5 6 7 8 9 0 ",
+" a b c d 6 e f g f h e i j k l m ",
+" n o o p q q r s t g h u v w x y ",
+" z A B C D E F r G s 7 H e I J 1 K L ",
+" M N O P Q R S r G | q { T I J U V W ",
+" X Y Z ` ...+.r s @.#.$.u %.6 1 &.W ",
+" y *.=.-.;. ...q ~ q >.,.'.).!.d ~.{. ",
+" ].^./.(._.:.<.[.}.|.1.2.3.w 1 4.5.6. ",
+" 7.8.9./.0.a.P b.b.c.d.e.l f.g.~ : h. ",
+" i.j.O k.l.m.p n.o.p.q.r.q s.* 6. ",
+" t.u.v.w.x.y.z.A.B.C.D.E.F.G.$ h. ",
+" h.H.I.J.K.L.M.N.O.O.P.Q.R.+ h. ",
+" h.S.T.y + U.V.W.W.W.X.Y.Z.h.h.h. ",
+" h.`. +.+6.++@+#+#+$+%+h.h. h.h.h.h. ",
+" h.`.&+&+*+=+-+h.h.h.h. , , h.h. ",
+" h.h.h.h.;+>+>+>+,+h. h.'+. h.h. ",
+" h.h.h.h.h.h.h. h.)+!+h.h. ",
+" h.'+~+h. ",
+" h.h. ",
+" ",
+" "};
diff --git a/src/xml-compat.h b/src/xml-compat.h
new file mode 100644
index 0000000..86f209a
--- /dev/null
+++ b/src/xml-compat.h
@@ -0,0 +1,50 @@
+/*
+ * xml-compat.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+
+#ifndef __XML_COMPAT_H
+#define __XML_COMPAT_H
+
+/*#include <xmlmemory.h> cl3: where is that file ? what is it used for ? */
+
+/*#if defined(LIBXML_VERSION) && LIBXML_VERSION >= 20000 */
+
+#include <libxml/parser.h>
+#include <libxml/parserInternals.h>
+
+#define root children
+#define childs children
+
+/*#else
+# include <gnome-xml/parser.h>
+# include <gnome-xml/parserInternals.h>
+#endif*/
+
+#endif /* __XML_COMPAT_H */
+
diff --git a/src/xml-helper.c b/src/xml-helper.c
new file mode 100644
index 0000000..64934e7
--- /dev/null
+++ b/src/xml-helper.c
@@ -0,0 +1,254 @@
+/*
+ * xml-helper.c
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2006 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#include <gnome.h>
+
+#include "xml-compat.h"
+//#include <gnome-xml/parser.h>
+//#include <gnome-xml/parserInternals.h>
+
+#include "xml-helper.h"
+
+/**
+ * A modified version of XmlSAXParseFile in gnome-xml. This one lets us set
+ * the user_data that is passed to the various callbacks, to make it possible
+ * to avoid lots of global variables.
+ */
+int oreganoXmlSAXParseFile (xmlSAXHandlerPtr sax,
+ gpointer user_data, const gchar *filename)
+{
+ int ret = 0;
+ xmlParserCtxtPtr ctxt;
+
+ ctxt = xmlCreateFileParserCtxt (filename);
+ if (ctxt == NULL) return -1;
+ ctxt->sax = sax;
+ ctxt->userData = user_data;
+
+#if defined(LIBXML_VERSION) && LIBXML_VERSION >= 20000
+ xmlKeepBlanksDefault(0);
+#endif
+ xmlParseDocument (ctxt);
+
+ if (ctxt->wellFormed)
+ ret = 0;
+ else
+ ret = -1;
+ if (sax != NULL)
+ ctxt->sax = NULL;
+ xmlFreeParserCtxt (ctxt);
+
+ return ret;
+}
+
+
+/**
+ * Set coodinate for a node, carried as the content of a child.
+ */
+void
+xmlSetCoordinate (xmlNodePtr node, const char *name, double x, double y)
+{
+ xmlNodePtr child;
+ gchar *str;
+ xmlChar *ret;
+
+ str = g_strdup_printf ("(%g %g)", x, y);
+ ret = xmlGetProp (node, BAD_CAST name);
+ if (ret != NULL){
+ xmlSetProp (node, BAD_CAST name, BAD_CAST str);
+ g_free (str);
+ return;
+ }
+ child = node->childs;
+ while (child != NULL){
+ if (!xmlStrcmp (child->name, BAD_CAST name)){
+ xmlNodeSetContent (child, BAD_CAST str);
+ return;
+ }
+ child = child->next;
+ }
+ xmlSetProp (node, BAD_CAST name, BAD_CAST str);
+ g_free (str);
+}
+
+
+
+/**
+ * Set coodinates for a node, carried as the content of a child.
+ */
+void
+xmlSetCoordinates (xmlNodePtr node, const char *name,
+ double x1, double y1, double x2, double y2)
+{
+ xmlNodePtr child;
+ gchar *str;
+ xmlChar *ret;
+
+ str = g_strdup_printf ("(%g %g)(%g %g)", x1, y1, x2, y2);
+ ret = xmlGetProp (node, BAD_CAST name);
+ if (ret != NULL){
+ xmlSetProp (node, BAD_CAST name, BAD_CAST str);
+ g_free (str);
+ return;
+ }
+ child = node->childs;
+ while (child != NULL){
+ if (!xmlStrcmp (child->name, BAD_CAST name)){
+ xmlNodeSetContent (child, BAD_CAST str);
+ return;
+ }
+ child = child->next;
+ }
+ xmlSetProp (node, BAD_CAST name, BAD_CAST str);
+ g_free (str);
+}
+
+
+/**
+ * Set a string value for a node either carried as an attibute or as
+ * the content of a child.
+ */
+void
+xmlSetGnomeCanvasPoints (xmlNodePtr node, const char *name,
+ GnomeCanvasPoints *val)
+{
+ xmlNodePtr child;
+ char *str, *base;
+ int i;
+
+ if (val == NULL)
+ return;
+ if ((val->num_points < 0) || (val->num_points > 5000))
+ return;
+ base = str = g_malloc (val->num_points * 30 * sizeof (char));
+ if (str == NULL)
+ return;
+ for (i = 0; i < val->num_points; i++){
+ str += sprintf (str, "(%g %g)", val->coords[2 * i],
+ val->coords[2 * i + 1]);
+ }
+
+ child = node->childs;
+ while (child != NULL){
+ if (!xmlStrcmp (child->name, BAD_CAST name)){
+ xmlNodeSetContent (child, BAD_CAST base);
+ free (base);
+ return;
+ }
+ child = child->next;
+ }
+ xmlNewChild (node, NULL, BAD_CAST name,
+ xmlEncodeEntitiesReentrant(node->doc, BAD_CAST base));
+ g_free (base);
+}
+
+
+/**
+ * Set a string value for a node either carried as an attibute or as
+ * the content of a child.
+ */
+void
+xmlSetValue (xmlNodePtr node, const char *name, const char *val)
+{
+ xmlChar *ret;
+ xmlNodePtr child;
+
+ ret = xmlGetProp (node, BAD_CAST name);
+ if (ret != NULL){
+ xmlSetProp (node, BAD_CAST name, BAD_CAST val);
+ return;
+ }
+ child = node->childs;
+ while (child != NULL){
+ if (!xmlStrcmp (child->name, BAD_CAST name)){
+ xmlNodeSetContent (child, BAD_CAST val);
+ return;
+ }
+ child = child->next;
+ }
+ xmlSetProp (node, BAD_CAST name, BAD_CAST val);
+}
+
+/**
+ * Set an integer value for a node either carried as an attibute or as
+ * the content of a child.
+ */
+void
+xmlSetIntValue (xmlNodePtr node, const char *name, int val)
+{
+ xmlChar *ret;
+ xmlNodePtr child;
+ char str[101];
+
+ snprintf (str, 100, "%d", val);
+ ret = xmlGetProp (node,BAD_CAST name);
+ if (ret != NULL){
+ xmlSetProp (node, BAD_CAST name, BAD_CAST str);
+ return;
+ }
+ child = node->childs;
+ while (child != NULL){
+ if (!xmlStrcmp (child->name, BAD_CAST name)){
+ xmlNodeSetContent (child, BAD_CAST str);
+ return;
+ }
+ child = child->next;
+ }
+ xmlSetProp (node, BAD_CAST name, BAD_CAST str);
+}
+
+
+/**
+ * Set a double value for a node either carried as an attibute or as
+ * the content of a child.
+ */
+void
+xmlSetDoubleValue (xmlNodePtr node, const char *name, double val)
+{
+ xmlChar *ret;
+ xmlNodePtr child;
+ char str[101];
+
+ snprintf (str, 100, "%g", (float) val);
+ ret = xmlGetProp (node, BAD_CAST name);
+ if (ret != NULL){
+ xmlSetProp (node, BAD_CAST name, BAD_CAST str);
+ return;
+ }
+ child = node->childs;
+ while (child != NULL){
+ if (!xmlStrcmp (child->name, BAD_CAST name)){
+ xmlNodeSetContent (child, BAD_CAST str);
+ return;
+ }
+ child = child->next;
+ }
+ xmlSetProp (node, BAD_CAST name, BAD_CAST str);
+}
+
diff --git a/src/xml-helper.h b/src/xml-helper.h
new file mode 100644
index 0000000..aa35d2d
--- /dev/null
+++ b/src/xml-helper.h
@@ -0,0 +1,56 @@
+/*
+ * xml-helper.h
+ *
+ *
+ * Authors:
+ * Richard Hult <rhult@hem.passagen.se>
+ * Ricardo Markiewicz <rmarkie@fi.uba.ar>
+ * Andres de Barbara <adebarbara@fi.uba.ar>
+ *
+ * Web page: http://arrakis.lug.fi.uba.ar/
+ *
+ * Copyright (C) 1999-2001 Richard Hult
+ * Copyright (C) 2003,2004 Ricardo Markiewicz
+ *
+ * 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.
+ */
+#ifndef __XML_HELPER_H
+#define __XML_HELPER_H
+
+#include <gnome.h>
+#include "xml-compat.h"
+
+/*#include <gnome-xml/parser.h>*/
+/*#include <gnome-xml/parserInternals.h>*/
+
+int oreganoXmlSAXParseFile (xmlSAXHandlerPtr sax,
+ gpointer user_data, const gchar *filename);
+
+void xmlSetGnomeCanvasPoints (xmlNodePtr node,
+ const char *name, GnomeCanvasPoints *val);
+
+void xmlSetValue (xmlNodePtr node, const char *name, const char *val);
+
+void xmlSetIntValue (xmlNodePtr node, const char *name, int val);
+
+void xmlSetDoubleValue (xmlNodePtr node, const char *name, double val);
+
+void xmlSetCoordinate (xmlNodePtr node, const char *name, double x, double y);
+
+void xmlSetCoordinates (xmlNodePtr node, const char *name,
+ double x1, double y1, double x2, double y2);
+
+#endif
diff --git a/stamp.h.in b/stamp.h.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/stamp.h.in
diff --git a/tools/oregano-convert b/tools/oregano-convert
new file mode 100755
index 0000000..a6251f3
--- /dev/null
+++ b/tools/oregano-convert
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+
+# Fix the namespace.
+while (<>) {
+ if (/<schematic/) {
+ s/</<ogo:/;
+ s/>/ xmlns:ogo="http:\/\/www.dtek.chalmers.se\/~d4hult\/oregano\/v1">/;
+ print;
+ last;
+ }
+
+ if (/<schematic/) {
+ print;
+ last;
+ }
+
+ print;
+}
+
+# Add namespace to tags.
+while (<>) {
+
+ if (/<[a-zA-Z]/) {
+ s/</<ogo:/;
+ }
+
+ s/<\//<\/ogo:/;
+ print;
+}
+
+
diff --git a/tools/spice2to3.awk b/tools/spice2to3.awk
new file mode 100644
index 0000000..43025cf
--- /dev/null
+++ b/tools/spice2to3.awk
@@ -0,0 +1,295 @@
+
+#==================================================== -*- AWK -*- =====
+# spice2to3.awk
+#
+# This awk program file is used to convert Spice2 input files to
+# Spice3 format.
+#
+# Specifically, nonlinear dependent sources are converted from
+# the polynomial model to the more general BXXXXX nonlinear
+# dependent source model used in Spice3.
+#
+#
+# Usage:
+# awk -f spice2to3.awk [comments=1] inputfile > outputfile
+#
+# If the optional comments=1 parameter is specified, the original
+# input lines that are converted will be saved as comments in the
+# output file.
+#
+# Limitations:
+# - Cubic and higher order terms are not handled except for
+# the special case of a single variable
+# - Initial conditions are not handled (IC=...)
+# - Continued lines are not handled
+# - This program uses features from GNU awk
+#
+#
+# Mike McCarrick Feb 1995
+# mmccarri@apti.com APTI, Wash DC
+#======================================================================
+
+BEGIN {
+ IGNORECASE = 1;
+}
+
+
+#----------------------------------------------------------------------
+# Utility functions
+#----------------------------------------------------------------------
+
+function min(a,b) {
+ return (a < b) ? a : b;
+}
+
+function max(a,b) {
+ return (a > b) ? a : b;
+}
+
+
+# Turn the original input line into a comment
+function make_comment(inputline) {
+ print "*SPICE2:";
+ print "*" inputline;
+ print "*SPICE3:";
+}
+
+
+# Get leading whitespace from the input line
+function get_leader(inputline)
+{
+ if ((i = match(inputline, "[^ \t]")) != 0)
+ return substr(inputline, 1, i-1);
+ else
+ return "";
+}
+
+
+# Get trailing comments from the input line
+function get_trailer(inputline)
+{
+ if ((i = index(inputline, ";")) != 0)
+ return substr(inputline, i, length(inputline)-i+1);
+ else
+ return "";
+}
+
+
+# Canonicalize the input line
+function canonicalize(inputline)
+{
+ # Strip parentheses and commas from the input line
+ gsub(/\(/, " ", inputline);
+ gsub(/\)/, " ", inputline);
+ gsub(/,/, " ", inputline);
+
+ # chop off any trailing comments
+ if ((i = index(inputline, ";")) != 0)
+ inputline = substr(inputline, 1, i-1);
+
+ return inputline;
+}
+
+
+# Convert numerical values to canonical form (the scale factors are
+# not recognized for B devices at least in 3f4)
+function convert_num(strval)
+{
+ sub(/T/, "E12", strval);
+ sub(/G/, "E9", strval);
+ sub(/MEG/, "E6", strval);
+ sub(/K/, "E3", strval);
+ sub(/M/, "E-3", strval);
+ sub(/U/, "E-6", strval);
+ sub(/N/, "E-9", strval);
+ sub(/P/, "E-12", strval);
+ sub(/F/, "E-15", strval);
+
+ return strval;
+}
+
+
+
+#----------------------------------------------------------------------
+# E: Voltage controlled voltage source
+# G: Voltage controlled current source
+# H: Current controlled voltage source
+# F: Current controlled current source
+#----------------------------------------------------------------------
+/^ *[EGHF].+POLY/ {
+
+ # Save the old line as a comment
+ origline = $0;
+ if (comments != 0)
+ make_comment(origline);
+
+ # Save any leading whitespace and trailing comments
+ leader = get_leader($0);
+ trailer = get_trailer($0);
+
+ # canonicalize the input line
+ $0 = canonicalize($0);
+
+ # Print the new source name with its node connections
+ printf("%sB%s %s %s ", leader, $1, $2, $3);
+
+ # The format differs for voltage vs current controlled sources
+ stype = toupper(substr($1, 1, 1));
+ if (stype == "E" || stype == "H")
+ printf("V = ");
+ else
+ printf("I = ");
+ nvars = $5;
+ inodes = 6;
+ if (stype == "E" || stype == "G")
+ {
+ v_controlled = 1;
+ nnodes = 2 * nvars;
+ }
+ else
+ {
+ v_controlled = 0;
+ nnodes = nvars;
+ }
+
+ icoeff = inodes + nnodes;
+ ncoeff = NF - icoeff + 1;
+ plusflag = 0;
+
+ # Constant term
+ if ($icoeff != 0.0)
+ {
+ printf("%s", convert_num($icoeff));
+ plusflag = 1;
+ }
+ icoeff++;
+ ncoeff--;
+
+ # Linear terms
+ nlinear = min(ncoeff, nvars);
+ for (ic = 0; ic < nlinear; ic++)
+ {
+ if ((val = convert_num($(icoeff + ic))) != 0.0)
+ {
+ if (plusflag)
+ printf(" + ");
+ if (v_controlled)
+ {
+ ip = inodes + 2 * ic;
+ im = ip + 1;
+ if (val != 1.0)
+ printf("%s*V(%s,%s)", val, $ip, $im);
+ else
+ printf("V(%s,%s)", $ip, $im);
+ }
+ else
+ {
+ is = inodes + ic;
+ if (val != 1.0)
+ printf("%s*I(%s)", val, $is);
+ else
+ printf("I(%s)", $is);
+ }
+ plusflag = 1;
+ }
+ }
+ icoeff += ic;
+ ncoeff -= ic;
+
+
+ # Quadratic terms
+ nquad = min(ncoeff, nvars*(nvars+1)/2);
+ for (n1 = ic = 0; n1 < nvars; n1++)
+ {
+ for (n2 = 0; n2 <= n1; n2++)
+ {
+ if (ic > nquad)
+ break;
+
+ if ((val = convert_num($(icoeff + ic))) != 0.0)
+ {
+ if (plusflag)
+ printf(" + ");
+ if (v_controlled)
+ {
+ ip1 = inodes + 2 * n1;
+ im1 = ip1 + 1;
+ ip2 = inodes + 2 * n2;
+ im2 = ip2 + 1;
+ if (val != 1.0)
+ printf("%s*V(%s,%s)*V(%s,%s)", val, $ip1, $im1, $ip2, $im2);
+ else
+ printf("V(%s,%s)*V(%s,%s)", $ip1, $im1, $ip2, $im2);
+ }
+ else
+ {
+ is1 = inodes + n1;
+ is2 = inodes + n2;
+ if (val != 1.0)
+ printf("%s*I(%s)*I(%s)", val, $is1, $is2);
+ else
+ printf("I(%s)*I(%s)", $is1, $is2);
+ }
+ plusflag = 1;
+ }
+ ic++;
+ }
+ }
+
+ icoeff += ic;
+ ncoeff -= ic;
+
+ # Cubic and higher order terms are handled only for a single variable
+ if (ncoeff > 0 && nvars > 1)
+ {
+ print "Warning: the following source line contains" > "/dev/stderr";
+ print "polynomial terms greater than second order." > "/dev/stderr";
+ print "Convert this line manually:" > "/dev/stderr";
+ print origline > "/dev/stderr";
+ # Add a warning message comment in the output file
+ printf(" ; ***ERROR CONVERTING SPICE2 ENTRY\n");
+ next;
+ }
+
+ # Single variable higher-order terms
+ for (ic = 0; ic < ncoeff; ic++)
+ {
+ if ((val = convert_num($(icoeff + ic))) != 0.0)
+ {
+ if (plusflag)
+ printf(" + ");
+ if (v_controlled)
+ {
+ ip = inodes + 2 * ic;
+ im = ip + 1;
+ if (val != 1.0)
+ printf("%s*V(%s,%s)^%d", val, $ip, $im, ic+3);
+ else
+ printf("V(%s,%s)^%d", $ip, $im, ic+3);
+ }
+ else
+ {
+ is = inodes + ic;
+ if (val != 1.0)
+ printf("%s*I(%s)^%d", val, $is, ic+3);
+ else
+ printf("I(%s)^%d", $is, ic+3);
+ }
+ plusflag = 1;
+ }
+ }
+
+ # Add trailing comments to the output line
+ printf(" %s\n", trailer);
+ next;
+
+}
+
+
+
+#----------------------------------------------------------------------
+# Default: just print out the line
+#----------------------------------------------------------------------
+{
+ print $0;
+}
diff --git a/xmldocs.make b/xmldocs.make
new file mode 100644
index 0000000..b93e3f3
--- /dev/null
+++ b/xmldocs.make
@@ -0,0 +1,101 @@
+#
+# No modifications of this Makefile should be necessary.
+#
+# To use this template:
+# 1) Define: figdir, docname, lang, omffile, and entities in
+# your Makefile.am file for each document directory,
+# although figdir, omffile, and entities may be empty
+# 2) Make sure the Makefile in (1) also includes
+# "include $(top_srcdir)/xmldocs.make" and
+# "dist-hook: app-dist-hook".
+# 3) Optionally define 'entities' to hold xml entities which
+# you would also like installed
+# 4) Figures must go under $(figdir)/ and be in PNG format
+# 5) You should only have one document per directory
+# 6) Note that the figure directory, $(figdir)/, should not have its
+# own Makefile since this Makefile installs those figures.
+#
+# example Makefile.am:
+# figdir = figures
+# docname = scrollkeeper-manual
+# lang = C
+# omffile=scrollkeeper-manual-C.omf
+# entities = fdl.xml
+# include $(top_srcdir)/xmldocs.make
+# dist-hook: app-dist-hook
+#
+# About this file:
+# This file was taken from scrollkeeper_example2, a package illustrating
+# how to install documentation and OMF files for use with ScrollKeeper
+# 0.3.x and 0.4.x. For more information, see:
+# http://scrollkeeper.sourceforge.net/
+# Version: 0.1.2 (last updated: March 20, 2002)
+#
+
+
+# ********** Begin of section some packagers may need to modify **********
+# This variable (docdir) specifies where the documents should be installed.
+# This default value should work for most packages.
+docdir = $(datadir)/gnome/help/$(docname)/$(lang)
+
+# ********** You should not have to edit below this line **********
+xml_files = $(entities) $(docname).xml
+
+EXTRA_DIST = $(xml_files) $(omffile)
+CLEANFILES = omf_timestamp
+
+include $(top_srcdir)/omf.make
+
+all: omf
+
+$(docname).xml: $(entities)
+ -ourdir=`pwd`; \
+ cd $(srcdir); \
+ cp $(entities) $$ourdir
+
+app-dist-hook:
+ if test "$(figdir)"; then \
+ $(mkinstalldirs) $(distdir)/$(figdir); \
+ for file in $(srcdir)/$(figdir)/*.png; do \
+ basefile=`echo $$file | sed -e 's,^.*/,,'`; \
+ $(INSTALL_DATA) $$file $(distdir)/$(figdir)/$$basefile; \
+ done \
+ fi
+
+install-data-local: omf
+ $(mkinstalldirs) $(DESTDIR)$(docdir)
+ for file in $(xml_files); do \
+ cp $(srcdir)/$$file $(DESTDIR)$(docdir); \
+ done
+ if test "$(figdir)"; then \
+ $(mkinstalldirs) $(DESTDIR)$(docdir)/$(figdir); \
+ for file in $(srcdir)/$(figdir)/*.png; do \
+ basefile=`echo $$file | sed -e 's,^.*/,,'`; \
+ $(INSTALL_DATA) $$file $(DESTDIR)$(docdir)/$(figdir)/$$basefile; \
+ done \
+ fi
+
+install-data-hook: install-data-hook-omf
+
+uninstall-local: uninstall-local-doc uninstall-local-omf
+
+uninstall-local-doc:
+ -if test "$(figdir)"; then \
+ for file in $(srcdir)/$(figdir)/*.png; do \
+ basefile=`echo $$file | sed -e 's,^.*/,,'`; \
+ rm -f $(DESTDIR)$(docdir)/$(figdir)/$$basefile; \
+ done; \
+ rmdir $(DESTDIR)$(docdir)/$(figdir); \
+ fi
+ -for file in $(xml_files); do \
+ rm -f $(DESTDIR)$(docdir)/$$file; \
+ done
+ -rmdir $(DESTDIR)$(docdir)
+
+clean-local: clean-local-doc clean-local-omf
+
+# for non-srcdir builds, remove the copied entities.
+clean-local-doc:
+ if test $(srcdir) != .; then \
+ rm -f $(entities); \
+ fi